From 633da6e5d874825ee95508e48f70afac8772305b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 16 Nov 2016 01:36:21 +0100 Subject: [PATCH] - scriptified two of the Acolyte's functions. - added a DActorIterator class. - fixed: It was not possible to have functions of the same name in two different classes because the name they were searched for was not qualified by the class. Changed so that the class name is included now, but to avoid renaming several hundreds of functions all at once, if the search fails, it will repeat with 'Actor' as class name. This commit contains preparations for scriptifying Hexen's Dragon, but that doesn't work yet so it's not included. --- src/CMakeLists.txt | 1 - src/actor.h | 4 + src/d_dehacked.cpp | 22 +- src/g_doom/a_bossbrain.cpp | 2 +- src/g_doom/a_doomweaps.cpp | 6 +- src/g_doom/a_scriptedmarine.cpp | 10 +- src/g_heretic/a_hereticmisc.cpp | 4 +- src/g_heretic/a_hereticweaps.cpp | 4 +- src/g_hexen/a_blastradius.cpp | 2 +- src/g_hexen/a_fighterquietus.cpp | 2 +- src/g_hexen/a_magelightning.cpp | 2 +- src/g_shared/a_bridge.cpp | 2 +- src/g_shared/a_specialspot.cpp | 2 +- src/g_shared/a_weapons.cpp | 4 +- src/g_strife/a_acolyte.cpp | 44 ---- src/g_strife/a_strifeweapons.cpp | 6 +- src/g_strife/a_thingstoblowup.cpp | 2 +- src/p_actionfunctions.cpp | 258 +++++++++++------------ src/p_enemy.cpp | 10 +- src/p_mobj.cpp | 51 +++++ src/p_pspr.cpp | 20 +- src/p_states.cpp | 2 +- src/p_user.cpp | 2 +- src/scripting/codegeneration/codegen.cpp | 2 +- src/scripting/thingdef.h | 2 +- src/scripting/thingdef_data.cpp | 41 ++-- src/scripting/vm/vm.h | 17 +- src/scripting/zscript/zcc_compile.cpp | 2 +- wadsrc/static/zscript/actor.txt | 2 + wadsrc/static/zscript/base.txt | 7 + wadsrc/static/zscript/constants.txt | 19 ++ wadsrc/static/zscript/strife/acolyte.txt | 40 +++- 32 files changed, 334 insertions(+), 260 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ecc28a57d..8e5c022cb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -881,7 +881,6 @@ set( NOT_COMPILED_SOURCE_FILES g_hexen/a_clericholy.cpp g_hexen/a_clericmace.cpp g_hexen/a_clericstaff.cpp - g_hexen/a_dragon.cpp g_hexen/a_fighteraxe.cpp g_hexen/a_fighterhammer.cpp g_hexen/a_fighterplayer.cpp diff --git a/src/actor.h b/src/actor.h index 122839850..d8bb1a897 100644 --- a/src/actor.h +++ b/src/actor.h @@ -1442,6 +1442,10 @@ public: return base; } + void Reinit() + { + base = nullptr; + } private: AActor *base; int id; diff --git a/src/d_dehacked.cpp b/src/d_dehacked.cpp index 880cd7dfe..d0addb095 100644 --- a/src/d_dehacked.cpp +++ b/src/d_dehacked.cpp @@ -185,17 +185,17 @@ DECLARE_ACTION(A_FireRailgun) // Default ammo use of the various weapon attacks static AmmoPerAttack AmmoPerAttacks[] = { - { &A_Punch_VMPtr, 0}, - { &A_FirePistol_VMPtr, 1}, - { &A_FireShotgun_VMPtr, 1}, - { &A_FireShotgun2_VMPtr, 2}, - { &A_FireCGun_VMPtr, 1}, - { &A_FireMissile_VMPtr, 1}, - { &A_Saw_VMPtr, 0}, - { &A_FirePlasma_VMPtr, 1}, - { &A_FireBFG_VMPtr, -1}, // uses deh.BFGCells - { &A_FireOldBFG_VMPtr, 1}, - { &A_FireRailgun_VMPtr, 1}, + { &AActor_A_Punch_VMPtr, 0}, + { &AActor_A_FirePistol_VMPtr, 1}, + { &AActor_A_FireShotgun_VMPtr, 1}, + { &AActor_A_FireShotgun2_VMPtr, 2}, + { &AActor_A_FireCGun_VMPtr, 1}, + { &AActor_A_FireMissile_VMPtr, 1}, + { &AActor_A_Saw_VMPtr, 0}, + { &AActor_A_FirePlasma_VMPtr, 1}, + { &AActor_A_FireBFG_VMPtr, -1}, // uses deh.BFGCells + { &AActor_A_FireOldBFG_VMPtr, 1}, + { &AActor_A_FireRailgun_VMPtr, 1}, { NULL, 0} }; diff --git a/src/g_doom/a_bossbrain.cpp b/src/g_doom/a_bossbrain.cpp index 5807ce175..8adb5c1df 100644 --- a/src/g_doom/a_bossbrain.cpp +++ b/src/g_doom/a_bossbrain.cpp @@ -14,7 +14,7 @@ static FRandom pr_spawnfly ("SpawnFly"); -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BrainSpit) +DEFINE_ACTION_FUNCTION(AActor, A_BrainSpit) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF(spawntype, AActor); diff --git a/src/g_doom/a_doomweaps.cpp b/src/g_doom/a_doomweaps.cpp index bc962800f..108a730c4 100644 --- a/src/g_doom/a_doomweaps.cpp +++ b/src/g_doom/a_doomweaps.cpp @@ -113,7 +113,7 @@ enum SAW_Flags SF_STEALARMOR = 128, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Saw) +DEFINE_ACTION_FUNCTION(AActor, A_Saw) { PARAM_ACTION_PROLOGUE(AActor); PARAM_SOUND_DEF (fullsound) @@ -454,7 +454,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireMissile) // // A_FireSTGrenade: not exactly backported from ST, but should work the same // -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireSTGrenade) +DEFINE_ACTION_FUNCTION(AActor, A_FireSTGrenade) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS_DEF(grenade, AActor); @@ -607,7 +607,7 @@ enum BFG_Flags BFGF_MISSILEORIGIN = 2, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray) +DEFINE_ACTION_FUNCTION(AActor, A_BFGSpray) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF (spraytype, AActor) diff --git a/src/g_doom/a_scriptedmarine.cpp b/src/g_doom/a_scriptedmarine.cpp index da2c7f791..e270af6b5 100644 --- a/src/g_doom/a_scriptedmarine.cpp +++ b/src/g_doom/a_scriptedmarine.cpp @@ -148,7 +148,7 @@ void AScriptedMarine::Tick () // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_M_Refire) +DEFINE_ACTION_FUNCTION(AActor, A_M_Refire) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL_DEF(ignoremissile); @@ -247,7 +247,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_MarineLook) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_M_Saw) +DEFINE_ACTION_FUNCTION(AActor, A_M_Saw) { PARAM_SELF_PROLOGUE(AActor); PARAM_SOUND_DEF (fullsound) @@ -345,7 +345,7 @@ static void MarinePunch(AActor *self, int damagemul) } } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_M_Punch) +DEFINE_ACTION_FUNCTION(AActor, A_M_Punch) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(mult); @@ -382,7 +382,7 @@ void P_GunShot2 (AActor *mo, bool accurate, DAngle pitch, PClassActor *pufftype) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_M_FirePistol) +DEFINE_ACTION_FUNCTION(AActor, A_M_FirePistol) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL(accurate); @@ -481,7 +481,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_M_FireShotgun2) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_M_FireCGun) +DEFINE_ACTION_FUNCTION(AActor, A_M_FireCGun) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL(accurate); diff --git a/src/g_heretic/a_hereticmisc.cpp b/src/g_heretic/a_hereticmisc.cpp index 35b24eb93..6af969842 100644 --- a/src/g_heretic/a_hereticmisc.cpp +++ b/src/g_heretic/a_hereticmisc.cpp @@ -42,7 +42,7 @@ static FRandom pr_volcimpact ("VolcBallImpact"); // //---------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PodPain) +DEFINE_ACTION_FUNCTION(AActor, A_PodPain) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF (gootype, AActor) @@ -97,7 +97,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_RemovePod) #define MAX_GEN_PODS 16 -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_MakePod) +DEFINE_ACTION_FUNCTION(AActor, A_MakePod) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF(podtype, AActor) diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index a888be884..4d3a0b0e8 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -59,7 +59,7 @@ extern bool P_AutoUseChaosDevice (player_t *player); // //---------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_StaffAttack) +DEFINE_ACTION_FUNCTION(AActor, A_StaffAttack) { PARAM_ACTION_PROLOGUE(AActor); @@ -245,7 +245,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireCrossbowPL2) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GauntletAttack) +DEFINE_ACTION_FUNCTION(AActor, A_GauntletAttack) { PARAM_ACTION_PROLOGUE(AActor); diff --git a/src/g_hexen/a_blastradius.cpp b/src/g_hexen/a_blastradius.cpp index f8bc60a7f..0776e107f 100644 --- a/src/g_hexen/a_blastradius.cpp +++ b/src/g_hexen/a_blastradius.cpp @@ -93,7 +93,7 @@ enum // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS (AActor, A_Blast) +DEFINE_ACTION_FUNCTION (AActor, A_Blast) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT_DEF (blastflags) diff --git a/src/g_hexen/a_fighterquietus.cpp b/src/g_hexen/a_fighterquietus.cpp index 8f73ef48e..adba8d235 100644 --- a/src/g_hexen/a_fighterquietus.cpp +++ b/src/g_hexen/a_fighterquietus.cpp @@ -24,7 +24,7 @@ static FRandom pr_fswordflame ("FSwordFlame"); // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropWeaponPieces) +DEFINE_ACTION_FUNCTION(AActor, A_DropWeaponPieces) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(p1, AActor); diff --git a/src/g_hexen/a_magelightning.cpp b/src/g_hexen/a_magelightning.cpp index b06d22ce5..2a744db75 100644 --- a/src/g_hexen/a_magelightning.cpp +++ b/src/g_hexen/a_magelightning.cpp @@ -255,7 +255,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningZap) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_MLightningAttack) +DEFINE_ACTION_FUNCTION(AActor, A_MLightningAttack) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS_DEF(floor, AActor); diff --git a/src/g_shared/a_bridge.cpp b/src/g_shared/a_bridge.cpp index ab0df27e1..8ce23b68e 100644 --- a/src/g_shared/a_bridge.cpp +++ b/src/g_shared/a_bridge.cpp @@ -119,7 +119,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_BridgeOrbit) } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BridgeInit) +DEFINE_ACTION_FUNCTION(AActor, A_BridgeInit) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF(balltype, AActor); diff --git a/src/g_shared/a_specialspot.cpp b/src/g_shared/a_specialspot.cpp index 86d0b5e8a..92306ce6b 100644 --- a/src/g_shared/a_specialspot.cpp +++ b/src/g_shared/a_specialspot.cpp @@ -377,7 +377,7 @@ void ASpecialSpot::Destroy() // will build a list of all mace spots in the level and spawn a // mace. The rest of the spots will do nothing. -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnSingleItem) +DEFINE_ACTION_FUNCTION(AActor, A_SpawnSingleItem) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (cls, AActor); diff --git a/src/g_shared/a_weapons.cpp b/src/g_shared/a_weapons.cpp index 9fc2334c4..2d159eb7d 100644 --- a/src/g_shared/a_weapons.cpp +++ b/src/g_shared/a_weapons.cpp @@ -1923,7 +1923,7 @@ PClassWeapon *Net_ReadWeapon(BYTE **stream) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AWeapon, A_ZoomFactor) +DEFINE_ACTION_FUNCTION(AWeapon, A_ZoomFactor) { PARAM_ACTION_PROLOGUE(AActor); PARAM_FLOAT_DEF(zoom); @@ -1951,7 +1951,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AWeapon, A_ZoomFactor) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AWeapon, A_SetCrosshair) +DEFINE_ACTION_FUNCTION(AWeapon, A_SetCrosshair) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT(xhair); diff --git a/src/g_strife/a_acolyte.cpp b/src/g_strife/a_acolyte.cpp index a21c06619..f0ed0c414 100644 --- a/src/g_strife/a_acolyte.cpp +++ b/src/g_strife/a_acolyte.cpp @@ -84,47 +84,3 @@ DEFINE_ACTION_FUNCTION(AActor, A_AcolyteDie) return 0; } -//============================================================================ -// -// A_BeShadowyFoe -// -//============================================================================ - -DEFINE_ACTION_FUNCTION(AActor, A_BeShadowyFoe) -{ - PARAM_SELF_PROLOGUE(AActor); - - self->RenderStyle = STYLE_Translucent; - self->Alpha = HR_SHADOW; - self->flags &= ~MF_FRIENDLY; - return 0; -} - -//============================================================================ -// -// A_AcolyteBits -// -//============================================================================ - -DEFINE_ACTION_FUNCTION(AActor, A_AcolyteBits) -{ - PARAM_SELF_PROLOGUE(AActor); - - if (self->SpawnFlags & MTF_SHADOW) - { - CALL_ACTION(A_BeShadowyFoe, self); - } - if (self->SpawnFlags & MTF_ALTSHADOW) - { - //self->flags |= MF_STRIFEx8000000; - if (self->flags & MF_SHADOW) - { - // I dunno. - } - else - { - self->RenderStyle.BlendOp = STYLEOP_None; - } - } - return 0; -} diff --git a/src/g_strife/a_strifeweapons.cpp b/src/g_strife/a_strifeweapons.cpp index 4dad52de4..56eb06597 100644 --- a/src/g_strife/a_strifeweapons.cpp +++ b/src/g_strife/a_strifeweapons.cpp @@ -144,7 +144,7 @@ enum AMF_EMITFROMTARGET = 4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_AlertMonsters) +DEFINE_ACTION_FUNCTION(AActor, A_AlertMonsters) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT_DEF(maxdist); @@ -246,7 +246,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ShowElectricFlash) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireArrow) +DEFINE_ACTION_FUNCTION(AActor, A_FireArrow) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS(ti, AActor); @@ -686,7 +686,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Burnination) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireGrenade) +DEFINE_ACTION_FUNCTION(AActor, A_FireGrenade) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS(grenadetype, AActor); diff --git a/src/g_strife/a_thingstoblowup.cpp b/src/g_strife/a_thingstoblowup.cpp index 5e1bc42d2..08670d484 100644 --- a/src/g_strife/a_thingstoblowup.cpp +++ b/src/g_strife/a_thingstoblowup.cpp @@ -26,7 +26,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Bang4Cloud) // ------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveQuestItem) +DEFINE_ACTION_FUNCTION(AActor, A_GiveQuestItem) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(questitem); diff --git a/src/p_actionfunctions.cpp b/src/p_actionfunctions.cpp index d59b45256..2d219fc38 100644 --- a/src/p_actionfunctions.cpp +++ b/src/p_actionfunctions.cpp @@ -306,7 +306,7 @@ DEFINE_ACTION_FUNCTION(AActor, GetMissileDamage) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountInv) +DEFINE_ACTION_FUNCTION(AActor, CountInv) { if (numret > 0) { @@ -337,7 +337,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountInv) // NON-ACTION function to get the distance in double. // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetDistance) +DEFINE_ACTION_FUNCTION(AActor, GetDistance) { if (numret > 0) { @@ -380,7 +380,7 @@ enum GAFlags GAF_SWITCH = 1 << 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetAngle) +DEFINE_ACTION_FUNCTION(AActor, GetAngle) { if (numret > 0) { @@ -413,7 +413,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetAngle) // GetSpawnHealth // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetSpawnHealth) +DEFINE_ACTION_FUNCTION(AActor, GetSpawnHealth) { if (numret > 0) { @@ -429,7 +429,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetSpawnHealth) // GetGibHealth // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetGibHealth) +DEFINE_ACTION_FUNCTION(AActor, GetGibHealth) { if (numret > 0) { @@ -446,7 +446,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetGibHealth) // // NON-ACTION function returns the sprite angle of a pointer. //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetSpriteAngle) +DEFINE_ACTION_FUNCTION(AActor, GetSpriteAngle) { if (numret > 0) { @@ -475,7 +475,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetSpriteAngle) // // NON-ACTION function returns the sprite rotation of a pointer. //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetSpriteRotation) +DEFINE_ACTION_FUNCTION(AActor, GetSpriteRotation) { if (numret > 0) { @@ -515,7 +515,7 @@ enum GZFlags GZF_NO3DFLOOR = 1 << 5, // Pass all 3D floors. }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetZAt) +DEFINE_ACTION_FUNCTION(AActor, GetZAt) { if (numret > 0) { @@ -603,7 +603,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetZAt) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCrouchFactor) +DEFINE_ACTION_FUNCTION(AActor, GetCrouchFactor) { if (numret > 0) { @@ -633,7 +633,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCrouchFactor) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCVar) +DEFINE_ACTION_FUNCTION(AActor, GetCVar) { if (numret > 0) { @@ -663,7 +663,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCVar) // Takes a pointer as anyone may or may not be a player. //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetPlayerInput) +DEFINE_ACTION_FUNCTION(AActor, GetPlayerInput) { if (numret > 0) { @@ -696,7 +696,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetPlayerInput) // Takes a pointer as anyone may or may not be a player. //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountProximity) +DEFINE_ACTION_FUNCTION(AActor, CountProximity) { if (numret > 0) { @@ -731,21 +731,21 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountProximity) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, __decorate_internal_int__) +DEFINE_ACTION_FUNCTION(AActor, __decorate_internal_int__) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(returnme); ACTION_RETURN_INT(returnme); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, __decorate_internal_bool__) +DEFINE_ACTION_FUNCTION(AActor, __decorate_internal_bool__) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL(returnme); ACTION_RETURN_BOOL(returnme); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, __decorate_internal_float__) +DEFINE_ACTION_FUNCTION(AActor, __decorate_internal_float__) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(returnme); @@ -768,7 +768,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, __decorate_internal_float__) //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RearrangePointers) +DEFINE_ACTION_FUNCTION(AActor, A_RearrangePointers) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (ptr_target); @@ -848,7 +848,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RearrangePointers) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TransferPointer) +DEFINE_ACTION_FUNCTION(AActor, A_TransferPointer) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (ptr_source); @@ -891,7 +891,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TransferPointer) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CopyFriendliness) +DEFINE_ACTION_FUNCTION(AActor, A_CopyFriendliness) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (ptr_source); @@ -974,7 +974,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ComboAttack) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BasicAttack) +DEFINE_ACTION_FUNCTION(AActor, A_BasicAttack) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (melee_damage); @@ -995,7 +995,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BasicAttack) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PlaySound) +DEFINE_ACTION_FUNCTION(AActor, A_PlaySound) { PARAM_SELF_PROLOGUE(AActor); PARAM_SOUND_DEF (soundid); @@ -1019,7 +1019,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PlaySound) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_StopSound) +DEFINE_ACTION_FUNCTION(AActor, A_StopSound) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(slot); @@ -1037,7 +1037,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_StopSound) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PlaySoundEx) +DEFINE_ACTION_FUNCTION(AActor, A_PlaySoundEx) { PARAM_SELF_PROLOGUE(AActor); PARAM_SOUND (soundid); @@ -1074,7 +1074,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PlaySoundEx) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_StopSoundEx) +DEFINE_ACTION_FUNCTION(AActor, A_StopSoundEx) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME(channel); @@ -1098,7 +1098,7 @@ enum SMF_PRECISE = 2, SMF_CURSPEED = 4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SeekerMissile) +DEFINE_ACTION_FUNCTION(AActor, A_SeekerMissile) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(ang1); @@ -1155,7 +1155,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_BulletAttack) // State jump function // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Jump) +DEFINE_ACTION_FUNCTION(AActor, A_Jump) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT(maxchance); @@ -1219,7 +1219,7 @@ DEFINE_ACTION_FUNCTION(AActor, CheckInventory) // State jump function // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckArmorType) +DEFINE_ACTION_FUNCTION(AActor, CheckArmorType) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME (type); @@ -1244,7 +1244,7 @@ enum XF_NOSPLASH = 16, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Explode) +DEFINE_ACTION_FUNCTION(AActor, A_Explode) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (damage); @@ -1313,7 +1313,7 @@ enum RTF_NOTMISSILE = 4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusThrust) +DEFINE_ACTION_FUNCTION(AActor, A_RadiusThrust) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (force); @@ -1353,7 +1353,7 @@ enum RDSF_BFGDAMAGE = 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusDamageSelf) +DEFINE_ACTION_FUNCTION(AActor, A_RadiusDamageSelf) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(damage); @@ -1414,7 +1414,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusDamageSelf) // Execute a line special / script // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CallSpecial) +DEFINE_ACTION_FUNCTION(AActor, A_CallSpecial) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (special); @@ -1447,7 +1447,7 @@ enum CM_Flags CMF_ABSOLUTEANGLE = 128 }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomMissile) +DEFINE_ACTION_FUNCTION(AActor, A_CustomMissile) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (ti, AActor); @@ -1596,7 +1596,7 @@ enum CBA_Flags static void AimBulletMissile(AActor *proj, AActor *puff, int flags, bool temp, bool cba); -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomBulletAttack) +DEFINE_ACTION_FUNCTION(AActor, A_CustomBulletAttack) { PARAM_SELF_PROLOGUE(AActor); PARAM_ANGLE (spread_xy); @@ -1688,7 +1688,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomBulletAttack) // A fully customizable melee attack // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomMeleeAttack) +DEFINE_ACTION_FUNCTION(AActor, A_CustomMeleeAttack) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (damage); @@ -1725,7 +1725,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomMeleeAttack) // A fully customizable combo attack // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomComboAttack) +DEFINE_ACTION_FUNCTION(AActor, A_CustomComboAttack) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (ti, AActor); @@ -1775,7 +1775,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomComboAttack) // State jump function // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfNoAmmo) +DEFINE_ACTION_FUNCTION(AActor, A_JumpIfNoAmmo) { PARAM_ACTION_PROLOGUE(AActor); PARAM_STATE_ACTION(jump); @@ -1846,7 +1846,7 @@ static void AimBulletMissile(AActor *proj, AActor *puff, int flags, bool temp, b } } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireBullets) +DEFINE_ACTION_FUNCTION(AActor, A_FireBullets) { PARAM_ACTION_PROLOGUE(AActor); PARAM_ANGLE (spread_xy); @@ -1976,7 +1976,7 @@ enum FP_Flags FPF_TRANSFERTRANSLATION = 2, FPF_NOAUTOAIM = 4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireCustomMissile) +DEFINE_ACTION_FUNCTION(AActor, A_FireCustomMissile) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS (ti, AActor); @@ -2053,7 +2053,7 @@ enum CPF_STEALARMOR = 32, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch) +DEFINE_ACTION_FUNCTION(AActor, A_CustomPunch) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT (damage); @@ -2157,7 +2157,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch) // customizable railgun attack function // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RailAttack) +DEFINE_ACTION_FUNCTION(AActor, A_RailAttack) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT (damage); @@ -2236,7 +2236,7 @@ enum CRF_EXPLICITANGLE = 4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun) +DEFINE_ACTION_FUNCTION(AActor, A_CustomRailgun) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (damage); @@ -2409,19 +2409,19 @@ static bool DoGiveInventory(AActor *receiver, bool orresult, VM_ARGS) return false; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveInventory) +DEFINE_ACTION_FUNCTION(AActor, A_GiveInventory) { PARAM_SELF_PROLOGUE(AActor); ACTION_RETURN_BOOL(DoGiveInventory(self, false, VM_ARGS_NAMES)); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToTarget) +DEFINE_ACTION_FUNCTION(AActor, A_GiveToTarget) { PARAM_SELF_PROLOGUE(AActor); ACTION_RETURN_BOOL(DoGiveInventory(self->target, false, VM_ARGS_NAMES)); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToChildren) +DEFINE_ACTION_FUNCTION(AActor, A_GiveToChildren) { PARAM_SELF_PROLOGUE(AActor); @@ -2439,7 +2439,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToChildren) ACTION_RETURN_INT(count); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToSiblings) +DEFINE_ACTION_FUNCTION(AActor, A_GiveToSiblings) { PARAM_SELF_PROLOGUE(AActor); @@ -2466,7 +2466,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_GiveToSiblings) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetInventory) +DEFINE_ACTION_FUNCTION(AActor, A_SetInventory) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(itemtype, AInventory); @@ -2585,19 +2585,19 @@ bool DoTakeInventory(AActor *receiver, bool orresult, VM_ARGS) return receiver->TakeInventory(itemtype, amount, true, (flags & TIF_NOTAKEINFINITE) != 0); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeInventory) +DEFINE_ACTION_FUNCTION(AActor, A_TakeInventory) { PARAM_SELF_PROLOGUE(AActor); ACTION_RETURN_BOOL(DoTakeInventory(self, false, VM_ARGS_NAMES)); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromTarget) +DEFINE_ACTION_FUNCTION(AActor, A_TakeFromTarget) { PARAM_SELF_PROLOGUE(AActor); ACTION_RETURN_BOOL(DoTakeInventory(self->target, false, VM_ARGS_NAMES)); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromChildren) +DEFINE_ACTION_FUNCTION(AActor, A_TakeFromChildren) { PARAM_SELF_PROLOGUE(AActor); TThinkerIterator it; @@ -2614,7 +2614,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromChildren) ACTION_RETURN_INT(count); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_TakeFromSiblings) +DEFINE_ACTION_FUNCTION(AActor, A_TakeFromSiblings) { PARAM_SELF_PROLOGUE(AActor); TThinkerIterator it; @@ -2850,7 +2850,7 @@ static bool InitSpawnedItem(AActor *self, AActor *mo, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnItem) +DEFINE_ACTION_FUNCTION(AActor, A_SpawnItem) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS_DEF (missile, AActor) @@ -2898,7 +2898,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnItem) // Enhanced spawning function // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnItemEx) +DEFINE_ACTION_FUNCTION(AActor, A_SpawnItemEx) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (missile, AActor); @@ -2982,7 +2982,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnItemEx) // Throws a grenade (like Hexen's fighter flechette) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ThrowGrenade) +DEFINE_ACTION_FUNCTION(AActor, A_ThrowGrenade) { PARAM_ACTION_PROLOGUE(AActor); PARAM_CLASS (missile, AActor); @@ -3060,7 +3060,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ThrowGrenade) // A_Recoil // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Recoil) +DEFINE_ACTION_FUNCTION(AActor, A_Recoil) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(xyvel); @@ -3079,7 +3079,7 @@ enum SW_Flags { SWF_SELECTPRIORITY = 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SelectWeapon) +DEFINE_ACTION_FUNCTION(AActor, A_SelectWeapon) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(cls, AWeapon); @@ -3124,7 +3124,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SelectWeapon) //=========================================================================== EXTERN_CVAR(Float, con_midtime) -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Print) +DEFINE_ACTION_FUNCTION(AActor, A_Print) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING (text); @@ -3159,7 +3159,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Print) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PrintBold) +DEFINE_ACTION_FUNCTION(AActor, A_PrintBold) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING (text); @@ -3190,7 +3190,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PrintBold) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Log) +DEFINE_ACTION_FUNCTION(AActor, A_Log) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING(text); @@ -3207,7 +3207,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Log) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LogInt) +DEFINE_ACTION_FUNCTION(AActor, A_LogInt) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(num); @@ -3221,7 +3221,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LogInt) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LogFloat) +DEFINE_ACTION_FUNCTION(AActor, A_LogFloat) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(num); @@ -3236,7 +3236,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LogFloat) // A_SetTranslucent // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTranslucent) +DEFINE_ACTION_FUNCTION(AActor, A_SetTranslucent) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT (alpha); @@ -3255,7 +3255,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTranslucent) // A_SetRenderStyle // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetRenderStyle) +DEFINE_ACTION_FUNCTION(AActor, A_SetRenderStyle) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(alpha); @@ -3280,7 +3280,7 @@ enum FadeFlags FTF_CLAMP = 1 << 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeIn) +DEFINE_ACTION_FUNCTION(AActor, A_FadeIn) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT_DEF(reduce); @@ -3315,7 +3315,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeIn) // fades the actor out and destroys it when done // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeOut) +DEFINE_ACTION_FUNCTION(AActor, A_FadeOut) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT_DEF(reduce); @@ -3349,7 +3349,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeOut) // destroys it if so desired // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeTo) +DEFINE_ACTION_FUNCTION(AActor, A_FadeTo) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT (target); @@ -3392,7 +3392,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeTo) // A_SpawnDebris // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnDebris) +DEFINE_ACTION_FUNCTION(AActor, A_SpawnDebris) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (debris, AActor); @@ -3448,7 +3448,7 @@ enum SPFflag SPF_NOTIMEFREEZE = 1 << 5, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnParticle) +DEFINE_ACTION_FUNCTION(AActor, A_SpawnParticle) { PARAM_SELF_PROLOGUE(AActor); PARAM_COLOR (color); @@ -3509,7 +3509,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnParticle) // jumps if no player can see this actor // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckIfSeen) +DEFINE_ACTION_FUNCTION(AActor, CheckIfSeen) { PARAM_SELF_PROLOGUE(AActor); @@ -3577,7 +3577,7 @@ static bool DoCheckSightOrRange(AActor *self, AActor *camera, double range, bool return false; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckSightOrRange) +DEFINE_ACTION_FUNCTION(AActor, CheckSightOrRange) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(range); @@ -3605,7 +3605,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckSightOrRange) } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckRange) +DEFINE_ACTION_FUNCTION(AActor, CheckRange) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(range); @@ -3638,7 +3638,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckRange) // Inventory drop // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropInventory) +DEFINE_ACTION_FUNCTION(AActor, A_DropInventory) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(drop, AInventory); @@ -3660,7 +3660,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropInventory) // A_SetBlend // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetBlend) +DEFINE_ACTION_FUNCTION(AActor, A_SetBlend) { PARAM_SELF_PROLOGUE(AActor); PARAM_COLOR (color); @@ -3688,7 +3688,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetBlend) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CountdownArg) +DEFINE_ACTION_FUNCTION(AActor, A_CountdownArg) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(cnt); @@ -3720,7 +3720,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CountdownArg) // //============================================================================ -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Burst) +DEFINE_ACTION_FUNCTION(AActor, A_Burst) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(chunk, AActor); @@ -3816,7 +3816,7 @@ enum RS_Flags RSF_TELEFRAG=4, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn) +DEFINE_ACTION_FUNCTION(AActor, A_Respawn) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -4033,7 +4033,7 @@ ETraceStatus CheckLOFTraceFunc(FTraceResults &trace, void *userdata) return TRACE_Abort; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckLOF) +DEFINE_ACTION_FUNCTION(AActor, CheckLOF) { // Check line of fire @@ -4234,7 +4234,7 @@ enum JLOS_flags JLOSF_CHECKTRACER = 1 << 12, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckIfTargetInLOS) +DEFINE_ACTION_FUNCTION(AActor, CheckIfTargetInLOS) { PARAM_SELF_PROLOGUE(AActor); PARAM_ANGLE_DEF (fov) @@ -4371,7 +4371,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckIfTargetInLOS) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckIfInTargetLOS) +DEFINE_ACTION_FUNCTION(AActor, CheckIfInTargetLOS) { PARAM_SELF_PROLOGUE(AActor); PARAM_ANGLE_DEF (fov) @@ -4451,7 +4451,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckIfInTargetLOS) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckForReload) +DEFINE_ACTION_FUNCTION(AActor, A_CheckForReload) { PARAM_ACTION_PROLOGUE(AActor); @@ -4521,7 +4521,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ResetReloadCounter) // A_ChangeFlag // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ChangeFlag) +DEFINE_ACTION_FUNCTION(AActor, A_ChangeFlag) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING (flagname); @@ -4537,7 +4537,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ChangeFlag) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckFlag) +DEFINE_ACTION_FUNCTION(AActor, CheckFlag) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING (flagname); @@ -4548,7 +4548,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckFlag) } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ChangeCountFlags) +DEFINE_ACTION_FUNCTION(AActor, A_ChangeCountFlags) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(kill); @@ -4655,7 +4655,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_RaiseSiblings) // Keep firing unless target got out of sight // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_MonsterRefire) +DEFINE_ACTION_FUNCTION(AActor, A_MonsterRefire) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (prob); @@ -4691,7 +4691,7 @@ enum }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetAngle) +DEFINE_ACTION_FUNCTION(AActor, A_SetAngle) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT_DEF(angle); @@ -4714,7 +4714,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetAngle) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetPitch) +DEFINE_ACTION_FUNCTION(AActor, A_SetPitch) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(pitch); @@ -4738,7 +4738,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetPitch) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetRoll) +DEFINE_ACTION_FUNCTION(AActor, A_SetRoll) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT (roll); @@ -4761,7 +4761,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetRoll) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ScaleVelocity) +DEFINE_ACTION_FUNCTION(AActor, A_ScaleVelocity) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT(scale); @@ -4793,7 +4793,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ScaleVelocity) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ChangeVelocity) +DEFINE_ACTION_FUNCTION(AActor, A_ChangeVelocity) { PARAM_SELF_PROLOGUE(AActor); PARAM_FLOAT_DEF (x) @@ -4855,7 +4855,7 @@ static PField *GetVar(DObject *self, FName varname) return var; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserVar) +DEFINE_ACTION_FUNCTION(AActor, A_SetUserVar) { PARAM_SELF_PROLOGUE(DObject); PARAM_NAME (varname); @@ -4870,7 +4870,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserVar) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserVarFloat) +DEFINE_ACTION_FUNCTION(AActor, A_SetUserVarFloat) { PARAM_SELF_PROLOGUE(DObject); PARAM_NAME (varname); @@ -4912,7 +4912,7 @@ static PField *GetArrayVar(DObject *self, FName varname, int pos) return var; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserArray) +DEFINE_ACTION_FUNCTION(AActor, A_SetUserArray) { PARAM_SELF_PROLOGUE(DObject); PARAM_NAME (varname); @@ -4929,7 +4929,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserArray) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserArrayFloat) +DEFINE_ACTION_FUNCTION(AActor, A_SetUserArrayFloat) { PARAM_SELF_PROLOGUE(DObject); PARAM_NAME (varname); @@ -4973,7 +4973,7 @@ enum T_Flags TF_SENSITIVEZ = 0x00000800, // Fail if the actor wouldn't fit in the position (for Z). }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Teleport) +DEFINE_ACTION_FUNCTION(AActor, A_Teleport) { PARAM_ACTION_PROLOGUE(AActor); PARAM_STATE_DEF (teleport_state) @@ -5149,7 +5149,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Teleport) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Quake) +DEFINE_ACTION_FUNCTION(AActor, A_Quake) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (intensity); @@ -5170,7 +5170,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Quake) // take flags. //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_QuakeEx) +DEFINE_ACTION_FUNCTION(AActor, A_QuakeEx) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(intensityX); @@ -5241,7 +5241,7 @@ void A_Weave(AActor *self, int xyspeed, int zspeed, double xydist, double zdist) } } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Weave) +DEFINE_ACTION_FUNCTION(AActor, A_Weave) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (xspeed); @@ -5263,7 +5263,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Weave) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LineEffect) +DEFINE_ACTION_FUNCTION(AActor, A_LineEffect) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(special); @@ -5298,7 +5298,7 @@ enum WolfAttackFlags WAF_USEPUFF = 2, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack) +DEFINE_ACTION_FUNCTION(AActor, A_WolfAttack) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (flags) @@ -5403,7 +5403,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Warp) +DEFINE_ACTION_FUNCTION(AActor, A_Warp) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT(destination_selector); @@ -5655,7 +5655,7 @@ static bool DoRadiusGive(AActor *self, AActor *thing, PClassActor *item, int amo return false; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusGive) +DEFINE_ACTION_FUNCTION(AActor, A_RadiusGive) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (item, AInventory); @@ -5708,7 +5708,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusGive) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTics) +DEFINE_ACTION_FUNCTION(AActor, A_SetTics) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT(tics_to_set); @@ -5737,7 +5737,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTics) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropItem) +DEFINE_ACTION_FUNCTION(AActor, A_DropItem) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS (spawntype, AActor); @@ -5818,7 +5818,7 @@ static void DoDamage(AActor *dmgtarget, AActor *inflictor, AActor *source, int a // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageSelf) +DEFINE_ACTION_FUNCTION(AActor, A_DamageSelf) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -5841,7 +5841,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageSelf) // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageTarget) +DEFINE_ACTION_FUNCTION(AActor, A_DamageTarget) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -5865,7 +5865,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageTarget) // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageTracer) +DEFINE_ACTION_FUNCTION(AActor, A_DamageTracer) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -5889,7 +5889,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageTracer) // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageMaster) +DEFINE_ACTION_FUNCTION(AActor, A_DamageMaster) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -5913,7 +5913,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageMaster) // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageChildren) +DEFINE_ACTION_FUNCTION(AActor, A_DamageChildren) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -5943,7 +5943,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageChildren) // // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DamageSiblings) +DEFINE_ACTION_FUNCTION(AActor, A_DamageSiblings) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (amount); @@ -6026,7 +6026,7 @@ static void DoKill(AActor *killtarget, AActor *inflictor, AActor *source, FName // A_KillTarget(damagetype, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillTarget) +DEFINE_ACTION_FUNCTION(AActor, A_KillTarget) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME_DEF (damagetype) @@ -6049,7 +6049,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillTarget) // A_KillTracer(damagetype, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillTracer) +DEFINE_ACTION_FUNCTION(AActor, A_KillTracer) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME_DEF (damagetype) @@ -6072,7 +6072,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillTracer) // A_KillMaster(damagetype, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillMaster) +DEFINE_ACTION_FUNCTION(AActor, A_KillMaster) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME_DEF (damagetype) @@ -6095,7 +6095,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillMaster) // A_KillChildren(damagetype, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillChildren) +DEFINE_ACTION_FUNCTION(AActor, A_KillChildren) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME_DEF (damagetype) @@ -6126,7 +6126,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillChildren) // A_KillSiblings(damagetype, int flags) // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_KillSiblings) +DEFINE_ACTION_FUNCTION(AActor, A_KillSiblings) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME_DEF (damagetype) @@ -6202,7 +6202,7 @@ static void DoRemove(AActor *removetarget, int flags, PClassActor *filter, FName // A_RemoveTarget // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveTarget) +DEFINE_ACTION_FUNCTION(AActor, A_RemoveTarget) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -6221,7 +6221,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveTarget) // A_RemoveTracer // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveTracer) +DEFINE_ACTION_FUNCTION(AActor, A_RemoveTracer) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -6240,7 +6240,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveTracer) // A_RemoveMaster // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveMaster) +DEFINE_ACTION_FUNCTION(AActor, A_RemoveMaster) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -6259,7 +6259,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveMaster) // A_RemoveChildren // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveChildren) +DEFINE_ACTION_FUNCTION(AActor, A_RemoveChildren) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL_DEF(removeall); @@ -6285,7 +6285,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveChildren) // A_RemoveSiblings // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveSiblings) +DEFINE_ACTION_FUNCTION(AActor, A_RemoveSiblings) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL_DEF(removeall); @@ -6314,7 +6314,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RemoveSiblings) // A_Remove // //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Remove) +DEFINE_ACTION_FUNCTION(AActor, A_Remove) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(removee); @@ -6338,7 +6338,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Remove) // Takes a name of the classes for the source and destination. //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTeleFog) +DEFINE_ACTION_FUNCTION(AActor, A_SetTeleFog) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(oldpos, AActor); @@ -6383,7 +6383,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SwapTeleFog) // Takes a pointer as well. //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetHealth) +DEFINE_ACTION_FUNCTION(AActor, A_SetHealth) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT (health); @@ -6421,7 +6421,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetHealth) // Takes a pointer. //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ResetHealth) +DEFINE_ACTION_FUNCTION(AActor, A_ResetHealth) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(ptr); @@ -6450,7 +6450,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ResetHealth) // // Sets the species of the calling actor('s pointer). //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpecies) +DEFINE_ACTION_FUNCTION(AActor, A_SetSpecies) { PARAM_SELF_PROLOGUE(AActor); PARAM_NAME(species); @@ -6474,7 +6474,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpecies) // changes the default threshold which the actor resets to once it switches // targets and doesn't have the +QUICKTORETALIATE flag. //=========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetChaseThreshold) +DEFINE_ACTION_FUNCTION(AActor, A_SetChaseThreshold) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(threshold); @@ -6501,7 +6501,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetChaseThreshold) // Checks to see if a certain actor class is close to the // actor/pointer within distance, in numbers. //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckProximity) +DEFINE_ACTION_FUNCTION(AActor, CheckProximity) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS(classname, AActor); @@ -6534,7 +6534,7 @@ enum CBF CBF_ABSOLUTEANGLE = 1 << 8, //Absolute angle for offsets. }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckBlock) +DEFINE_ACTION_FUNCTION(AActor, CheckBlock) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags) @@ -6633,7 +6633,7 @@ enum FMDFlags FMDF_INTERPOLATE = 1 << 1, FMDF_NOANGLE = 1 << 2, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FaceMovementDirection) +DEFINE_ACTION_FUNCTION(AActor, A_FaceMovementDirection) { PARAM_SELF_PROLOGUE(AActor); PARAM_ANGLE_DEF(offset) @@ -6727,7 +6727,7 @@ enum CPSFFlags CPSF_NOFRAME = 1 << 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CopySpriteFrame) +DEFINE_ACTION_FUNCTION(AActor, A_CopySpriteFrame) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(from); @@ -6762,7 +6762,7 @@ enum VRFFlags VRF_NOPITCHEND = 1 << 3, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetVisibleRotation) +DEFINE_ACTION_FUNCTION(AActor, A_SetVisibleRotation) { PARAM_SELF_PROLOGUE(AActor); PARAM_ANGLE_DEF(anglestart) @@ -6805,7 +6805,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetVisibleRotation) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTranslation) +DEFINE_ACTION_FUNCTION(AActor, A_SetTranslation) { PARAM_SELF_PROLOGUE(AActor); PARAM_STRING(trname); diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp index cbddb4840..d36a8de9d 100644 --- a/src/p_enemy.cpp +++ b/src/p_enemy.cpp @@ -1942,7 +1942,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Look) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LookEx) +DEFINE_ACTION_FUNCTION(AActor, A_LookEx) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF (flags) @@ -2159,7 +2159,7 @@ enum ChaseFlags CHF_STOPIFBLOCKED = 256, }; -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Wander) +DEFINE_ACTION_FUNCTION(AActor, A_Wander) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -2801,7 +2801,7 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates) // //========================================================================== -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Chase) +DEFINE_ACTION_FUNCTION(AActor, A_Chase) { PARAM_SELF_PROLOGUE(AActor); PARAM_STATE_DEF (melee) @@ -2840,7 +2840,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_VileChase) return 0; } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ExtChase) +DEFINE_ACTION_FUNCTION(AActor, A_ExtChase) { PARAM_SELF_PROLOGUE(AActor); PARAM_BOOL (domelee); @@ -2980,7 +2980,7 @@ void A_FaceTarget(AActor *self) A_Face(self, self->target); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Face) +DEFINE_ACTION_FUNCTION(AActor, A_Face) { PARAM_SELF_PROLOGUE(AActor); PARAM_OBJECT(faceto, AActor) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index ce74684cc..408cdbf91 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -3098,6 +3098,13 @@ void AActor::RemoveFromHash () tid = 0; } +DEFINE_ACTION_FUNCTION(AActor, RemoveFromHash) +{ + PARAM_SELF_PROLOGUE(AActor); + self->RemoveFromHash(); + return 0; +} + //========================================================================== // // P_IsTIDUsed @@ -6886,6 +6893,42 @@ void AActor::SetTranslation(const char *trname) // silently ignore if the name does not exist, this would create some insane message spam otherwise. } + +class DActorIterator : public DObject, public NActorIterator +{ + DECLARE_CLASS(DActorIterator, DObject) + +public: + DActorIterator(PClassActor *cls= nullptr, int tid = 0) + : NActorIterator(cls, tid) + { + } +}; + +IMPLEMENT_CLASS(DActorIterator, false, false, false, false); +DEFINE_ACTION_FUNCTION(DActorIterator, Create) +{ + PARAM_PROLOGUE; + PARAM_INT_DEF(tid); + PARAM_CLASS_DEF(type, AActor); + ACTION_RETURN_OBJECT(new DActorIterator(type, tid)); +} + +DEFINE_ACTION_FUNCTION(DActorIterator, Next) +{ + PARAM_SELF_PROLOGUE(DActorIterator); + ACTION_RETURN_OBJECT(self->Next()); +} + +DEFINE_ACTION_FUNCTION(DActorIterator, Reinit) +{ + PARAM_SELF_PROLOGUE(DActorIterator); + self->Reinit(); + return 0; +} + + + DEFINE_ACTION_FUNCTION(AActor, deltaangle) // should this be global? { PARAM_PROLOGUE; @@ -6894,6 +6937,14 @@ DEFINE_ACTION_FUNCTION(AActor, deltaangle) // should this be global? ACTION_RETURN_FLOAT(deltaangle(DAngle(a1), DAngle(a2)).Degrees); } +DEFINE_ACTION_FUNCTION(AActor, absangle) // should this be global? +{ + PARAM_PROLOGUE; + PARAM_FLOAT(a1); + PARAM_FLOAT(a2); + ACTION_RETURN_FLOAT(absangle(DAngle(a1), DAngle(a2)).Degrees); +} + DEFINE_ACTION_FUNCTION(AActor, Distance2D) { PARAM_SELF_PROLOGUE(AActor); diff --git a/src/p_pspr.cpp b/src/p_pspr.cpp index 1bb0db909..5a76f0b55 100644 --- a/src/p_pspr.cpp +++ b/src/p_pspr.cpp @@ -772,7 +772,7 @@ void DoReadyWeapon(AActor *self) DoReadyWeaponToGeneric(self, ~0); } -DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_WeaponReady) +DEFINE_ACTION_FUNCTION(AStateProvider, A_WeaponReady) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT_DEF(flags); @@ -904,7 +904,7 @@ static void P_CheckWeaponButtons (player_t *player) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_ReFire) +DEFINE_ACTION_FUNCTION(AStateProvider, A_ReFire) { PARAM_ACTION_PROLOGUE(AActor); PARAM_STATE_ACTION_DEF(state); @@ -942,7 +942,7 @@ void A_ReFire(AActor *self, FState *state) } } -DEFINE_ACTION_FUNCTION(AInventory, A_ClearReFire) +DEFINE_ACTION_FUNCTION(AStateProvider, A_ClearReFire) { PARAM_ACTION_PROLOGUE(AActor); player_t *player = self->player; @@ -964,7 +964,7 @@ DEFINE_ACTION_FUNCTION(AInventory, A_ClearReFire) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION(AInventory, A_CheckReload) +DEFINE_ACTION_FUNCTION(AStateProvider, A_CheckReload) { PARAM_ACTION_PROLOGUE(AActor); @@ -1152,7 +1152,7 @@ DEFINE_ACTION_FUNCTION(AActor, OverlayID) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION(AInventory, A_Lower) +DEFINE_ACTION_FUNCTION(AStateProvider, A_Lower) { PARAM_ACTION_PROLOGUE(AActor); @@ -1200,7 +1200,7 @@ DEFINE_ACTION_FUNCTION(AInventory, A_Lower) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION(AInventory, A_Raise) +DEFINE_ACTION_FUNCTION(AActor, A_Raise) { PARAM_ACTION_PROLOGUE(AActor); @@ -1241,7 +1241,7 @@ DEFINE_ACTION_FUNCTION(AInventory, A_Raise) // //--------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Overlay) +DEFINE_ACTION_FUNCTION(AActor, A_Overlay) { PARAM_ACTION_PROLOGUE(AActor); PARAM_INT (layer); @@ -1261,7 +1261,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Overlay) ACTION_RETURN_BOOL(true); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_ClearOverlays) +DEFINE_ACTION_FUNCTION(AActor, A_ClearOverlays) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT_DEF(start); @@ -1312,7 +1312,7 @@ enum GF_Flags GFF_NOEXTCHANGE = 1, }; -DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_GunFlash) +DEFINE_ACTION_FUNCTION(AStateProvider, A_GunFlash) { PARAM_ACTION_PROLOGUE(AActor); PARAM_STATE_ACTION_DEF(flash); @@ -1415,7 +1415,7 @@ void P_GunShot (AActor *mo, bool accurate, PClassActor *pufftype, DAngle pitch) P_LineAttack (mo, angle, PLAYERMISSILERANGE, pitch, damage, NAME_Hitscan, pufftype); } -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Light) +DEFINE_ACTION_FUNCTION(AActor, A_Light) { PARAM_SELF_PROLOGUE(AActor); PARAM_INT(light); diff --git a/src/p_states.cpp b/src/p_states.cpp index f7f237c77..ac7121f49 100644 --- a/src/p_states.cpp +++ b/src/p_states.cpp @@ -343,7 +343,7 @@ DEFINE_ACTION_FUNCTION(AActor, FindState) } // same as above but context aware. -DEFINE_ACTION_FUNCTION_PARAMS(AActor, ResolveState) +DEFINE_ACTION_FUNCTION(AActor, ResolveState) { PARAM_ACTION_PROLOGUE(AActor); PARAM_STATE_ACTION(newstate); diff --git a/src/p_user.cpp b/src/p_user.cpp index 6b0b2cfe6..8c8858b63 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -1626,7 +1626,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_PlayerScream) // //---------------------------------------------------------------------------- -DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SkullPop) +DEFINE_ACTION_FUNCTION(AActor, A_SkullPop) { PARAM_SELF_PROLOGUE(AActor); PARAM_CLASS_DEF(spawntype, APlayerChunk); diff --git a/src/scripting/codegeneration/codegen.cpp b/src/scripting/codegeneration/codegen.cpp index b64e0c439..e33986550 100644 --- a/src/scripting/codegeneration/codegen.cpp +++ b/src/scripting/codegeneration/codegen.cpp @@ -7962,7 +7962,7 @@ FxExpression *FxReturnStatement::Resolve(FCompileContext &ctx) else { // If we already know the real return type we need at least try to cast the value to its proper type (unless in an anonymous function.) - if (ctx.ReturnProto != nullptr && ctx.Function->SymbolName != NAME_None) + if (ctx.ReturnProto != nullptr && ctx.ReturnProto->ReturnTypes.Size() > 0 && ctx.Function->SymbolName != NAME_None) { Value = new FxTypeCast(Value, ctx.ReturnProto->ReturnTypes[0], false, false); Value = Value->Resolve(ctx); diff --git a/src/scripting/thingdef.h b/src/scripting/thingdef.h index 7218a84e6..5992dba04 100644 --- a/src/scripting/thingdef.h +++ b/src/scripting/thingdef.h @@ -147,7 +147,7 @@ inline void ResetBaggage (Baggage *bag, PClassActor *stateclass) // //========================================================================== -AFuncDesc *FindFunction(const char * string); +AFuncDesc *FindFunction(PClass *cls, const char * string); FxExpression *ParseExpression(FScanner &sc, PClassActor *cls, bool mustresolve = false); diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp index 4ccc72748..8de1aaff8 100644 --- a/src/scripting/thingdef_data.cpp +++ b/src/scripting/thingdef_data.cpp @@ -571,28 +571,33 @@ FPropertyInfo *FindProperty(const char * string) // //========================================================================== -AFuncDesc *FindFunction(const char * string) +AFuncDesc *FindFunction(PClass *cls, const char * string) { - int min = 0, max = AFTable.Size()-1; - - while (min <= max) + for (int i = 0; i < 2; i++) { - int mid = (min + max) / 2; - int lexval = stricmp (string, AFTable[mid].Name); - if (lexval == 0) + if (i == 1 && !cls->IsDescendantOf(RUNTIME_CLASS(AActor))) break; + FStringf fullname("%s_%s", i == 0 ? cls->TypeName.GetChars() : "Actor", string); + int min = 0, max = AFTable.Size() - 1; + + while (min <= max) { - return &AFTable[mid]; - } - else if (lexval > 0) - { - min = mid + 1; - } - else - { - max = mid - 1; + int mid = (min + max) / 2; + int lexval = stricmp(fullname, AFTable[mid].Name + 1); + if (lexval == 0) + { + return &AFTable[mid]; + } + else if (lexval > 0) + { + min = mid + 1; + } + else + { + max = mid - 1; + } } } - return NULL; + return nullptr; } @@ -627,7 +632,7 @@ static int propcmp(const void * a, const void * b) static int funccmp(const void * a, const void * b) { - return stricmp( ((AFuncDesc*)a)->Name, ((AFuncDesc*)b)->Name); + return stricmp(((AFuncDesc*)a)->Name + 1, ((AFuncDesc*)b)->Name + 1); // +1 to get past the prefix letter of the native class name, which gets omitted by the FName for the class. } //========================================================================== diff --git a/src/scripting/vm/vm.h b/src/scripting/vm/vm.h index 2f98c8d81..ae867a975 100644 --- a/src/scripting/vm/vm.h +++ b/src/scripting/vm/vm.h @@ -1020,26 +1020,21 @@ struct AFuncDesc // Macros to handle action functions. These are here so that I don't have to // change every single use in case the parameters change. -#define DECLARE_ACTION(name) extern VMNativeFunction *name##_VMPtr; +#define DECLARE_ACTION(name) extern VMNativeFunction *AActor_##name##_VMPtr; // This distinction is here so that CALL_ACTION produces errors when trying to // access a function that requires parameters. #define DEFINE_ACTION_FUNCTION(cls, name) \ - static int AF_##name(VM_ARGS); \ - VMNativeFunction *name##_VMPtr; \ - static const AFuncDesc cls##_##name##_Hook = { #name, AF_##name, &name##_VMPtr }; \ + static int AF_##cls##_##name(VM_ARGS); \ + VMNativeFunction *cls##_##name##_VMPtr; \ + static const AFuncDesc cls##_##name##_Hook = { #cls "_" #name, AF_##cls##_##name, &cls##_##name##_VMPtr }; \ extern AFuncDesc const *const cls##_##name##_HookPtr; \ MSVC_ASEG AFuncDesc const *const cls##_##name##_HookPtr GCC_ASEG = &cls##_##name##_Hook; \ - static int AF_##name(VM_ARGS) - -#define DEFINE_ACTION_FUNCTION_PARAMS(cls, name) DEFINE_ACTION_FUNCTION(cls, name) - -//#define DECLARE_PARAMINFO AActor *self, AActor *stateowner, FState *CallingState, int ParameterIndex, StateCallData *statecall -//#define PUSH_PARAMINFO self, stateowner, CallingState, ParameterIndex, statecall + static int AF_##cls##_##name(VM_ARGS) class AActor; void CallAction(VMFrameStack *stack, VMFunction *vmfunc, AActor *self); -#define CALL_ACTION(name, self) CallAction(stack, name##_VMPtr, self); +#define CALL_ACTION(name, self) CallAction(stack, AActor_##name##_VMPtr, self); #define ACTION_RETURN_STATE(v) do { FState *state = v; if (numret > 0) { assert(ret != NULL); ret->SetPointer(state, ATAG_STATE); return 1; } return 0; } while(0) diff --git a/src/scripting/zscript/zcc_compile.cpp b/src/scripting/zscript/zcc_compile.cpp index 6cf719d3d..aec8f5853 100644 --- a/src/scripting/zscript/zcc_compile.cpp +++ b/src/scripting/zscript/zcc_compile.cpp @@ -2128,7 +2128,7 @@ void ZCCCompiler::InitFunctions() if (f->Flags & ZCC_Native) { varflags |= VARF_Native; - afd = FindFunction(FName(f->Name).GetChars()); + afd = FindFunction(c->Type(), FName(f->Name).GetChars()); if (afd == nullptr) { Error(f, "The function '%s' has not been exported from the executable.", FName(f->Name).GetChars()); diff --git a/wadsrc/static/zscript/actor.txt b/wadsrc/static/zscript/actor.txt index 8e8b2fdd8..f28045764 100644 --- a/wadsrc/static/zscript/actor.txt +++ b/wadsrc/static/zscript/actor.txt @@ -63,7 +63,9 @@ class Actor : Thinker native native static readonly GetDefaultByType(class cls); native static float deltaangle(float ang1, float ang2); + native static float absangle(float ang1, float ang2); native static float GetDefaultSpeed(class type); + native void RemoveFromHash(); native float GetBobOffset(float frac = 0); native void SetDamage(int dmg); native static bool isDehState(state st); diff --git a/wadsrc/static/zscript/base.txt b/wadsrc/static/zscript/base.txt index 33c1c6135..6cf2835e8 100644 --- a/wadsrc/static/zscript/base.txt +++ b/wadsrc/static/zscript/base.txt @@ -20,6 +20,13 @@ class ThinkerIterator : Object native native void Reinit(); } +class ActorIterator : Object native +{ + native static ActorIterator Create(int tid, class type = "Actor"); + native Actor Next(); + native void Reinit(); +} + class DropItem : Object native { /* native fields listed for reference only for now diff --git a/wadsrc/static/zscript/constants.txt b/wadsrc/static/zscript/constants.txt index 5e47bbc7e..3f7a26461 100644 --- a/wadsrc/static/zscript/constants.txt +++ b/wadsrc/static/zscript/constants.txt @@ -898,3 +898,22 @@ const HR_SHADOW = (0x6800 / 65536.); // Hexen's TINTTAB is the same as Heretic's, just reversed. const HX_SHADOW = (0x9800 / 65536.); const HX_ALTSHADOW = (0x6800 / 65536.); + +enum EMapThingFlags +{ + MTF_AMBUSH = 0x0008, // Thing is deaf + MTF_DORMANT = 0x0010, // Thing is dormant (use Thing_Activate) + + MTF_SINGLE = 0x0100, // Thing appears in single-player games + MTF_COOPERATIVE = 0x0200, // Thing appears in cooperative games + MTF_DEATHMATCH = 0x0400, // Thing appears in deathmatch games + + MTF_SHADOW = 0x0800, + MTF_ALTSHADOW = 0x1000, + MTF_FRIENDLY = 0x2000, + MTF_STANDSTILL = 0x4000, + MTF_STRIFESOMETHING = 0x8000, + + MTF_SECRET = 0x080000, // Secret pickup + MTF_NOINFIGHTING = 0x100000, +}; diff --git a/wadsrc/static/zscript/strife/acolyte.txt b/wadsrc/static/zscript/strife/acolyte.txt index 0c1305b57..9a6b0105a 100644 --- a/wadsrc/static/zscript/strife/acolyte.txt +++ b/wadsrc/static/zscript/strife/acolyte.txt @@ -26,8 +26,6 @@ class Acolyte : StrifeHumanoid Obituary "$OB_ACOLYTE"; } - native void A_BeShadowyFoe (); - native void A_AcolyteBits (); native void A_AcolyteDie (); States @@ -76,6 +74,44 @@ class Acolyte : StrifeHumanoid GIBS L 1400; Stop; } + + //============================================================================ + // + // A_BeShadowyFoe + // + //============================================================================ + + void A_BeShadowyFoe() + { + A_SetRenderStyle(HR_SHADOW, STYLE_Translucent); + bFriendly = false; + } + + //============================================================================ + // + // A_AcolyteBits + // + //============================================================================ + + void A_AcolyteBits() + { + if (SpawnFlags & MTF_SHADOW) + { + A_BeShadowyFoe(); + } + if (SpawnFlags & MTF_ALTSHADOW) + { + if (bShadow) + { + // I dunno. + } + else + { + A_SetRenderStyle(0, STYLE_None); + } + } + } + }