diff --git a/code/debris/debris.cpp b/code/debris/debris.cpp index 80dc914c8f..a5a23ebff2 100644 --- a/code/debris/debris.cpp +++ b/code/debris/debris.cpp @@ -25,6 +25,7 @@ #include "radar/radar.h" #include "radar/radarsetup.h" #include "render/3d.h" +#include "scripting/hook_api.h" #include "scripting/scripting.h" #include "ship/ship.h" #include "ship/shipfx.h" @@ -54,6 +55,14 @@ int Debris_num_submodels = 0; #define DEBRIS_DISTANCE_CHECK_TIME (10*1000) // Check every 10 seconds. #define DEBRIS_INDEX(dp) (int)(dp-Debris) +const auto OnDebrisCreatedHook = scripting::Hook::Factory( + "On Debris Created", + "Invoked when a piece of debris is created.", + { + {"Debris", "debris", "The newly created debris object"}, + {"Source", "object", "The object (probably a ship) from which this debris piece was spawned."}, + }); + /** * Start the sequence of a piece of debris writhing in unholy agony!!! */ @@ -673,10 +682,9 @@ object *debris_create(object *source_obj, int model_num, int submodel_num, vec3d // ensure vel is valid Assert( !vm_is_vec_nan(&obj->phys_info.vel) ); - Script_system.SetHookObject("Debris", obj); - Script_system.SetHookObject("Source", source_obj); - Script_system.RunCondition(CHA_ONDEBRISCREATED); - Script_system.RemHookVars(2, "Debris", "Source"); + OnDebrisCreatedHook->run(scripting::hook_param_list( + scripting::hook_param("Debris", 'o', obj), + scripting::hook_param("Source", 'o', source_obj))); return obj; } diff --git a/code/scripting/scripting.cpp b/code/scripting/scripting.cpp index 2df3d49d4e..eba0eef9c9 100644 --- a/code/scripting/scripting.cpp +++ b/code/scripting/scripting.cpp @@ -104,7 +104,6 @@ static USED_VARIABLE SCP_vector> Script_actions std::make_shared("On Subsystem Destroyed", CHA_ONSUBSYSDEATH ), std::make_shared("On Goals Cleared", CHA_ONGOALSCLEARED ), std::make_shared("On Briefing Stage", CHA_ONBRIEFSTAGE ), - std::make_shared("On Debris Created", CHA_ONDEBRISCREATED), }; static HookVariableDocumentation GlobalVariables[] = diff --git a/code/scripting/scripting.h b/code/scripting/scripting.h index 90d8f77264..409048a101 100644 --- a/code/scripting/scripting.h +++ b/code/scripting/scripting.h @@ -112,9 +112,8 @@ enum ConditionalActions : int32_t { CHA_ONSUBSYSDEATH, CHA_ONGOALSCLEARED, CHA_ONBRIEFSTAGE, - CHA_ONDEBRISCREATED, - CHA_LAST = CHA_ONDEBRISCREATED, + CHA_LAST = CHA_ONBRIEFSTAGE, }; // management stuff