From b132782c4986b26cebd3c2ac9b9adcf0586622dc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 3 Jan 2017 21:03:05 +0100 Subject: [PATCH] - scriptified PowerBuddha and PowerFrightener. --- src/d_dehacked.cpp | 22 +++---- src/g_inventory/a_artifacts.cpp | 76 ----------------------- src/g_inventory/a_artifacts.h | 30 --------- wadsrc/static/zscript/shared/powerups.txt | 58 ++++++++++++++++- 4 files changed, 66 insertions(+), 120 deletions(-) diff --git a/src/d_dehacked.cpp b/src/d_dehacked.cpp index ed2310d45..82f811301 100644 --- a/src/d_dehacked.cpp +++ b/src/d_dehacked.cpp @@ -1890,16 +1890,16 @@ static int PatchMisc (int dummy) "Minotaur", NULL }; - static const PClass * const *types[] = + static const char *const types[] = { - &RUNTIME_CLASS_CASTLESS(APowerInvulnerable), - &RUNTIME_CLASS_CASTLESS(APowerStrength), - &RUNTIME_CLASS_CASTLESS(APowerInvisibility), - &RUNTIME_CLASS_CASTLESS(APowerIronFeet), - &RUNTIME_CLASS_CASTLESS(APowerLightAmp), - &RUNTIME_CLASS_CASTLESS(APowerWeaponLevel2), - &RUNTIME_CLASS_CASTLESS(APowerSpeed), - &RUNTIME_CLASS_CASTLESS(APowerMinotaur) + "PowerInvulnerable", + "PowerStrength", + "PowerInvisibility", + "PowerIronFeet", + "PowerLightAmp", + "PowerWeaponLevel2", + "PowerSpeed", + "PowerMinotaur" }; int i; @@ -1925,7 +1925,7 @@ static int PatchMisc (int dummy) } else if (a > 0) { - static_cast(GetDefaultByType (*types[i]))->BlendColor = PalEntry( + static_cast(GetDefaultByName (types[i]))->BlendColor = PalEntry( BYTE(clamp(a,0.f,1.f)*255.f), clamp(r,0,255), clamp(g,0,255), @@ -1933,7 +1933,7 @@ static int PatchMisc (int dummy) } else { - static_cast(GetDefaultByType (*types[i]))->BlendColor = 0; + static_cast(GetDefaultByName (types[i]))->BlendColor = 0; } } } diff --git a/src/g_inventory/a_artifacts.cpp b/src/g_inventory/a_artifacts.cpp index 4bd1b67d5..9b67e2dc9 100644 --- a/src/g_inventory/a_artifacts.cpp +++ b/src/g_inventory/a_artifacts.cpp @@ -1290,10 +1290,6 @@ void APowerSpeed::DoEffect () } } -// Minotaur (aka Dark Servant) powerup --------------------------------------- - -IMPLEMENT_CLASS(APowerMinotaur, false, false) - // Targeter powerup --------------------------------------------------------- IMPLEMENT_CLASS(APowerTargeter, false, false) @@ -1409,78 +1405,6 @@ void APowerTargeter::PositionAccuracy () } } -// Frightener Powerup -------------------------------- - -IMPLEMENT_CLASS(APowerFrightener, false, false) - -//=========================================================================== -// -// APowerFrightener :: InitEffect -// -//=========================================================================== - -void APowerFrightener::InitEffect () -{ - Super::InitEffect(); - - if (Owner== NULL || Owner->player == NULL) - return; - - Owner->player->cheats |= CF_FRIGHTENING; -} - -//=========================================================================== -// -// APowerFrightener :: EndEffect -// -//=========================================================================== - -void APowerFrightener::EndEffect () -{ - Super::EndEffect(); - - if (Owner== NULL || Owner->player == NULL) - return; - - Owner->player->cheats &= ~CF_FRIGHTENING; -} - -// Buddha Powerup -------------------------------- - -IMPLEMENT_CLASS(APowerBuddha, false, false) - -//=========================================================================== -// -// APowerBuddha :: InitEffect -// -//=========================================================================== - -void APowerBuddha::InitEffect () -{ - Super::InitEffect(); - - if (Owner== NULL || Owner->player == NULL) - return; - - Owner->player->cheats |= CF_BUDDHA; -} - -//=========================================================================== -// -// APowerBuddha :: EndEffect -// -//=========================================================================== - -void APowerBuddha::EndEffect () -{ - Super::EndEffect(); - - if (Owner== NULL || Owner->player == NULL) - return; - - Owner->player->cheats &= ~CF_BUDDHA; -} - // Morph powerup ------------------------------------------------------ IMPLEMENT_CLASS(APowerMorph, false, true) diff --git a/src/g_inventory/a_artifacts.h b/src/g_inventory/a_artifacts.h index 746d22589..f8eec5554 100644 --- a/src/g_inventory/a_artifacts.h +++ b/src/g_inventory/a_artifacts.h @@ -160,11 +160,6 @@ public: #define PSF_NOTRAIL 1 -class APowerMinotaur : public APowerup -{ - DECLARE_CLASS (APowerMinotaur, APowerup) -}; - class APowerTargeter : public APowerup { DECLARE_CLASS (APowerTargeter, APowerup) @@ -178,31 +173,6 @@ protected: virtual bool HandlePickup(AInventory *item) override; }; -class APowerFrightener : public APowerup -{ - DECLARE_CLASS (APowerFrightener, APowerup) -protected: - virtual void InitEffect () override; - virtual void EndEffect () override; -}; - -class APowerBuddha : public APowerup -{ - DECLARE_CLASS (APowerBuddha, APowerup) -protected: - virtual void InitEffect () override; - virtual void EndEffect () override; -}; - -class APowerTimeFreezer : public APowerup -{ - DECLARE_CLASS( APowerTimeFreezer, APowerup ) -protected: - virtual void InitEffect() override; - virtual void DoEffect() override; - virtual void EndEffect() override; -}; - class APowerMorph : public APowerup { DECLARE_CLASS( APowerMorph, APowerup ) diff --git a/wadsrc/static/zscript/shared/powerups.txt b/wadsrc/static/zscript/shared/powerups.txt index e653cb275..549c3eece 100644 --- a/wadsrc/static/zscript/shared/powerups.txt +++ b/wadsrc/static/zscript/shared/powerups.txt @@ -169,7 +169,7 @@ class PlayerSpeedTrail : Actor } } -class PowerMinotaur : Powerup native +class PowerMinotaur : Powerup { Default { @@ -197,20 +197,72 @@ class PowerTargeter : Powerup native } } -class PowerFrightener : Powerup native +//=========================================================================== +// +// Frightener +// +//=========================================================================== + +class PowerFrightener : Powerup { Default { Powerup.Duration -60; } + + override void InitEffect () + { + Super.InitEffect(); + + if (Owner== null || Owner.player == null) + return; + + Owner.player.cheats |= CF_FRIGHTENING; + } + + override void EndEffect () + { + Super.EndEffect(); + + if (Owner== null || Owner.player == null) + return; + + Owner.player.cheats &= ~CF_FRIGHTENING; + } } -class PowerBuddha : Powerup native +//=========================================================================== +// +// Buddha +// +//=========================================================================== + +class PowerBuddha : Powerup { Default { Powerup.Duration -60; } + + override void InitEffect () + { + Super.InitEffect(); + + if (Owner== null || Owner.player == null) + return; + + Owner.player.cheats |= CF_BUDDHA; + } + + override void EndEffect () + { + Super.EndEffect(); + + if (Owner== null || Owner.player == null) + return; + + Owner.player.cheats &= ~CF_BUDDHA; + } } //===========================================================================