diff --git a/src/playsim/p_lnspec.h b/src/playsim/p_lnspec.h index 7072e31e53c..1adba828349 100644 --- a/src/playsim/p_lnspec.h +++ b/src/playsim/p_lnspec.h @@ -219,7 +219,7 @@ static inline bool P_IsACSSpecial(int specnum) FLineSpecial *P_GetLineSpecialInfo(int num); int P_GetMaxLineSpecial(); int P_FindLineSpecial (const char *string, int *min_args=NULL, int *max_args=NULL); -bool P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death=false); +int P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death=false); int P_ExecuteSpecial( FLevelLocals *lev, int num, diff --git a/src/playsim/p_map.cpp b/src/playsim/p_map.cpp index ef5438afdff..c4b4c96ebc8 100644 --- a/src/playsim/p_map.cpp +++ b/src/playsim/p_map.cpp @@ -7211,7 +7211,7 @@ static void SpawnDeepSplash(AActor *t1, const FTraceResults &trace, AActor *puff // //============================================================================= -bool P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death) +int P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death) { bool res = false; @@ -7267,3 +7267,11 @@ bool P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death) // Returns the result return res; } + +DEFINE_ACTION_FUNCTION_NATIVE(AActor, ActivateSpecial, P_ActivateThingSpecial) +{ + PARAM_SELF_PROLOGUE(AActor); + PARAM_OBJECT_NOT_NULL(activator, AActor); + PARAM_BOOL(death); + ACTION_RETURN_BOOL(P_ActivateThingSpecial(self, activator, death)); +} diff --git a/wadsrc/static/zscript/actors/actor.zs b/wadsrc/static/zscript/actors/actor.zs index e0633d599b8..320b2e554c0 100644 --- a/wadsrc/static/zscript/actors/actor.zs +++ b/wadsrc/static/zscript/actors/actor.zs @@ -690,6 +690,7 @@ class Actor : Thinker native native clearscope static int ApplyDamageFactors(class itemcls, Name damagetype, int damage, int defdamage); native void RemoveFromHash(); native void ChangeTid(int newtid); + native bool ActivateSpecial(Actor activator, bool death = false); deprecated("3.8", "Use Level.FindUniqueTid() instead") static int FindUniqueTid(int start = 0, int limit = 0) { return level.FindUniqueTid(start, limit);