From cc99d150a3fc272fd82803203ef8853d06190d06 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Aug 2008 19:42:24 +0000 Subject: [PATCH] - Added more DECORATE conversions by Karate Chris. SVN r1108 (trunk) --- src/codepointers.h | 15 ++ src/g_hexen/a_bats.cpp | 73 +----- src/g_hexen/a_bishop.cpp | 245 +------------------ src/g_hexen/a_blastradius.cpp | 56 +---- src/g_hexen/a_boostarmor.cpp | 27 +-- src/g_hexen/a_clericflame.cpp | 265 +-------------------- src/g_hexen/a_heresiarch.cpp | 2 +- src/g_hexen/a_hexenglobal.h | 7 - wadsrc/static/actors/hexen/bats.txt | 48 ++++ wadsrc/static/actors/hexen/bishop.txt | 156 ++++++++++++ wadsrc/static/actors/hexen/blastradius.txt | 35 +++ wadsrc/static/actors/hexen/boostarmor.txt | 22 ++ wadsrc/static/actors/hexen/clericflame.txt | 197 +++++++++++++++ wadsrc/static/decorate.txt | 5 + 14 files changed, 497 insertions(+), 656 deletions(-) create mode 100644 wadsrc/static/actors/hexen/bats.txt create mode 100644 wadsrc/static/actors/hexen/bishop.txt create mode 100644 wadsrc/static/actors/hexen/blastradius.txt create mode 100644 wadsrc/static/actors/hexen/boostarmor.txt create mode 100644 wadsrc/static/actors/hexen/clericflame.txt diff --git a/src/codepointers.h b/src/codepointers.h index 32ebbe808c..2f54ce6f4c 100644 --- a/src/codepointers.h +++ b/src/codepointers.h @@ -160,6 +160,21 @@ ACTOR(MaceBallImpact2) ACTOR(DeathBallImpact) +ACTOR(BatSpawnInit) +ACTOR(BatSpawn) +ACTOR(BatMove) +ACTOR(BishopDecide) +ACTOR(BishopDoBlur) +ACTOR(BishopSpawnBlur) +ACTOR(BishopPainBlur) +ACTOR(BishopChase) +ACTOR(BishopAttack) +ACTOR(BishopAttack2) +ACTOR(BishopPuff) +WEAPON(CFlameAttack) +WEAPON(CFlameRotate) +ACTOR(CFlamePuff) +WEAPON(CFlameMissile) WEAPON(CMaceAttack) ACTOR(FiredRocks) ACTOR(FiredChase) diff --git a/src/g_hexen/a_bats.cpp b/src/g_hexen/a_bats.cpp index fcceb88846..3c0a9b5d99 100644 --- a/src/g_hexen/a_bats.cpp +++ b/src/g_hexen/a_bats.cpp @@ -7,77 +7,6 @@ static FRandom pr_batspawn ("BatSpawn"); static FRandom pr_batmove ("BatMove"); -void A_BatSpawnInit (AActor *); -void A_BatSpawn (AActor *); -void A_BatMove (AActor *); - -// Bat Spawner -------------------------------------------------------------- - -class ABatSpawner : public AActor -{ - DECLARE_ACTOR (ABatSpawner, AActor) -public: - void Activate (AActor *activator); - void Deactivate (AActor *activator); -}; - -FState ABatSpawner::States[] = -{ -#define S_SPAWNBATS1 0 - S_NORMAL (TNT1, 'A', 2, NULL , &States[S_SPAWNBATS1+1]), - S_NORMAL (TNT1, 'A', 2, A_BatSpawnInit , &States[S_SPAWNBATS1+2]), - S_NORMAL (TNT1, 'A', 2, A_BatSpawn , &States[S_SPAWNBATS1+2]), - -#define S_SPAWNBATS_OFF (S_SPAWNBATS1+3) - S_NORMAL (TNT1, 'A', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ABatSpawner, Hexen, 10225, 0) - PROP_Flags (MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_None) - - PROP_SpawnState (S_SPAWNBATS1) -END_DEFAULTS - -void ABatSpawner::Activate (AActor *activator) -{ - SetState (&States[S_SPAWNBATS1]); -} - -void ABatSpawner::Deactivate (AActor *activator) -{ - SetState (&States[S_SPAWNBATS_OFF]); -} - -// Bat ---------------------------------------------------------------------- - -class ABat : public AActor -{ - DECLARE_ACTOR (ABat, AActor) -}; - -FState ABat::States[] = -{ -#define S_BAT1 0 - S_NORMAL (ABAT, 'A', 2, A_BatMove , &States[S_BAT1+1]), - S_NORMAL (ABAT, 'B', 2, A_BatMove , &States[S_BAT1+2]), - S_NORMAL (ABAT, 'C', 2, A_BatMove , &States[S_BAT1]), - -#define S_BAT_DEATH (S_BAT1+3) - S_NORMAL (ABAT, 'A', 2, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ABat, Hexen, -1, 0) - PROP_SpeedFixed (5) - PROP_RadiusFixed (3) - PROP_HeightFixed (3) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT|MF2_PASSMOBJ) - - PROP_SpawnState (S_BAT1) - PROP_DeathState (S_BAT_DEATH) -END_DEFAULTS - //=========================================================================== // Bat Spawner Variables // special1 frequency counter @@ -111,7 +40,7 @@ void A_BatSpawn (AActor *actor) delta = actor->args[1]; if (delta==0) delta=1; angle = actor->angle + (((pr_batspawn()%delta)-(delta>>1))<<24); - mo = P_SpawnMissileAngle (actor, RUNTIME_CLASS(ABat), angle, 0); + mo = P_SpawnMissileAngle (actor, PClass::FindClass ("Bat"), angle, 0); if (mo) { mo->args[0] = pr_batspawn()&63; // floatbob index diff --git a/src/g_hexen/a_bishop.cpp b/src/g_hexen/a_bishop.cpp index 7cb0d37f31..56c35dc64a 100644 --- a/src/g_hexen/a_bishop.cpp +++ b/src/g_hexen/a_bishop.cpp @@ -14,216 +14,6 @@ static FRandom pr_doblur ("BishopDoBlur"); static FRandom pr_sblur ("BishopSpawnBlur"); static FRandom pr_pain ("BishopPainBlur"); -void A_BishopDecide (AActor *); -void A_BishopDoBlur (AActor *); -void A_BishopSpawnBlur (AActor *); -void A_BishopPainBlur (AActor *); -void A_BishopChase (AActor *); -void A_BishopAttack (AActor *); -void A_BishopAttack2 (AActor *); -void A_BishopPuff (AActor *); -void A_SetAltShadow (AActor *); -void A_BishopMissileWeave (AActor *); -void A_BishopMissileSeek (AActor *); - -// Bishop ------------------------------------------------------------------- - -FState ABishop::States[] = -{ -#define S_BISHOP_LOOK 0 - S_NORMAL (BISH, 'A', 10, A_Look , &States[S_BISHOP_LOOK+0]), - -#define S_BISHOP_BLUR (S_BISHOP_LOOK+1) - S_NORMAL (BISH, 'A', 2, A_BishopDoBlur , &States[S_BISHOP_BLUR+1]), - S_NORMAL (BISH, 'A', 4, A_BishopSpawnBlur , &States[S_BISHOP_BLUR+1]), - -#define S_BISHOP_WALK (S_BISHOP_BLUR+2) - S_NORMAL (BISH, 'A', 2, A_Chase , &States[S_BISHOP_WALK+1]), - S_NORMAL (BISH, 'A', 2, A_BishopChase , &States[S_BISHOP_WALK+2]), - S_NORMAL (BISH, 'A', 2, NULL , &States[S_BISHOP_WALK+3]), - S_NORMAL (BISH, 'B', 2, A_BishopChase , &States[S_BISHOP_WALK+4]), - S_NORMAL (BISH, 'B', 2, A_Chase , &States[S_BISHOP_WALK+5]), - S_NORMAL (BISH, 'B', 2, A_BishopChase , &States[S_BISHOP_WALK+6]), // S_BISHOP_DECIDE - -#define S_BISHOP_DECIDE (S_BISHOP_WALK+6) - S_NORMAL (BISH, 'A', 1, A_BishopDecide , &States[S_BISHOP_WALK+0]), - -#define S_BISHOP_ATK (S_BISHOP_DECIDE+1) - S_NORMAL (BISH, 'A', 3, A_FaceTarget , &States[S_BISHOP_ATK+1]), - S_BRIGHT (BISH, 'D', 3, A_FaceTarget , &States[S_BISHOP_ATK+2]), - S_BRIGHT (BISH, 'E', 3, A_FaceTarget , &States[S_BISHOP_ATK+3]), - S_BRIGHT (BISH, 'F', 3, A_BishopAttack , &States[S_BISHOP_ATK+4]), - S_BRIGHT (BISH, 'F', 5, A_BishopAttack2 , &States[S_BISHOP_ATK+4]), - -#define S_BISHOP_PAIN (S_BISHOP_ATK+5) - S_NORMAL (BISH, 'C', 6, A_Pain , &States[S_BISHOP_PAIN+1]), - S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+2]), - S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+3]), - S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+4]), - S_NORMAL (BISH, 'C', 0, NULL , &States[S_BISHOP_WALK+0]), - -#define S_BISHOP_DEATH (S_BISHOP_PAIN+5) - S_NORMAL (BISH, 'G', 6, NULL , &States[S_BISHOP_DEATH+1]), - S_BRIGHT (BISH, 'H', 6, A_Scream , &States[S_BISHOP_DEATH+2]), - S_BRIGHT (BISH, 'I', 5, A_NoBlocking , &States[S_BISHOP_DEATH+3]), - S_BRIGHT (BISH, 'J', 5, A_Explode , &States[S_BISHOP_DEATH+4]), - S_BRIGHT (BISH, 'K', 5, NULL , &States[S_BISHOP_DEATH+5]), - S_BRIGHT (BISH, 'L', 4, NULL , &States[S_BISHOP_DEATH+6]), - S_BRIGHT (BISH, 'M', 4, NULL , &States[S_BISHOP_DEATH+7]), - S_NORMAL (BISH, 'N', 4, A_BishopPuff , &States[S_BISHOP_DEATH+8]), - S_NORMAL (BISH, 'O', 4, A_QueueCorpse , &States[S_BISHOP_DEATH+9]), - S_NORMAL (BISH, 'P', -1, NULL , NULL), - -#define S_BISHOP_ICE (S_BISHOP_DEATH+10) - S_NORMAL (BISH, 'X', 5, A_FreezeDeath , &States[S_BISHOP_ICE+1]), - S_NORMAL (BISH, 'X', 1, A_FreezeDeathChunks , &States[S_BISHOP_ICE+1]) -}; - -IMPLEMENT_ACTOR (ABishop, Hexen, 114, 19) - PROP_SpawnHealth (130) - PROP_RadiusFixed (22) - PROP_HeightFixed (65) - PROP_SpeedFixed (10) - PROP_PainChance (110) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_FLOAT|MF_NOGRAVITY|MF_NOBLOOD) - PROP_Flags2 (MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP) - PROP_Flags3 (MF3_DONTOVERLAP) - PROP_Flags4 (MF4_NOTARGETSWITCH) - - PROP_SpawnState (S_BISHOP_LOOK) - PROP_SeeState (S_BISHOP_WALK) - PROP_PainState (S_BISHOP_PAIN) - PROP_MissileState (S_BISHOP_ATK) - PROP_DeathState (S_BISHOP_DEATH) - PROP_IDeathState (S_BISHOP_ICE) - - PROP_SeeSound ("BishopSight") - PROP_AttackSound ("BishopAttack") - PROP_PainSound ("BishopPain") - PROP_DeathSound ("BishopDeath") - PROP_ActiveSound ("BishopActiveSounds") - PROP_Obituary("$OB_BISHOP") -END_DEFAULTS - -void ABishop::GetExplodeParms (int &damage, int &distance, bool &hurtSource) -{ // Bishop radius death - damage = 25 + (pr_boom() & 15); -} - -// Bishop puff -------------------------------------------------------------- - -class ABishopPuff : public AActor -{ - DECLARE_ACTOR (ABishopPuff, AActor) -}; - -FState ABishopPuff::States[] = -{ - S_NORMAL (BISH, 'Q', 5, NULL , &States[1]), - S_NORMAL (BISH, 'R', 5, NULL , &States[2]), - S_NORMAL (BISH, 'S', 5, NULL , &States[3]), - S_NORMAL (BISH, 'T', 5, NULL , &States[4]), - S_NORMAL (BISH, 'U', 6, NULL , &States[5]), - S_NORMAL (BISH, 'V', 6, NULL , &States[6]), - S_NORMAL (BISH, 'W', 5, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ABishopPuff, Hexen, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (HX_SHADOW) - - PROP_SpawnState (0) -END_DEFAULTS - -// Bishop blur -------------------------------------------------------------- - -class ABishopBlur : public AActor -{ - DECLARE_ACTOR (ABishopBlur, AActor) -}; - -FState ABishopBlur::States[] = -{ - S_NORMAL (BISH, 'A', 16, NULL , &States[1]), - S_NORMAL (BISH, 'A', 8, A_SetAltShadow , NULL) -}; - -IMPLEMENT_ACTOR (ABishopBlur, Hexen, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (HX_SHADOW) - - PROP_SpawnState (0) -END_DEFAULTS - -// Bishop pain blur --------------------------------------------------------- - -class ABishopPainBlur : public AActor -{ - DECLARE_ACTOR (ABishopPainBlur, AActor) -}; - -FState ABishopPainBlur::States[] = -{ - S_NORMAL (BISH, 'C', 8, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ABishopPainBlur, Hexen, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (HX_SHADOW) - - PROP_SpawnState (0) -END_DEFAULTS - -// Bishop FX ---------------------------------------------------------------- - -class ABishopFX : public AActor -{ - DECLARE_ACTOR (ABishopFX, AActor) -public: - int DoSpecialDamage (AActor *target, int damage); -}; - -FState ABishopFX::States[] = -{ -#define S_BISHFX1 0 - S_BRIGHT (BPFX, 'A', 1, A_BishopMissileWeave , &States[S_BISHFX1+1]), - S_BRIGHT (BPFX, 'B', 1, A_BishopMissileWeave , &States[S_BISHFX1+2]), - S_BRIGHT (BPFX, 'A', 1, A_BishopMissileWeave , &States[S_BISHFX1+3]), - S_BRIGHT (BPFX, 'B', 1, A_BishopMissileWeave , &States[S_BISHFX1+4]), - S_BRIGHT (BPFX, 'B', 0, A_BishopMissileSeek , &States[S_BISHFX1+0]), - -#define S_BISHFXI1 (S_BISHFX1+5) - S_BRIGHT (BPFX, 'C', 4, NULL , &States[S_BISHFXI1+1]), - S_BRIGHT (BPFX, 'D', 4, NULL , &States[S_BISHFXI1+2]), - S_BRIGHT (BPFX, 'E', 4, NULL , &States[S_BISHFXI1+3]), - S_BRIGHT (BPFX, 'F', 4, NULL , &States[S_BISHFXI1+4]), - S_BRIGHT (BPFX, 'G', 3, NULL , &States[S_BISHFXI1+5]), - S_BRIGHT (BPFX, 'H', 3, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ABishopFX, Hexen, -1, 0) - PROP_RadiusFixed (10) - PROP_HeightFixed (6) - PROP_SpeedFixed (10) - PROP_Damage (1) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY) - PROP_Flags2 (MF2_NOTELEPORT|MF2_SEEKERMISSILE) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (S_BISHFX1) - PROP_DeathState (S_BISHFXI1) - - PROP_DeathSound ("BishopMissileExplode") -END_DEFAULTS - -int ABishopFX::DoSpecialDamage (AActor *target, int damage) -{ // Bishops are just too nasty - return damage >> 1; -} - //============================================================================ // // A_BishopAttack @@ -264,7 +54,7 @@ void A_BishopAttack2 (AActor *actor) actor->SetState (actor->SeeState); return; } - mo = P_SpawnMissile (actor, actor->target, RUNTIME_CLASS(ABishopFX)); + mo = P_SpawnMissile (actor, actor->target, PClass::FindClass("BishopFX")); if (mo != NULL) { mo->tracer = actor->target; @@ -302,17 +92,6 @@ void A_BishopMissileWeave (AActor *actor) actor->special2 = weaveZ + (weaveXY<<16); } -//============================================================================ -// -// A_BishopMissileSeek -// -//============================================================================ - -void A_BishopMissileSeek (AActor *actor) -{ - P_SeekerMissile (actor, ANGLE_1*2, ANGLE_1*3); -} - //============================================================================ // // A_BishopDecide @@ -327,7 +106,7 @@ void A_BishopDecide (AActor *actor) } else { - actor->SetState (&ABishop::States[S_BISHOP_BLUR]); + actor->SetState (actor->FindState ("Blur")); } } @@ -378,7 +157,7 @@ void A_BishopSpawnBlur (AActor *actor) actor->SetState (actor->MissileState); } } - mo = Spawn (actor->x, actor->y, actor->z, ALLOW_REPLACE); + mo = Spawn ("BishopBlur", actor->x, actor->y, actor->z, ALLOW_REPLACE); if (mo) { mo->angle = actor->angle; @@ -408,7 +187,7 @@ void A_BishopPuff (AActor *actor) { AActor *mo; - mo = Spawn (actor->x, actor->y, actor->z + 40*FRACUNIT, ALLOW_REPLACE); + mo = Spawn ("BishopPuff", actor->x, actor->y, actor->z + 40*FRACUNIT, ALLOW_REPLACE); if (mo) { mo->momz = FRACUNIT/2; @@ -427,27 +206,15 @@ void A_BishopPainBlur (AActor *actor) if (pr_pain() < 64) { - actor->SetState (&ABishop::States[S_BISHOP_BLUR]); + actor->SetState (actor->FindState ("Blur")); return; } fixed_t x = actor->x + (pr_pain.Random2()<<12); fixed_t y = actor->y + (pr_pain.Random2()<<12); fixed_t z = actor->z + (pr_pain.Random2()<<11); - mo = Spawn (x, y, z, ALLOW_REPLACE); + mo = Spawn ("BishopPainBlur", x, y, z, ALLOW_REPLACE); if (mo) { mo->angle = actor->angle; } } - -//========================================================================== -// -// A_SetAltShadow -// -//========================================================================== - -void A_SetAltShadow (AActor *actor) -{ - actor->alpha = HX_ALTSHADOW; - actor->RenderStyle = STYLE_Translucent; -} diff --git a/src/g_hexen/a_blastradius.cpp b/src/g_hexen/a_blastradius.cpp index 1d77d195af..26dc707b18 100644 --- a/src/g_hexen/a_blastradius.cpp +++ b/src/g_hexen/a_blastradius.cpp @@ -14,64 +14,14 @@ class AArtiBlastRadius : public AInventory { - DECLARE_ACTOR (AArtiBlastRadius, AInventory) + DECLARE_CLASS (AArtiBlastRadius, AInventory) public: bool Use (bool pickup); protected: void BlastActor (AActor *victim, fixed_t strength); }; -FState AArtiBlastRadius::States[] = -{ - S_BRIGHT (BLST, 'A', 4, NULL , &States[1]), - S_BRIGHT (BLST, 'B', 4, NULL , &States[2]), - S_BRIGHT (BLST, 'C', 4, NULL , &States[3]), - S_BRIGHT (BLST, 'D', 4, NULL , &States[4]), - S_BRIGHT (BLST, 'E', 4, NULL , &States[5]), - S_BRIGHT (BLST, 'F', 4, NULL , &States[6]), - S_BRIGHT (BLST, 'G', 4, NULL , &States[7]), - S_BRIGHT (BLST, 'H', 4, NULL , &States[0]), -}; -IMPLEMENT_ACTOR (AArtiBlastRadius, Hexen, 10110, 74) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_Inventory_DefMaxAmount - PROP_Inventory_PickupFlash (1) - PROP_Inventory_FlagsSet (IF_INVBAR|IF_FANCYPICKUPSOUND) - PROP_Inventory_Icon ("ARTIBLST") - PROP_Inventory_PickupSound ("misc/p_pkup") - PROP_Inventory_PickupMessage("$TXT_ARTIBLASTRADIUS") -END_DEFAULTS - -// Blast Effect ------------------------------------------------------------- - -class ABlastEffect : public AActor -{ - DECLARE_ACTOR (ABlastEffect, AActor) -}; - -FState ABlastEffect::States[] = -{ - S_NORMAL (RADE, 'A', 4, NULL , &States[1]), - S_NORMAL (RADE, 'B', 4, NULL , &States[2]), - S_NORMAL (RADE, 'C', 4, NULL , &States[3]), - S_NORMAL (RADE, 'D', 4, NULL , &States[4]), - S_NORMAL (RADE, 'E', 4, NULL , &States[5]), - S_NORMAL (RADE, 'F', 4, NULL , &States[6]), - S_NORMAL (RADE, 'G', 4, NULL , &States[7]), - S_NORMAL (RADE, 'H', 4, NULL , &States[8]), - S_NORMAL (RADE, 'I', 4, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ABlastEffect, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (TRANSLUC66) - - PROP_SpawnState (0) -END_DEFAULTS +IMPLEMENT_CLASS (AArtiBlastRadius) //========================================================================== // @@ -182,7 +132,7 @@ void AArtiBlastRadius::BlastActor (AActor *victim, fixed_t strength) x = victim->x + FixedMul (victim->radius+FRACUNIT, finecosine[ang]); y = victim->y + FixedMul (victim->radius+FRACUNIT, finesine[ang]); z = victim->z - victim->floorclip + (victim->height>>1); - mo = Spawn (x, y, z, ALLOW_REPLACE); + mo = Spawn ("BlastEffect", x, y, z, ALLOW_REPLACE); if (mo) { mo->momx = victim->momx; diff --git a/src/g_hexen/a_boostarmor.cpp b/src/g_hexen/a_boostarmor.cpp index ae18363c60..785332144a 100644 --- a/src/g_hexen/a_boostarmor.cpp +++ b/src/g_hexen/a_boostarmor.cpp @@ -10,35 +10,12 @@ class AArtiBoostArmor : public AInventory { - DECLARE_ACTOR (AArtiBoostArmor, AInventory) + DECLARE_CLASS (AArtiBoostArmor, AInventory) public: bool Use (bool pickup); }; -FState AArtiBoostArmor::States[] = -{ -#define S_ARTI_ARMOR1 0 - S_BRIGHT (BRAC, 'A', 4, NULL , &States[1]), - S_BRIGHT (BRAC, 'B', 4, NULL , &States[2]), - S_BRIGHT (BRAC, 'C', 4, NULL , &States[3]), - S_BRIGHT (BRAC, 'D', 4, NULL , &States[4]), - S_BRIGHT (BRAC, 'E', 4, NULL , &States[5]), - S_BRIGHT (BRAC, 'F', 4, NULL , &States[6]), - S_BRIGHT (BRAC, 'G', 4, NULL , &States[7]), - S_BRIGHT (BRAC, 'H', 4, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (AArtiBoostArmor, Hexen, 8041, 22) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_Inventory_DefMaxAmount - PROP_Inventory_PickupFlash (1) - PROP_Inventory_FlagsSet (IF_INVBAR|IF_FANCYPICKUPSOUND) - PROP_Inventory_Icon ("ARTIBRAC") - PROP_Inventory_PickupSound ("misc/p_pkup") - PROP_Inventory_PickupMessage("$TXT_ARTIBOOSTARMOR") -END_DEFAULTS +IMPLEMENT_CLASS (AArtiBoostArmor) bool AArtiBoostArmor::Use (bool pickup) { diff --git a/src/g_hexen/a_clericflame.cpp b/src/g_hexen/a_clericflame.cpp index ddbf809702..b328a35146 100644 --- a/src/g_hexen/a_clericflame.cpp +++ b/src/g_hexen/a_clericflame.cpp @@ -22,270 +22,17 @@ void A_CFlameRotate (AActor *); void A_CFlamePuff (AActor *); void A_CFlameMissile (AActor *); -// The Cleric's Flame Strike ------------------------------------------------ - -class ACWeapFlame : public AClericWeapon -{ - DECLARE_ACTOR (ACWeapFlame, AClericWeapon) -}; - -FState ACWeapFlame::States[] = -{ -#define S_CFLAME1 0 - S_BRIGHT (WCFM, 'A', 4, NULL , &States[S_CFLAME1+1]), - S_BRIGHT (WCFM, 'B', 4, NULL , &States[S_CFLAME1+2]), - S_BRIGHT (WCFM, 'C', 4, NULL , &States[S_CFLAME1+3]), - S_BRIGHT (WCFM, 'D', 4, NULL , &States[S_CFLAME1+4]), - S_BRIGHT (WCFM, 'E', 4, NULL , &States[S_CFLAME1+5]), - S_BRIGHT (WCFM, 'F', 4, NULL , &States[S_CFLAME1+6]), - S_BRIGHT (WCFM, 'G', 4, NULL , &States[S_CFLAME1+7]), - S_BRIGHT (WCFM, 'H', 4, NULL , &States[S_CFLAME1]), - -#define S_CFLAMEREADY (S_CFLAME1+8) - S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+1]), - S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+2]), - S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+3]), - S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+4]), - S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+5]), - S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+6]), - S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+7]), - S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+8]), - S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+9]), - S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+10]), - S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+11]), - S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY]), - -#define S_CFLAMEDOWN (S_CFLAMEREADY+12) - S_NORMAL (CFLM, 'A', 1, A_Lower , &States[S_CFLAMEDOWN]), - -#define S_CFLAMEUP (S_CFLAMEDOWN+1) - S_NORMAL (CFLM, 'A', 1, A_Raise , &States[S_CFLAMEUP]), - -#define S_CFLAMEATK (S_CFLAMEUP+1) - S_NORMAL2 (CFLM, 'A', 2, NULL , &States[S_CFLAMEATK+1], 0, 40), - S_NORMAL2 (CFLM, 'D', 2, NULL , &States[S_CFLAMEATK+2], 0, 50), - S_NORMAL2 (CFLM, 'D', 2, NULL , &States[S_CFLAMEATK+3], 0, 36), - S_BRIGHT (CFLM, 'E', 4, NULL , &States[S_CFLAMEATK+4]), - S_BRIGHT (CFLM, 'F', 4, A_CFlameAttack , &States[S_CFLAMEATK+5]), - S_BRIGHT (CFLM, 'E', 4, NULL , &States[S_CFLAMEATK+6]), - S_NORMAL2 (CFLM, 'G', 2, NULL , &States[S_CFLAMEATK+7], 0, 40), - S_NORMAL (CFLM, 'G', 2, NULL , &States[S_CFLAMEREADY]), -}; - -IMPLEMENT_ACTOR (ACWeapFlame, Hexen, 8009, 0) - PROP_Flags (MF_SPECIAL|MF_NOGRAVITY) - PROP_SpawnState (S_CFLAME1) - - PROP_Weapon_SelectionOrder (1000) - PROP_Weapon_AmmoUse1 (4) - PROP_Weapon_AmmoGive1 (25) - PROP_Weapon_UpState (S_CFLAMEUP) - PROP_Weapon_DownState (S_CFLAMEDOWN) - PROP_Weapon_ReadyState (S_CFLAMEREADY) - PROP_Weapon_AtkState (S_CFLAMEATK) - PROP_Weapon_Kickback (150) - PROP_Weapon_YAdjust (10) - PROP_Weapon_MoveCombatDist (27000000) - PROP_Weapon_AmmoType1 ("Mana2") - PROP_Weapon_ProjectileType ("CFlameMissile") - PROP_Inventory_PickupMessage("$TXT_WEAPON_C3") -END_DEFAULTS - -// Floor Flame -------------------------------------------------------------- - -class ACFlameFloor : public AActor -{ - DECLARE_ACTOR (ACFlameFloor, AActor) -}; - -FState ACFlameFloor::States[] = -{ - S_BRIGHT (CFFX, 'N', 5, NULL , &States[1]), - S_BRIGHT (CFFX, 'O', 4, NULL , &States[2]), - S_BRIGHT (CFFX, 'P', 3, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ACFlameFloor, Hexen, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (0) -END_DEFAULTS - -// Flame Puff --------------------------------------------------------------- - -class AFlamePuff : public AActor -{ - DECLARE_ACTOR (AFlamePuff, AActor) -}; - -FState AFlamePuff::States[] = -{ - S_BRIGHT (CFFX, 'A', 3, NULL , &States[1]), - S_BRIGHT (CFFX, 'B', 3, NULL , &States[2]), - S_BRIGHT (CFFX, 'C', 3, NULL , &States[3]), - S_BRIGHT (CFFX, 'D', 4, NULL , &States[4]), - S_BRIGHT (CFFX, 'E', 3, NULL , &States[5]), - S_BRIGHT (CFFX, 'F', 4, NULL , &States[6]), - S_BRIGHT (CFFX, 'G', 3, NULL , &States[7]), - S_BRIGHT (CFFX, 'H', 4, NULL , &States[8]), - S_BRIGHT (CFFX, 'I', 3, NULL , &States[9]), - S_BRIGHT (CFFX, 'J', 4, NULL , &States[10]), - S_BRIGHT (CFFX, 'K', 3, NULL , &States[11]), - S_BRIGHT (CFFX, 'L', 4, NULL , &States[12]), - S_BRIGHT (CFFX, 'M', 3, NULL , NULL), -}; - -IMPLEMENT_ACTOR (AFlamePuff, Hexen, -1, 0) - PROP_RadiusFixed (1) - PROP_HeightFixed (1) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (0) - - PROP_SeeSound ("ClericFlameExplode") - PROP_AttackSound ("ClericFlameExplode") -END_DEFAULTS - -// Flame Puff 2 ------------------------------------------------------------- - -class AFlamePuff2 : public AActor -{ - DECLARE_ACTOR (AFlamePuff2, AActor) -}; - -FState AFlamePuff2::States[] = -{ - S_BRIGHT (CFFX, 'A', 3, NULL , &States[1]), - S_BRIGHT (CFFX, 'B', 3, NULL , &States[2]), - S_BRIGHT (CFFX, 'C', 3, NULL , &States[3]), - S_BRIGHT (CFFX, 'D', 4, NULL , &States[4]), - S_BRIGHT (CFFX, 'E', 3, NULL , &States[5]), - S_BRIGHT (CFFX, 'F', 4, NULL , &States[6]), - S_BRIGHT (CFFX, 'G', 3, NULL , &States[7]), - S_BRIGHT (CFFX, 'H', 4, NULL , &States[8]), - S_BRIGHT (CFFX, 'I', 3, NULL , &States[9]), - S_BRIGHT (CFFX, 'C', 3, NULL , &States[10]), - S_BRIGHT (CFFX, 'D', 4, NULL , &States[11]), - S_BRIGHT (CFFX, 'E', 3, NULL , &States[12]), - S_BRIGHT (CFFX, 'F', 4, NULL , &States[13]), - S_BRIGHT (CFFX, 'G', 3, NULL , &States[14]), - S_BRIGHT (CFFX, 'H', 4, NULL , &States[15]), - S_BRIGHT (CFFX, 'I', 3, NULL , &States[16]), - S_BRIGHT (CFFX, 'J', 4, NULL , &States[17]), - S_BRIGHT (CFFX, 'K', 3, NULL , &States[18]), - S_BRIGHT (CFFX, 'L', 4, NULL , &States[19]), - S_BRIGHT (CFFX, 'M', 3, NULL , NULL), -}; - -IMPLEMENT_ACTOR (AFlamePuff2, Hexen, -1, 0) - PROP_RadiusFixed (1) - PROP_HeightFixed (1) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (0) - - PROP_SeeSound ("ClericFlameExplode") - PROP_AttackSound ("ClericFlameExplode") -END_DEFAULTS - -// Circle Flame ------------------------------------------------------------- - -class ACircleFlame : public AActor -{ - DECLARE_ACTOR (ACircleFlame, AActor) -public: - void GetExplodeParms (int &damage, int &dist, bool &hurtSource); -}; - -FState ACircleFlame::States[] = -{ -#define S_CIRCLE_FLAME1 0 - S_BRIGHT (CFCF, 'A', 4, NULL , &States[S_CIRCLE_FLAME1+1]), - S_BRIGHT (CFCF, 'B', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+2]), - S_BRIGHT (CFCF, 'C', 2, NULL , &States[S_CIRCLE_FLAME1+3]), - S_BRIGHT (CFCF, 'D', 1, NULL , &States[S_CIRCLE_FLAME1+4]), - S_BRIGHT (CFCF, 'E', 2, NULL , &States[S_CIRCLE_FLAME1+5]), - S_BRIGHT (CFCF, 'F', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+6]), - S_BRIGHT (CFCF, 'G', 1, NULL , &States[S_CIRCLE_FLAME1+7]), - S_BRIGHT (CFCF, 'H', 2, NULL , &States[S_CIRCLE_FLAME1+8]), - S_BRIGHT (CFCF, 'I', 2, NULL , &States[S_CIRCLE_FLAME1+9]), - S_BRIGHT (CFCF, 'J', 1, A_CFlameRotate , &States[S_CIRCLE_FLAME1+10]), - S_BRIGHT (CFCF, 'K', 2, NULL , &States[S_CIRCLE_FLAME1+11]), - S_BRIGHT (CFCF, 'L', 3, NULL , &States[S_CIRCLE_FLAME1+12]), - S_BRIGHT (CFCF, 'M', 3, NULL , &States[S_CIRCLE_FLAME1+13]), - S_BRIGHT (CFCF, 'N', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+14]), - S_BRIGHT (CFCF, 'O', 3, NULL , &States[S_CIRCLE_FLAME1+15]), - S_BRIGHT (CFCF, 'P', 2, NULL , NULL), - -#define S_CIRCLE_FLAME_X1 (S_CIRCLE_FLAME1+16) - S_BRIGHT (CFCF, 'Q', 3, NULL , &States[S_CIRCLE_FLAME_X1+1]), - S_BRIGHT (CFCF, 'R', 3, NULL , &States[S_CIRCLE_FLAME_X1+2]), - S_BRIGHT (CFCF, 'S', 3, A_Explode , &States[S_CIRCLE_FLAME_X1+3]), - S_BRIGHT (CFCF, 'T', 3, NULL , &States[S_CIRCLE_FLAME_X1+4]), - S_BRIGHT (CFCF, 'U', 3, NULL , &States[S_CIRCLE_FLAME_X1+5]), - S_BRIGHT (CFCF, 'V', 3, NULL , &States[S_CIRCLE_FLAME_X1+6]), - S_BRIGHT (CFCF, 'W', 3, NULL , &States[S_CIRCLE_FLAME_X1+7]), - S_BRIGHT (CFCF, 'X', 3, NULL , &States[S_CIRCLE_FLAME_X1+8]), - S_BRIGHT (CFCF, 'Y', 3, NULL , &States[S_CIRCLE_FLAME_X1+9]), - S_BRIGHT (CFCF, 'Z', 3, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ACircleFlame, Hexen, -1, 0) - PROP_RadiusFixed (6) - PROP_Damage (2) - PROP_DamageType (NAME_Fire) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (S_CIRCLE_FLAME1) - PROP_DeathState (S_CIRCLE_FLAME_X1) - - PROP_DeathSound ("ClericFlameCircle") -END_DEFAULTS - -void ACircleFlame::GetExplodeParms (int &damage, int &dist, bool &hurtSource) -{ - damage = 20; - hurtSource = false; -} - // Flame Missile ------------------------------------------------------------ class ACFlameMissile : public AActor { - DECLARE_ACTOR (ACFlameMissile, AActor) + DECLARE_CLASS (ACFlameMissile, AActor) public: void BeginPlay (); void Tick (); }; -FState ACFlameMissile::States[] = -{ -#define S_CFLAME_MISSILE1 0 - S_BRIGHT (CFFX, 'A', 4, NULL , &States[S_CFLAME_MISSILE1+1]), - S_NORMAL (CFFX, 'A', 1, A_CFlamePuff , &AFlamePuff::States[0]), - -#define S_CFLAME_MISSILE_X (S_CFLAME_MISSILE1+2) - S_BRIGHT (CFFX, 'A', 1, A_CFlameMissile , &AFlamePuff::States[0]), -}; - -IMPLEMENT_ACTOR (ACFlameMissile, Hexen, -1, 0) - PROP_SpeedFixed (200) - PROP_RadiusFixed (14) - PROP_HeightFixed (8) - PROP_Damage (8) - PROP_DamageType (NAME_Fire) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS) - PROP_RenderFlags (RF_INVISIBLE) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (S_CFLAME_MISSILE1) - PROP_DeathState (S_CFLAME_MISSILE_X) -END_DEFAULTS +IMPLEMENT_CLASS (ACFlameMissile) void ACFlameMissile::BeginPlay () { @@ -347,7 +94,7 @@ void ACFlameMissile::Tick () { newz = floorz; } - mo = Spawn (x, y, newz, ALLOW_REPLACE); + mo = Spawn ("CFlameFloor", x, y, newz, ALLOW_REPLACE); if (mo) { mo->angle = angle; @@ -432,7 +179,7 @@ void A_CFlameMissile (AActor *actor) { an = (i*ANG45)>>ANGLETOFINESHIFT; an90 = (i*ANG45+ANG90)>>ANGLETOFINESHIFT; - mo = Spawn (BlockingMobj->x+FixedMul(dist, finecosine[an]), + mo = Spawn ("CircleFlame", BlockingMobj->x+FixedMul(dist, finecosine[an]), BlockingMobj->y+FixedMul(dist, finesine[an]), BlockingMobj->z+5*FRACUNIT, ALLOW_REPLACE); if (mo) @@ -443,7 +190,7 @@ void A_CFlameMissile (AActor *actor) mo->momy = mo->special2 = FixedMul(FLAMESPEED, finesine[an]); mo->tics -= pr_missile()&3; } - mo = Spawn (BlockingMobj->x-FixedMul(dist, finecosine[an]), + mo = Spawn ("CircleFlame", BlockingMobj->x-FixedMul(dist, finecosine[an]), BlockingMobj->y-FixedMul(dist, finesine[an]), BlockingMobj->z+5*FRACUNIT, ALLOW_REPLACE); if(mo) @@ -455,7 +202,7 @@ void A_CFlameMissile (AActor *actor) mo->tics -= pr_missile()&3; } } - actor->SetState (&AFlamePuff2::States[0]); + actor->SetState (actor->SpawnState); } } diff --git a/src/g_hexen/a_heresiarch.cpp b/src/g_hexen/a_heresiarch.cpp index 4ce6d3340c..6d24a69c91 100644 --- a/src/g_hexen/a_heresiarch.cpp +++ b/src/g_hexen/a_heresiarch.cpp @@ -1284,7 +1284,7 @@ void A_SorcFX2Orbit (AActor *actor) void A_SpawnBishop(AActor *actor) { AActor *mo; - mo = Spawn (actor->x, actor->y, actor->z, ALLOW_REPLACE); + mo = Spawn("Bishop", actor->x, actor->y, actor->z, ALLOW_REPLACE); if (mo) { if (!P_TestMobjLocation(mo)) diff --git a/src/g_hexen/a_hexenglobal.h b/src/g_hexen/a_hexenglobal.h index dbc16d2a0d..a13c52f260 100644 --- a/src/g_hexen/a_hexenglobal.h +++ b/src/g_hexen/a_hexenglobal.h @@ -19,13 +19,6 @@ public: void BeginPlay (); }; -class ABishop : public AActor -{ - DECLARE_ACTOR (ABishop, AActor) -public: - void GetExplodeParms (int &damage, int &distance, bool &hurtSource); -}; - class AHeresiarch : public AActor { DECLARE_ACTOR (AHeresiarch, AActor) diff --git a/wadsrc/static/actors/hexen/bats.txt b/wadsrc/static/actors/hexen/bats.txt new file mode 100644 index 0000000000..0d1e080815 --- /dev/null +++ b/wadsrc/static/actors/hexen/bats.txt @@ -0,0 +1,48 @@ + +// Bat Spawner -------------------------------------------------------------- + +ACTOR BatSpawner : SwitchableDecoration 10225 +{ + Game Hexen + +NOBLOCKMAP +NOSECTOR +NOGRAVITY + RenderStyle None + + action native A_BatSpawnInit(); + action native A_BatSpawn(); + + States + { + Spawn: + Active: + TNT1 A 2 + TNT1 A 2 A_BatSpawnInit + TNT1 A 2 A_BatSpawn + Wait + Inactive: + TNT1 A -1 + Stop + } +} + +// Bat ---------------------------------------------------------------------- + +ACTOR Bat +{ + Speed 5 + Radius 3 + Height 3 + +NOBLOCKMAP +NOGRAVITY +MISSILE + +NOTELEPORT +CANPASS + + action native A_BatMove(); + + States + { + Spawn: + ABAT ABC 2 A_BatMove + Loop + Death: + ABAT A 2 + Stop + } +} diff --git a/wadsrc/static/actors/hexen/bishop.txt b/wadsrc/static/actors/hexen/bishop.txt new file mode 100644 index 0000000000..8901a95b36 --- /dev/null +++ b/wadsrc/static/actors/hexen/bishop.txt @@ -0,0 +1,156 @@ + +// Bishop ------------------------------------------------------------------- + +ACTOR Bishop 114 +{ + Game Hexen + SpawnID 19 + Health 130 + Radius 22 + Height 65 + Speed 10 + PainChance 110 + Monster + +FLOAT +NOGRAVITY +NOBLOOD + +TELESTOMP + +DONTOVERLAP + +NOTARGETSWITCH + SeeSound "BishopSight" + AttackSound "BishopAttack" + PainSound "BishopPain" + DeathSound "BishopDeath" + ActiveSound "BishopActiveSounds" + Obituary"$OB_BISHOP" + + action native A_BishopChase(); + action native A_BishopDecide(); + action native A_BishopDoBlur(); + action native A_BishopSpawnBlur(); + action native A_BishopPainBlur(); + action native A_BishopAttack(); + action native A_BishopAttack2(); + + States + { + Spawn: + BISH A 10 A_Look + Loop + See: + BISH A 2 A_Chase + BISH A 2 A_BishopChase + BISH A 2 + BISH B 2 A_BishopChase + BISH B 2 A_Chase + BISH B 2 A_BishopChase + BISH A 1 A_BishopDecide + Loop + Blur: + BISH A 2 A_BishopDoBlur + BISH A 4 A_BishopSpawnBlur + Wait + Pain: + BISH C 6 A_Pain + BISH CCC 6 A_BishopPainBlur + BISH C 0 + Goto See + Missile: + BISH A 3 A_FaceTarget + BISH DE 3 A_FaceTarget + BISH F 3 A_BishopAttack + BISH F 5 A_BishopAttack2 + Wait + Death: + BISH G 6 + BISH H 6 Bright A_Scream + BISH I 5 Bright A_NoBlocking + BISH J 5 BRIGHT A_Explode(random[BishopBoom](25,40)) + BISH K 5 Bright + BISH LM 4 Bright + BISH N 4 A_SpawnItemEx("BishopPuff", 0,0,40, 0,0,0.5) + BISH O 4 A_QueueCorpse + BISH P -1 + Stop + Ice: + BISH X 5 A_FreezeDeath + BISH X 1 A_FreezeDeathChunks + Wait + } +} + +// Bishop puff -------------------------------------------------------------- + +ACTOR BishopPuff +{ + Game Hexen + +NOBLOCKMAP +NOGRAVITY + RenderStyle Translucent + Alpha 0.6 + States + { + Spawn: + BISH QRST 5 + BISH UV 6 + BISH W 5 + Stop + } +} + +// Bishop pain blur --------------------------------------------------------- + +ACTOR BishopPainBlur +{ + Game Hexen + +NOBLOCKMAP +NOGRAVITY + RenderStyle Translucent + Alpha 0.6 + States + { + Spawn: + BISH C 8 + Stop + } +} + +// Bishop FX ---------------------------------------------------------------- + +ACTOR BishopFX +{ + Game Hexen + Radius 10 + Height 6 + Speed 10 + Damage 1 + Projectile + +SEEKERMISSILE + -ACTIVATEIMPACT -ACTIVATEPCROSS + +STRIFEDAMAGE + RenderStyle Add + DeathSound "BishopMissileExplode" + States + { + Spawn: + BPFX ABAB 1 Bright A_BishopMissileWeave + BPFX B 0 Bright A_SeekerMissile(2,3) + Loop + Death: + BPFX CDEF 4 Bright + BPFX GH 3 Bright + Stop + } +} + +// Bishop blur -------------------------------------------------------------- + +ACTOR BishopBlur +{ + +NOBLOCKMAP +NOGRAVITY + RenderStyle Translucent + Alpha 0.6 + States + { + Spawn: + BISH A 16 + BISH A 8 A_SetTranslucent(0.4) + Stop + } +} diff --git a/wadsrc/static/actors/hexen/blastradius.txt b/wadsrc/static/actors/hexen/blastradius.txt new file mode 100644 index 0000000000..0a77d024d5 --- /dev/null +++ b/wadsrc/static/actors/hexen/blastradius.txt @@ -0,0 +1,35 @@ + +ACTOR ArtiBlastRadius : Inventory 10110 native +{ + Game Hexen + SpawnID 74 + +FLOATBOB + Inventory.DefMaxAmount + Inventory.PickupFlash 1 + +INVBAR +FANCYPICKUPSOUND + Inventory.Icon "ARTIBLST" + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$TXT_ARTIBLASTRADIUS" + States + { + Spawn: + BLST ABCDEFGH 4 Bright + Loop + } +} + +// Blast Effect ------------------------------------------------------------- + +ACTOR BlastEffect +{ + +NOBLOCKMAP +NOGRAVITY +NOCLIP + +NOTELEPORT + RenderStyle Translucent + Alpha 0.666 + States + { + Spawn: + RADE ABCDEFGHI 4 + Stop + } +} diff --git a/wadsrc/static/actors/hexen/boostarmor.txt b/wadsrc/static/actors/hexen/boostarmor.txt new file mode 100644 index 0000000000..3bbe371d79 --- /dev/null +++ b/wadsrc/static/actors/hexen/boostarmor.txt @@ -0,0 +1,22 @@ + +// Boost Armor Artifact (Dragonskin Bracers) -------------------------------- + +ACTOR ArtiBoostArmor : Inventory 8041 native +{ + Game Hexen + SpawnID 22 + +COUNTITEM + +FLOATBOB + Inventory.DefMaxAmount + Inventory.PickupFlash 1 + +INVBAR +FANCYPICKUPSOUND + Inventory.Icon "ARTIBRAC" + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$TXT_ARTIBOOSTARMOR" + States + { + Spawn: + BRAC ABCDEFGH 4 Bright + Loop + } +} diff --git a/wadsrc/static/actors/hexen/clericflame.txt b/wadsrc/static/actors/hexen/clericflame.txt new file mode 100644 index 0000000000..e8ace5e976 --- /dev/null +++ b/wadsrc/static/actors/hexen/clericflame.txt @@ -0,0 +1,197 @@ + +// The Cleric's Flame Strike ------------------------------------------------ + +ACTOR CWeapFlame : ClericWeapon 8009 +{ + +NOGRAVITY + Weapon.SelectionOrder 1000 + Weapon.AmmoUse 4 + Weapon.AmmoGive 25 + Weapon.KickBack 150 + Weapon.YAdjust 10 + Weapon.AmmoType1 "Mana2" + Inventory.PickupMessage "$TXT_WEAPON_C3" + + action native A_CFlameAttack(); + + States + { + Spawn: + WCFM ABCDEFGH 4 Bright + Loop + Select: + CFLM A 1 A_Raise + Loop + Deselect: + CFLM A 1 A_Lower + Loop + Ready: + CFLM AAAABBBBCCCC 1 A_WeaponReady + Loop + Fire: + CFLM A 2 Offset (0, 40) + CFLM D 2 Offset (0, 50) + CFLM D 2 Offset (0, 36) + CFLM E 4 Bright + CFLM F 4 Bright A_CFlameAttack + CFLM E 4 Bright + CFLM G 2 Offset (0, 40) + CFLM G 2 + Goto Ready + } +} + +// Floor Flame -------------------------------------------------------------- + +ACTOR CFlameFloor +{ + Game Hexen + +NOBLOCKMAP +NOGRAVITY + RenderStyle Add + States + { + Spawn: + CFFX N 5 Bright + CFFX O 4 Bright + CFFX P 3 Bright + Stop + } +} + +// Flame Puff --------------------------------------------------------------- + +ACTOR FlamePuff +{ + Game Hexen + Radius 1 + Height 1 + +NOBLOCKMAP +NOGRAVITY + RenderStyle Add + SeeSound "ClericFlameExplode" + AttackSound "ClericFlameExplode" + States + { + Spawn: + CFFX ABC 3 Bright + CFFX D 4 Bright + CFFX E 3 Bright + CFFX F 4 Bright + CFFX G 3 Bright + CFFX H 4 Bright + CFFX I 3 Bright + CFFX J 4 Bright + CFFX K 3 Bright + CFFX L 4 Bright + CFFX M 3 Bright + Stop + } +} + +// Flame Puff 2 ------------------------------------------------------------- + +ACTOR FlamePuff2 : FlamePuff +{ + States + { + Spawn: + CFFX ABC 3 Bright + CFFX D 4 Bright + CFFX E 3 Bright + CFFX F 4 Bright + CFFX G 3 Bright + CFFX H 4 Bright + CFFX IC 3 Bright + CFFX D 4 Bright + CFFX E 3 Bright + CFFX F 4 Bright + CFFX G 3 Bright + CFFX H 4 Bright + CFFX I 3 Bright + CFFX J 4 Bright + CFFX K 3 Bright + CFFX L 4 Bright + CFFX M 3 Bright + Stop + } +} + +// Circle Flame ------------------------------------------------------------- + +ACTOR CircleFlame +{ + Game Hexen + Radius 6 + Damage 2 + DamageType "Fire" + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + RenderStyle Add + DeathSound "ClericFlameCircle" + + action native A_CFlameRotate(); + + States + { + Spawn: + CFCF A 4 Bright + CFCF B 2 Bright A_CFlameRotate + CFCF C 2 Bright + CFCF D 1 Bright + CFCF E 2 Bright + CFCF F 2 Bright A_CFlameRotate + CFCF G 1 Bright + CFCF HI 2 Bright + CFCF J 1 Bright A_CFlameRotate + CFCF K 2 Bright + CFCF LM 3 Bright + CFCF N 2 Bright A_CFlameRotate + CFCF O 3 Bright + CFCF P 2 Bright + Stop + Death: + CFCF QR 3 Bright + CFCF S 3 Bright A_Explode(20, 20, 0) + CFCF TUVWXYZ 3 Bright + Stop + } +} + +// Flame Missile ------------------------------------------------------------ + +ACTOR CFlameMissile native +{ + Speed 200 + Radius 14 + Height 8 + Damage 8 + DamageType "Fire" + Projectile + +INVISIBLE + -BLOODSPLATTER + RenderStyle Add + + action native A_CFlamePuff(); + action native A_CFlameMissile(); + + States + { + Spawn: + CFFX A 4 Bright + CFFX A 1 A_CFlamePuff + Goto Death + 1 + Death: + CFFX A 1 Bright A_CFlameMissile + CFFX ABC 3 Bright + CFFX D 4 Bright + CFFX E 3 Bright + CFFX F 4 Bright + CFFX G 3 Bright + CFFX H 4 Bright + CFFX I 3 Bright + CFFX J 4 Bright + CFFX K 3 Bright + CFFX L 4 Bright + CFFX M 3 Bright + Stop + } +} diff --git a/wadsrc/static/decorate.txt b/wadsrc/static/decorate.txt index 57c3a0b88f..6d1110528a 100644 --- a/wadsrc/static/decorate.txt +++ b/wadsrc/static/decorate.txt @@ -87,6 +87,11 @@ #include "actors/hexen/clericboss.txt" #include "actors/hexen/fighterboss.txt" #include "actors/hexen/mageboss.txt" +#include "actors/hexen/bats.txt" +#include "actors/hexen/bishop.txt" +#include "actors/hexen/blastradius.txt" +#include "actors/hexen/boostarmor.txt" +#include "actors/hexen/clericflame.txt" #include "actors/strife/strifeplayer.txt" #include "actors/strife/beggars.txt"