From d5cc9e01d0adff1e1bcf31135eea4d1349a90bfc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 4 Aug 2008 22:30:45 +0000 Subject: [PATCH] - Converted the PhoenixRod and associated classes to DECORATE to make the Heretic conversion complete. SVN r1110 (trunk) --- docs/rh-log.txt | 2 + src/actor.h | 2 + src/codepointers.h | 7 + src/g_heretic/a_chicken.cpp | 1 - src/g_heretic/a_dsparil.cpp | 1 - src/g_heretic/a_hereticglobal.h | 26 -- src/g_heretic/a_hereticmisc.cpp | 1 - src/g_heretic/a_hereticweaps.cpp | 187 +------- src/g_heretic/a_wizard.cpp | 1 - src/g_hexen/a_pig.cpp | 1 - src/g_shared/a_pickups.cpp | 1 - src/p_interaction.cpp | 3 +- src/thingdef/thingdef_properties.cpp | 1 + wadsrc/static/actors/heretic/hereticweaps.txt | 153 +++++- zdoom.vcproj | 438 +++++++++--------- 15 files changed, 397 insertions(+), 428 deletions(-) delete mode 100644 src/g_heretic/a_hereticglobal.h diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 1b23d5d22..9386f8c2a 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,6 @@ August 3, 2008 (Changes by Graf Zahl) +- Converted the PhoenixRod and associated classes to DECORATE to make + the Heretic conversion complete. - Converted the Minotaur's projectiles to DECORATE so that I can get rid of the AT_SPEED_SET code. - Converted Heretic's Blaster and SkullRod to DECORATE. diff --git a/src/actor.h b/src/actor.h index 67ee4dcda..5e94ed0f3 100644 --- a/src/actor.h +++ b/src/actor.h @@ -303,6 +303,8 @@ enum MF5_NOINTERACTION = 0x00200000, // Thing is completely excluded from any gameplay related checks MF5_NOTIMEFREEZE = 0x00400000, // Actor is not affected by time freezer MF5_PUFFGETSOWNER = 0x00800000, // [BB] Sets the owner of the puff to the player who fired it + MF5_SPECIALFIREDAMAGE=0x01000000, // Special treatment of PhoenixFX1 turned into a flag to removr + // dependence of main engine code of specific actor types. // --- mobj.renderflags --- diff --git a/src/codepointers.h b/src/codepointers.h index fa1dfe5b7..5ee793f8f 100644 --- a/src/codepointers.h +++ b/src/codepointers.h @@ -166,6 +166,13 @@ ACTOR(HideInCeiling) ACTOR(SkullRodStorm) ACTOR(RainImpact) ACTOR(MntrFloorFire) +ACTOR(FirePhoenixPL1) +ACTOR(InitPhoenixPL2) +ACTOR(FirePhoenixPL2) +ACTOR(ShutdownPhoenixPL2) +ACTOR(PhoenixPuff) +ACTOR(FlameEnd) +ACTOR(FloatPuff) ACTOR(BatSpawnInit) diff --git a/src/g_heretic/a_chicken.cpp b/src/g_heretic/a_chicken.cpp index 73ee1f84e..ef8827e08 100644 --- a/src/g_heretic/a_chicken.cpp +++ b/src/g_heretic/a_chicken.cpp @@ -6,7 +6,6 @@ #include "a_action.h" #include "a_pickups.h" #include "p_local.h" -#include "a_hereticglobal.h" #include "a_sharedglobal.h" #include "p_enemy.h" #include "d_event.h" diff --git a/src/g_heretic/a_dsparil.cpp b/src/g_heretic/a_dsparil.cpp index 6f0aff390..6171bf918 100644 --- a/src/g_heretic/a_dsparil.cpp +++ b/src/g_heretic/a_dsparil.cpp @@ -1,6 +1,5 @@ #include "actor.h" #include "info.h" -#include "a_hereticglobal.h" #include "p_local.h" #include "p_enemy.h" #include "a_action.h" diff --git a/src/g_heretic/a_hereticglobal.h b/src/g_heretic/a_hereticglobal.h deleted file mode 100644 index 3d1ff1921..000000000 --- a/src/g_heretic/a_hereticglobal.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __A_HERETICGLOBAL_H__ -#define __A_HERETICGLOBAL_H__ - -#include "info.h" -#include "a_pickups.h" - -class AHereticWeapon : public AWeapon -{ - DECLARE_STATELESS_ACTOR (AHereticWeapon, AWeapon) -}; - -class APhoenixFX1 : public AActor -{ - DECLARE_ACTOR (APhoenixFX1, AActor) -public: - int DoSpecialDamage (AActor *target, int damage); -}; - -class APhoenixPuff : public AActor -{ - DECLARE_ACTOR (APhoenixPuff, AActor) -}; - -void P_DSparilTeleport (AActor *actor); - -#endif //__A_HERETICGLOBAL_H__ diff --git a/src/g_heretic/a_hereticmisc.cpp b/src/g_heretic/a_hereticmisc.cpp index 3e3a24b31..0ad250953 100644 --- a/src/g_heretic/a_hereticmisc.cpp +++ b/src/g_heretic/a_hereticmisc.cpp @@ -2,7 +2,6 @@ #include "info.h" #include "p_enemy.h" #include "a_doomglobal.h" -#include "a_hereticglobal.h" #include "a_pickups.h" #include "a_action.h" #include "m_random.h" diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index 529c63544..7451aac04 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -4,7 +4,6 @@ #include "s_sound.h" #include "m_random.h" #include "a_pickups.h" -#include "a_hereticglobal.h" #include "d_player.h" #include "p_pspr.h" #include "p_local.h" @@ -39,6 +38,7 @@ static FRandom pr_fp2 ("FirePhoenixPL2"); #define FLAME_THROWER_TICS (10*TICRATE) +void P_DSparilTeleport (AActor *actor); #define USE_BLSR_AMMO_1 1 #define USE_BLSR_AMMO_2 5 @@ -51,12 +51,6 @@ static FRandom pr_fp2 ("FirePhoenixPL2"); extern bool P_AutoUseChaosDevice (player_t *player); -// Base Heretic weapon class ------------------------------------------------ - -IMPLEMENT_STATELESS_ACTOR (AHereticWeapon, Heretic, -1, 0) - PROP_Weapon_Kickback (150) -END_DEFAULTS - // --- Staff ---------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -1172,19 +1166,9 @@ void A_HideInCeiling (AActor *actor) // --- Phoenix Rod ---------------------------------------------------------- -void A_FirePhoenixPL1 (AActor *); -void A_InitPhoenixPL2 (AActor *); -void A_FirePhoenixPL2 (AActor *); -void A_ShutdownPhoenixPL2 (AActor *); -void A_PhoenixPuff (AActor *); -void A_FlameEnd (AActor *); -void A_FloatPuff (AActor *); - -// Phoenix Rod -------------------------------------------------------------- - -class APhoenixRod : public AHereticWeapon +class APhoenixRod : public AWeapon { - DECLARE_ACTOR (APhoenixRod, AHereticWeapon) + DECLARE_CLASS (APhoenixRod, AWeapon) public: void Serialize (FArchive &arc) { @@ -1196,113 +1180,32 @@ public: class APhoenixRodPowered : public APhoenixRod { - DECLARE_STATELESS_ACTOR (APhoenixRodPowered, APhoenixRod) + DECLARE_CLASS (APhoenixRodPowered, APhoenixRod) public: void EndPowerup (); }; -FState APhoenixRod::States[] = -{ -#define S_WPHX 0 - S_NORMAL (WPHX, 'A', -1, NULL , NULL), - -#define S_PHOENIXREADY (S_WPHX+1) - S_NORMAL (PHNX, 'A', 1, A_WeaponReady , &States[S_PHOENIXREADY]), - -#define S_PHOENIXDOWN (S_PHOENIXREADY+1) - S_NORMAL (PHNX, 'A', 1, A_Lower , &States[S_PHOENIXDOWN]), - -#define S_PHOENIXUP (S_PHOENIXDOWN+1) - S_NORMAL (PHNX, 'A', 1, A_Raise , &States[S_PHOENIXUP]), - -#define S_PHOENIXATK1 (S_PHOENIXUP+1) - S_NORMAL (PHNX, 'B', 5, NULL , &States[S_PHOENIXATK1+1]), - S_NORMAL (PHNX, 'C', 7, A_FirePhoenixPL1 , &States[S_PHOENIXATK1+2]), - S_NORMAL (PHNX, 'D', 4, NULL , &States[S_PHOENIXATK1+3]), - S_NORMAL (PHNX, 'B', 4, NULL , &States[S_PHOENIXATK1+4]), - S_NORMAL (PHNX, 'B', 0, A_ReFire , &States[S_PHOENIXREADY]), - -#define S_PHOENIXATK2 (S_PHOENIXATK1+5) - S_NORMAL (PHNX, 'B', 3, A_InitPhoenixPL2 , &States[S_PHOENIXATK2+1]), - S_BRIGHT (PHNX, 'C', 1, A_FirePhoenixPL2 , &States[S_PHOENIXATK2+2]), - S_NORMAL (PHNX, 'B', 4, A_ReFire , &States[S_PHOENIXATK2+3]), - S_NORMAL (PHNX, 'B', 4, A_ShutdownPhoenixPL2 , &States[S_PHOENIXREADY]) -}; - -IMPLEMENT_ACTOR (APhoenixRod, Heretic, 2003, 29) - PROP_Flags (MF_SPECIAL) - PROP_SpawnState (S_WPHX) - - PROP_Weapon_Flags (WIF_NOAUTOFIRE|WIF_BOT_REACTION_SKILL_THING) - PROP_Weapon_SelectionOrder (2600) - PROP_Weapon_AmmoUse1 (USE_PHRD_AMMO_1) - PROP_Weapon_AmmoGive1 (2) - PROP_Weapon_UpState (S_PHOENIXUP) - PROP_Weapon_DownState (S_PHOENIXDOWN) - PROP_Weapon_ReadyState (S_PHOENIXREADY) - PROP_Weapon_AtkState (S_PHOENIXATK1) - PROP_Weapon_YAdjust (15) - PROP_Weapon_MoveCombatDist (18350080) - PROP_Weapon_AmmoType1 ("PhoenixRodAmmo") - PROP_Weapon_SisterType ("PhoenixRodPowered") - PROP_Weapon_ProjectileType ("PhoenixFX1") - PROP_Inventory_PickupMessage("$TXT_WPNPHOENIXROD") -END_DEFAULTS - -IMPLEMENT_STATELESS_ACTOR (APhoenixRodPowered, Heretic, -1, 0) - PROP_Weapon_Flags (WIF_NOAUTOFIRE|WIF_POWERED_UP|WIF_BOT_MELEE) - PROP_Weapon_AmmoUse1 (USE_PHRD_AMMO_2) - PROP_Weapon_AmmoGive1 (0) - PROP_Weapon_AtkState (S_PHOENIXATK2) - PROP_Weapon_HoldAtkState (S_PHOENIXATK2+1) - PROP_Weapon_MoveCombatDist (0) - PROP_Weapon_SisterType ("PhoenixRod") - PROP_Weapon_ProjectileType ("PhoenixFX2") -END_DEFAULTS +IMPLEMENT_CLASS (APhoenixRod) +IMPLEMENT_CLASS (APhoenixRodPowered) void APhoenixRodPowered::EndPowerup () { - P_SetPsprite (Owner->player, ps_weapon, &APhoenixRod::States[S_PHOENIXREADY]); + P_SetPsprite (Owner->player, ps_weapon, SisterWeapon->GetReadyState()); DepleteAmmo (bAltFire); Owner->player->refire = 0; S_StopSound (Owner, CHAN_WEAPON); Owner->player->ReadyWeapon = SisterWeapon; } -// Phoenix FX 1 ------------------------------------------------------------- - -FState APhoenixFX1::States[] = +class APhoenixFX1 : public AActor { -#define S_PHOENIXFX1 0 - S_BRIGHT (FX04, 'A', 4, A_PhoenixPuff , &States[S_PHOENIXFX1+0]), - -#define S_PHOENIXFXI1 (S_PHOENIXFX1+1) - S_BRIGHT (FX08, 'A', 6, A_Explode , &States[S_PHOENIXFXI1+1]), - S_BRIGHT (FX08, 'B', 5, NULL , &States[S_PHOENIXFXI1+2]), - S_BRIGHT (FX08, 'C', 5, NULL , &States[S_PHOENIXFXI1+3]), - S_BRIGHT (FX08, 'D', 4, NULL , &States[S_PHOENIXFXI1+4]), - S_BRIGHT (FX08, 'E', 4, NULL , &States[S_PHOENIXFXI1+5]), - S_BRIGHT (FX08, 'F', 4, NULL , &States[S_PHOENIXFXI1+6]), - S_BRIGHT (FX08, 'G', 4, NULL , &States[S_PHOENIXFXI1+7]), - S_BRIGHT (FX08, 'H', 4, NULL , NULL) + DECLARE_CLASS (APhoenixFX1, AActor) +public: + int DoSpecialDamage (AActor *target, int damage); }; -IMPLEMENT_ACTOR (APhoenixFX1, Heretic, -1, 163) - PROP_RadiusFixed (11) - PROP_HeightFixed (8) - PROP_SpeedFixed (20) - PROP_Damage (20) - PROP_DamageType (NAME_Fire) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY) - PROP_Flags2 (MF2_THRUGHOST|MF2_NOTELEPORT|MF2_PCROSS|MF2_IMPACT) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (S_PHOENIXFX1) - PROP_DeathState (S_PHOENIXFXI1) - - PROP_SeeSound ("weapons/phoenixshoot") - PROP_DeathSound ("weapons/phoenixhit") -END_DEFAULTS +IMPLEMENT_CLASS (APhoenixFX1) int APhoenixFX1::DoSpecialDamage (AActor *target, int damage) { @@ -1314,70 +1217,16 @@ int APhoenixFX1::DoSpecialDamage (AActor *target, int damage) return damage; } -// Phoenix puff ------------------------------------------------------------- - -FState APhoenixPuff::States[] = -{ - S_NORMAL (FX04, 'B', 4, NULL , &States[1]), - S_NORMAL (FX04, 'C', 4, NULL , &States[2]), - S_NORMAL (FX04, 'D', 4, NULL , &States[3]), - S_NORMAL (FX04, 'E', 4, NULL , &States[4]), - S_NORMAL (FX04, 'F', 4, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APhoenixPuff, Heretic, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_Flags2 (MF2_NOTELEPORT|MF2_CANNOTPUSH) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (HR_SHADOW) - - PROP_SpawnState (0) -END_DEFAULTS - // Phoenix FX 2 ------------------------------------------------------------- class APhoenixFX2 : public AActor { - DECLARE_ACTOR (APhoenixFX2, AActor) + DECLARE_CLASS (APhoenixFX2, AActor) public: int DoSpecialDamage (AActor *target, int damage); }; -FState APhoenixFX2::States[] = -{ -#define S_PHOENIXFX2 0 - S_BRIGHT (FX09, 'A', 2, NULL , &States[S_PHOENIXFX2+1]), - S_BRIGHT (FX09, 'B', 2, NULL , &States[S_PHOENIXFX2+2]), - S_BRIGHT (FX09, 'A', 2, NULL , &States[S_PHOENIXFX2+3]), - S_BRIGHT (FX09, 'B', 2, NULL , &States[S_PHOENIXFX2+4]), - S_BRIGHT (FX09, 'A', 2, NULL , &States[S_PHOENIXFX2+5]), - S_BRIGHT (FX09, 'B', 2, A_FlameEnd , &States[S_PHOENIXFX2+6]), - S_BRIGHT (FX09, 'C', 2, NULL , &States[S_PHOENIXFX2+7]), - S_BRIGHT (FX09, 'D', 2, NULL , &States[S_PHOENIXFX2+8]), - S_BRIGHT (FX09, 'E', 2, NULL , &States[S_PHOENIXFX2+9]), - S_BRIGHT (FX09, 'F', 2, NULL , NULL), - -#define S_PHOENIXFXI2 (S_PHOENIXFX2+10) - S_BRIGHT (FX09, 'G', 3, NULL , &States[S_PHOENIXFXI2+1]), - S_BRIGHT (FX09, 'H', 3, A_FloatPuff , &States[S_PHOENIXFXI2+2]), - S_BRIGHT (FX09, 'I', 4, NULL , &States[S_PHOENIXFXI2+3]), - S_BRIGHT (FX09, 'J', 5, NULL , &States[S_PHOENIXFXI2+4]), - S_BRIGHT (FX09, 'K', 5, NULL , NULL) -}; - -IMPLEMENT_ACTOR (APhoenixFX2, Heretic, -1, 0) - PROP_RadiusFixed (6) - PROP_HeightFixed (8) - PROP_SpeedFixed (10) - PROP_Damage (2) - PROP_DamageType (NAME_Fire) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY) - PROP_Flags2 (MF2_NOTELEPORT|MF2_PCROSS|MF2_IMPACT) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (S_PHOENIXFX2) - PROP_DeathState (S_PHOENIXFXI2) -END_DEFAULTS +IMPLEMENT_CLASS (APhoenixFX2) int APhoenixFX2::DoSpecialDamage (AActor *target, int damage) { @@ -1430,13 +1279,13 @@ void A_PhoenixPuff (AActor *actor) //[RH] Heretic never sets the target for seeking //P_SeekerMissile (actor, ANGLE_1*5, ANGLE_1*10); - puff = Spawn (actor->x, actor->y, actor->z, ALLOW_REPLACE); + puff = Spawn("PhoenixPuff", actor->x, actor->y, actor->z, ALLOW_REPLACE); angle = actor->angle + ANG90; angle >>= ANGLETOFINESHIFT; puff->momx = FixedMul (FRACUNIT*13/10, finecosine[angle]); puff->momy = FixedMul (FRACUNIT*13/10, finesine[angle]); puff->momz = 0; - puff = Spawn (actor->x, actor->y, actor->z, ALLOW_REPLACE); + puff = Spawn("PhoenixPuff", actor->x, actor->y, actor->z, ALLOW_REPLACE); angle = actor->angle - ANG90; angle >>= ANGLETOFINESHIFT; puff->momx = FixedMul (FRACUNIT*13/10, finecosine[angle]); @@ -1490,7 +1339,7 @@ void A_FirePhoenixPL2 (AActor *actor) flamethrower = static_cast (player->ReadyWeapon); if (flamethrower == NULL || --flamethrower->FlameCount == 0) { // Out of flame - P_SetPsprite (player, ps_weapon, &APhoenixRod::States[S_PHOENIXATK2+3]); + P_SetPsprite (player, ps_weapon, flamethrower->FindState("Powerdown")); player->refire = 0; S_StopSound (actor, CHAN_WEAPON); return; @@ -1501,7 +1350,7 @@ void A_FirePhoenixPL2 (AActor *actor) z = actor->z + 26*FRACUNIT + finetangent[FINEANGLES/4-(actor->pitch>>ANGLETOFINESHIFT)]; z -= actor->floorclip; slope = finetangent[FINEANGLES/4-(actor->pitch>>ANGLETOFINESHIFT)] + (FRACUNIT/10); - mo = Spawn (x, y, z, ALLOW_REPLACE); + mo = Spawn("PhoenixFX2", x, y, z, ALLOW_REPLACE); mo->target = actor; mo->angle = angle; mo->momx = actor->momx + FixedMul (mo->Speed, finecosine[angle>>ANGLETOFINESHIFT]); diff --git a/src/g_heretic/a_wizard.cpp b/src/g_heretic/a_wizard.cpp index d35ab0534..431fb99bb 100644 --- a/src/g_heretic/a_wizard.cpp +++ b/src/g_heretic/a_wizard.cpp @@ -4,7 +4,6 @@ #include "s_sound.h" #include "p_local.h" #include "p_enemy.h" -#include "a_hereticglobal.h" #include "a_action.h" #include "gstrings.h" diff --git a/src/g_hexen/a_pig.cpp b/src/g_hexen/a_pig.cpp index 84b399b21..2a010a57d 100644 --- a/src/g_hexen/a_pig.cpp +++ b/src/g_hexen/a_pig.cpp @@ -6,7 +6,6 @@ #include "a_action.h" #include "a_pickups.h" #include "p_local.h" -#include "a_hereticglobal.h" #include "a_sharedglobal.h" #include "p_enemy.h" #include "d_event.h" diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index 46494ad8d..6c07211ab 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -6,7 +6,6 @@ #include "s_sound.h" #include "gi.h" #include "p_lnspec.h" -#include "a_hereticglobal.h" #include "sbar.h" #include "statnums.h" #include "c_dispatch.h" diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 76e5bb2ae..8101b44c8 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -48,7 +48,6 @@ #include "b_bot.h" //Added by MC: #include "a_doomglobal.h" -#include "a_hereticglobal.h" #include "ravenshared.h" #include "a_hexenglobal.h" #include "a_sharedglobal.h" @@ -1151,7 +1150,7 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage { // Check for flame death if (!inflictor || ((target->health > -50) && (damage > 25)) || - !inflictor->IsKindOf (RUNTIME_CLASS(APhoenixFX1))) + !(inflictor->flags5 & MF5_SPECIALFIREDAMAGE)) { target->DamageType = NAME_Fire; } diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index fd17e5733..24a18f267 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -243,6 +243,7 @@ static flagdef ActorFlags[]= DEFINE_FLAG(MF5, NOINTERACTION, AActor, flags5), DEFINE_FLAG(MF5, NOTIMEFREEZE, AActor, flags5), DEFINE_FLAG(MF5, PUFFGETSOWNER, AActor, flags5), // [BB] added PUFFGETSOWNER + DEFINE_FLAG(MF5, SPECIALFIREDAMAGE, AActor, flags5), // Effect flags DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects), diff --git a/wadsrc/static/actors/heretic/hereticweaps.txt b/wadsrc/static/actors/heretic/hereticweaps.txt index 70ca3a494..80f7d3434 100644 --- a/wadsrc/static/actors/heretic/hereticweaps.txt +++ b/wadsrc/static/actors/heretic/hereticweaps.txt @@ -1,9 +1,9 @@ -/* + ACTOR HereticWeapon : Weapon { Weapon.Kickback 150 } -*/ + // Staff -------------------------------------------------------------------- @@ -661,7 +661,7 @@ ACTOR MaceSpawner : SpecialSpot 2002 // Blaster ------------------------------------------------------------------ -ACTOR Blaster : Weapon 53 +ACTOR Blaster : HereticWeapon 53 { Game Heretic SpawnID 28 @@ -812,7 +812,7 @@ ACTOR BlasterPuff // Skull (Horn) Rod --------------------------------------------------------- -ACTOR SkullRod : Weapon 2004 +ACTOR SkullRod : HereticWeapon 2004 { Game Heretic SpawnID 30 @@ -975,3 +975,148 @@ ACTOR RainTracker : Inventory native } +// Phoenix Rod -------------------------------------------------------------- + +ACTOR PhoenixRod : Weapon 2003 native +{ + Game Heretic + SpawnID 29 + +WEAPON.NOAUTOFIRE + Weapon.SelectionOrder 2600 + Weapon.Kickback 150 + Weapon.YAdjust 15 + Weapon.AmmoUse 1 + Weapon.AmmoGive 2 + Weapon.AmmoType "PhoenixRodAmmo" + Weapon.Sisterweapon "PhoenixRodPowered" + Inventory.PickupMessage "$TxT_WPNPHOENIxROD" + + action native A_FirePhoenixPL1(); + + States + { + Spawn: + WPHX A -1 + Stop + Ready: + PHNX A 1 A_WeaponReady + Loop + Deselect: + PHNX A 1 A_Lower + Loop + Select: + PHNX A 1 A_Raise + Loop + Fire: + PHNX B 5 + PHNX C 7 A_FirePhoenixPL1 + PHNX DB 4 + PHNX B 0 A_ReFire + Goto Ready + } +} + +ACTOR PhoenixRodPowered : PhoenixRod native +{ + +WEAPON.POWERED_UP + Weapon.SisterWeapon "PhoenixRod" + Weapon.AmmoGive 0 + + action native A_InitPhoenixPL2(); + action native A_FirePhoenixPL2(); + action native A_ShutdownPhoenixPL2(); + + States + { + Fire: + PHNX B 3 A_InitPhoenixPL2 + Hold: + PHNX C 1 A_FirePhoenixPL2 + PHNX B 4 A_ReFire + Powerdown: + PHNX B 4 A_ShutdownPhoenixPL2 + Goto Ready + } +} + +// Phoenix FX 1 ------------------------------------------------------------- + +ACTOR PhoenixFX1 native +{ + Game Heretic + SpawnID 163 + Radius 11 + Height 8 + Speed 20 + Damage 20 + DamageType Fire + Projectile + +THRUGHOST + +SPECIALFIREDAMAGE + SeeSound "weapons/phoenixshoot" + DeathSound "weapons/phoenixhit" + + action native A_PhoenixPuff(); + + States + { + Spawn: + FX04 A 4 BRIGHT A_PhoenixPuff + Loop + Death: + FX08 A 6 BRIGHT A_Explode + FX08 BC 5 BRIGHT + FX08 DEFGH 4 BRIGHT + Stop + } +} + +// Phoenix puff ------------------------------------------------------------- + +ACTOR PhoenixPuff +{ + +NOBLOCKMAP + +NOGRAVITY + +NOTELEPORT + +CANNOTPUSH + RenderStyle Translucent + Alpha 0.4 + States + { + Spawn: + FX04 BCDEF 4 + Stop + } +} + +// Phoenix FX 2 ------------------------------------------------------------- + +ACTOR PhoenixFX2 native +{ + Radius 6 + Height 8 + Speed 10 + Damage 2 + DamageType Fire + Projectile + RenderStyle Add + + action native A_FlameEnd(); + action native A_FloatPuff(); + + States + { + Spawn: + FX09 ABABA 2 BRIGHT + FX09 B 2 BRIGHT A_FlameEnd + FX09 CDEF 2 BRIGHT + Stop + Death: + FX09 G 3 BRIGHT + FX09 H 3 BRIGHT A_FloatPuff + FX09 I 4 BRIGHT + FX09 JK 5 BRIGHT + Stop + } +} + diff --git a/zdoom.vcproj b/zdoom.vcproj index 5477eb8ae..118350af9 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - @@ -953,6 +943,16 @@ Outputs=""src/$(InputName).h"" /> + + + @@ -1547,6 +1547,16 @@ Outputs="$(IntDir)\$(InputName).obj" /> + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - @@ -1935,6 +1927,14 @@ Outputs="$(IntDir)\$(InputName).obj" /> + + + - - @@ -2812,14 +2808,6 @@ AdditionalIncludeDirectories="src\win32;$(NoInherit)" /> - - - @@ -2829,6 +2817,14 @@ AdditionalIncludeDirectories="src\win32;$(NoInherit)" /> + + + @@ -3103,7 +3099,7 @@ />