diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 4b8847189..bd7acf7b9 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,7 @@ August 8, 2008 (Changes by Graf Zahl) +- Converted teleport fog and destinations to DECORATE. +- AActor::PreExplode is gone now that the last item that was using it has been converted. +- Converted the Sigil and the remaining things in a_strifeitems.cpp to DECORATE. - Exported Point pushers, CustomSprite and AmbientSound to DECORATE. - Changed increased lightning damage for Centaurs into a damage factor. - Changed PoisonCloud and Lightning special treatment in P_DamageMobj to use damage diff --git a/src/actor.h b/src/actor.h index 235733198..b29f3d7af 100644 --- a/src/actor.h +++ b/src/actor.h @@ -482,9 +482,6 @@ public: // Called when actor dies virtual void Die (AActor *source, AActor *inflictor); - // Called by A_Explode just before exploding the actor - virtual void PreExplode (); - // Called by A_Explode to find out how much damage to do virtual void GetExplodeParms (int &damage, int &dist, bool &hurtSource); diff --git a/src/codepointers.h b/src/codepointers.h index db9a2534d..e64eecfdb 100644 --- a/src/codepointers.h +++ b/src/codepointers.h @@ -253,7 +253,6 @@ ACTOR(ZapMimic) WEAPON(MStaffAttack) WEAPON(MStaffPalette) ACTOR(MStaffTrack) -ACTOR(BeAdditive) ACTOR(FiredRocks) ACTOR(FiredChase) ACTOR(FiredAttack) @@ -365,6 +364,16 @@ ACTOR(MaulerTorpedoWave) ACTOR(BurnArea) ACTOR(Burnination) ACTOR(FireGrenade) +ACTOR(SelectPiece) +ACTOR(SelectSigilView) +ACTOR(SelectSigilDown) +ACTOR(SelectSigilAttack) +ACTOR(SigilCharge) +ACTOR(FireSigil1) +ACTOR(FireSigil2) +ACTOR(FireSigil3) +ACTOR(FireSigil4) +ACTOR(FireSigil5) // Special code pointers for Strife's player - not to be used elsewhere! ACTOR(ItBurnsItBurns) diff --git a/src/dthinker.h b/src/dthinker.h index b1e1d6f06..a77d7f28b 100644 --- a/src/dthinker.h +++ b/src/dthinker.h @@ -133,6 +133,9 @@ public: TThinkerIterator (FName subclass, int statnum=MAX_STATNUM+1) : FThinkerIterator(PClass::FindClass(subclass), statnum) { } + TThinkerIterator (ENamedName subclass, int statnum=MAX_STATNUM+1) : FThinkerIterator(PClass::FindClass(subclass), statnum) + { + } TThinkerIterator (const char *subclass, int statnum=MAX_STATNUM+1) : FThinkerIterator(PClass::FindClass(subclass), statnum) { } diff --git a/src/g_doom/a_fatso.cpp b/src/g_doom/a_fatso.cpp index b98d0eea4..f4f94f1bb 100644 --- a/src/g_doom/a_fatso.cpp +++ b/src/g_doom/a_fatso.cpp @@ -131,7 +131,11 @@ void A_Mushroom (AActor *actor) } if (spawntype == NULL) spawntype = PClass::FindClass("FatShot"); - A_Explode (actor); // First make normal explosion + P_RadiusAttack (actor, actor->target, 128, 128, actor->DamageType, true); + if (actor->z <= actor->floorz + (128<RenderStyle = STYLE_Add; -} - class AMageStaffFX2 : public AActor { DECLARE_CLASS(AMageStaffFX2, AActor) public: - void GetExplodeParms (int &damage, int &dist, bool &hurtSource); int SpecialMissileHit (AActor *victim); bool IsOkayToAttack (AActor *link); bool SpecialBlastHandling (AActor *source, fixed_t strength); @@ -97,13 +91,6 @@ public: IMPLEMENT_CLASS (AMageStaffFX2) -void AMageStaffFX2::GetExplodeParms (int &damage, int &dist, bool &hurtSource) -{ - damage = 80; - dist = 192; - hurtSource = false; -} - int AMageStaffFX2::SpecialMissileHit (AActor *victim) { if (victim != target && diff --git a/src/g_shared/a_sharedglobal.h b/src/g_shared/a_sharedglobal.h index 15e511917..5bfaba702 100644 --- a/src/g_shared/a_sharedglobal.h +++ b/src/g_shared/a_sharedglobal.h @@ -80,16 +80,11 @@ private: class ATeleportFog : public AActor { - DECLARE_ACTOR (ATeleportFog, AActor) + DECLARE_CLASS (ATeleportFog, AActor) public: void PostBeginPlay (); }; -class ATeleportDest : public AActor -{ - DECLARE_STATELESS_ACTOR (ATeleportDest, AActor) -}; - class ASkyViewpoint : public AActor { DECLARE_STATELESS_ACTOR (ASkyViewpoint, AActor) diff --git a/src/g_strife/a_strifeglobal.h b/src/g_strife/a_strifeglobal.h index 534e387ae..0407a415d 100644 --- a/src/g_strife/a_strifeglobal.h +++ b/src/g_strife/a_strifeglobal.h @@ -9,9 +9,8 @@ // a fire or electric death. class ADegninOre : public AInventory { - DECLARE_ACTOR (ADegninOre, AInventory) + DECLARE_CLASS (ADegninOre, AInventory) public: - void GetExplodeParms (int &damage, int &dist, bool &hurtSource); bool Use (bool pickup); }; @@ -27,39 +26,40 @@ public: class ADummyStrifeItem : public AInventory { - DECLARE_ACTOR (ADummyStrifeItem, AInventory) + DECLARE_CLASS (ADummyStrifeItem, AInventory) }; class AUpgradeStamina : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AUpgradeStamina, ADummyStrifeItem) + DECLARE_CLASS (AUpgradeStamina, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; class AUpgradeAccuracy : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AUpgradeAccuracy, ADummyStrifeItem) + DECLARE_CLASS (AUpgradeAccuracy, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; class ASlideshowStarter : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (ASlideshowStarter, ADummyStrifeItem) + DECLARE_CLASS (ASlideshowStarter, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; class ASigil : public AWeapon { - DECLARE_ACTOR (ASigil, AWeapon) + DECLARE_CLASS (ASigil, AWeapon) public: bool HandlePickup (AInventory *item); AInventory *CreateCopy (AActor *other); void Serialize (FArchive &arc); bool SpecialDropAction (AActor *dropper); static int GiveSigilPiece (AActor *daPlayer); + void BeginPlay(); int NumPieces, DownPieces; }; diff --git a/src/g_strife/a_strifeitems.cpp b/src/g_strife/a_strifeitems.cpp index c068e595c..725e924b8 100644 --- a/src/g_strife/a_strifeitems.cpp +++ b/src/g_strife/a_strifeitems.cpp @@ -15,51 +15,7 @@ // Degnin Ore --------------------------------------------------------------- -void A_RemoveForceField (AActor *); - -FState ADegninOre::States[] = -{ - S_NORMAL (XPRK, 'A', -1, NULL, NULL), - - S_NORMAL (XPRK, 'A', 1, A_RemoveForceField, &States[2]), - S_BRIGHT (BNG3, 'A', 3, A_ExplodeAndAlert, &States[3]), - S_BRIGHT (BNG3, 'B', 3, NULL, &States[4]), - S_BRIGHT (BNG3, 'C', 3, NULL, &States[5]), - S_BRIGHT (BNG3, 'D', 3, NULL, &States[6]), - S_BRIGHT (BNG3, 'E', 3, NULL, &States[7]), - S_BRIGHT (BNG3, 'F', 3, NULL, &States[8]), - S_BRIGHT (BNG3, 'G', 3, NULL, &States[9]), - S_BRIGHT (BNG3, 'H', 3, NULL, NULL), -}; - -IMPLEMENT_ACTOR (ADegninOre, Strife, 59, 0) - PROP_StrifeType (128) - PROP_StrifeTeaserType (124) - PROP_StrifeTeaserType2 (127) - PROP_SpawnHealth (10) - PROP_SpawnState (0) - PROP_DeathState (1) - PROP_RadiusFixed (16) - PROP_HeightFixed (16) - PROP_Inventory_MaxAmount (10) - PROP_Flags (MF_SPECIAL|MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Flags4 (MF4_INCOMBAT) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("Degnin_Ore") // "Thalite_Ore" in the Teaser - PROP_DeathSound ("ore/explode") - PROP_Inventory_Icon ("I_XPRK") - PROP_Inventory_PickupMessage("$TXT_DEGNINORE") -END_DEFAULTS - -void ADegninOre::GetExplodeParms (int &damage, int &dist, bool &hurtSource) -{ - damage = dist = 192; - RenderStyle = STYLE_Add; // [RH] Make the explosion glow - - // Does Strife automatically play the death sound on death? - S_Sound (this, CHAN_BODY, DeathSound, 1, ATTN_NORM); -} +IMPLEMENT_CLASS(ADegninOre) void A_RemoveForceField (AActor *self) { @@ -103,59 +59,22 @@ bool ADegninOre::Use (bool pickup) } } -// Gun Training ------------------------------------------------------------- - -class AGunTraining : public AInventory -{ - DECLARE_ACTOR (AGunTraining, AInventory) -}; - -FState AGunTraining::States[] = -{ - S_NORMAL (GUNT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AGunTraining, Strife, -1, 0) - PROP_StrifeType (310) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR|IF_UNDROPPABLE) - PROP_Inventory_MaxAmount (100) - PROP_Tag ("Accuracy") - PROP_Inventory_Icon ("I_GUNT") -END_DEFAULTS - // Health Training ---------------------------------------------------------- class AHealthTraining : public AInventory { - DECLARE_ACTOR (AHealthTraining, AInventory) + DECLARE_CLASS (AHealthTraining, AInventory) public: bool TryPickup (AActor *toucher); }; -FState AHealthTraining::States[] = -{ - S_NORMAL (HELT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AHealthTraining, Strife, -1, 0) - PROP_StrifeType (309) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR|IF_UNDROPPABLE) - PROP_Inventory_MaxAmount (100) - PROP_Tag ("Toughness") - PROP_Inventory_Icon ("I_HELT") -END_DEFAULTS +IMPLEMENT_CLASS (AHealthTraining) bool AHealthTraining::TryPickup (AActor *toucher) { if (Super::TryPickup (toucher)) { - toucher->GiveInventoryType (RUNTIME_CLASS(AGunTraining)); + toucher->GiveInventoryType (PClass::FindClass("GunTraining")); AInventory *coin = Spawn (0,0,0, NO_REPLACE); if (coin != NULL) { @@ -174,30 +93,12 @@ bool AHealthTraining::TryPickup (AActor *toucher) class AScanner : public APowerupGiver { - DECLARE_ACTOR (AScanner, APowerupGiver) + DECLARE_CLASS (AScanner, APowerupGiver) public: bool Use (bool pickup); }; -FState AScanner::States[] = -{ - S_BRIGHT (PMUP, 'A', 6, NULL, &States[1]), - S_BRIGHT (PMUP, 'B', 6, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AScanner, Strife, 2027, 0) - PROP_StrifeType (165) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_MaxAmount (1) - PROP_Inventory_FlagsClear (IF_FANCYPICKUPSOUND) - PROP_Tag ("scanner") - PROP_Inventory_Icon ("I_PMUP") - PROP_PowerupGiver_Powerup ("PowerScanner") - PROP_Inventory_PickupSound ("misc/i_pkup") - PROP_Inventory_PickupMessage("$TXT_SCANNER") -END_DEFAULTS +IMPLEMENT_CLASS (AScanner) bool AScanner::Use (bool pickup) { @@ -216,26 +117,13 @@ bool AScanner::Use (bool pickup) class APrisonPass : public AKey { - DECLARE_ACTOR (APrisonPass, AKey) + DECLARE_CLASS (APrisonPass, AKey) public: bool TryPickup (AActor *toucher); bool SpecialDropAction (AActor *dropper); }; -FState APrisonPass::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APrisonPass, Strife, -1, 0) - PROP_StrifeType (304) - PROP_StrifeTeaserType (286) - PROP_StrifeTeaserType2 (303) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_TOKN") - PROP_Tag ("Prison_pass") - PROP_Inventory_PickupMessage("$TXT_PRISONPASS") -END_DEFAULTS +IMPLEMENT_CLASS (APrisonPass) bool APrisonPass::TryPickup (AActor *toucher) { @@ -268,32 +156,19 @@ bool APrisonPass::SpecialDropAction (AActor *dropper) // actions and cannot be held. ---------------------------------------------- //--------------------------------------------------------------------------- -FState ADummyStrifeItem::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADummyStrifeItem, Strife, -1, 0) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) -END_DEFAULTS +IMPLEMENT_CLASS (ADummyStrifeItem) // Sound the alarm! --------------------------------------------------------- class ARaiseAlarm : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (ARaiseAlarm, ADummyStrifeItem) + DECLARE_CLASS (ARaiseAlarm, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); bool SpecialDropAction (AActor *dropper); }; -IMPLEMENT_STATELESS_ACTOR (ARaiseAlarm, Strife, -1, 0) - PROP_StrifeType (301) - PROP_StrifeTeaserType (283) - PROP_StrifeTeaserType2 (300) - PROP_Tag ("alarm") -END_DEFAULTS +IMPLEMENT_CLASS (ARaiseAlarm) bool ARaiseAlarm::TryPickup (AActor *toucher) { @@ -318,16 +193,12 @@ bool ARaiseAlarm::SpecialDropAction (AActor *dropper) class AOpenDoor222 : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AOpenDoor222, ADummyStrifeItem) + DECLARE_CLASS (AOpenDoor222, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; -IMPLEMENT_STATELESS_ACTOR (AOpenDoor222, Strife, -1, 0) - PROP_StrifeType (302) - PROP_StrifeTeaserType (284) - PROP_StrifeTeaserType2 (301) -END_DEFAULTS +IMPLEMENT_CLASS (AOpenDoor222) bool AOpenDoor222::TryPickup (AActor *toucher) { @@ -340,17 +211,13 @@ bool AOpenDoor222::TryPickup (AActor *toucher) class ACloseDoor222 : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (ACloseDoor222, ADummyStrifeItem) + DECLARE_CLASS (ACloseDoor222, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); bool SpecialDropAction (AActor *dropper); }; -IMPLEMENT_STATELESS_ACTOR (ACloseDoor222, Strife, -1, 0) - PROP_StrifeType (303) - PROP_StrifeTeaserType (285) - PROP_StrifeTeaserType2 (302) -END_DEFAULTS +IMPLEMENT_CLASS (ACloseDoor222) bool ACloseDoor222::TryPickup (AActor *toucher) { @@ -375,15 +242,13 @@ bool ACloseDoor222::SpecialDropAction (AActor *dropper) class AOpenDoor224 : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AOpenDoor224, ADummyStrifeItem) + DECLARE_CLASS (AOpenDoor224, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); bool SpecialDropAction (AActor *dropper); }; -IMPLEMENT_STATELESS_ACTOR (AOpenDoor224, Strife, -1, 0) - PROP_StrifeType (305) -END_DEFAULTS +IMPLEMENT_CLASS (AOpenDoor224) bool AOpenDoor224::TryPickup (AActor *toucher) { @@ -403,17 +268,12 @@ bool AOpenDoor224::SpecialDropAction (AActor *dropper) class AAmmoFillup : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AAmmoFillup, ADummyStrifeItem) + DECLARE_CLASS (AAmmoFillup, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; -IMPLEMENT_STATELESS_ACTOR (AAmmoFillup, Strife, -1, 0) - PROP_StrifeType (298) - PROP_StrifeTeaserType (280) - PROP_StrifeTeaserType2 (297) - PROP_Tag ("Ammo") -END_DEFAULTS +IMPLEMENT_CLASS (AAmmoFillup) bool AAmmoFillup::TryPickup (AActor *toucher) { @@ -446,17 +306,12 @@ bool AAmmoFillup::TryPickup (AActor *toucher) class AHealthFillup : public ADummyStrifeItem { - DECLARE_STATELESS_ACTOR (AHealthFillup, ADummyStrifeItem) + DECLARE_CLASS (AHealthFillup, ADummyStrifeItem) public: bool TryPickup (AActor *toucher); }; -IMPLEMENT_STATELESS_ACTOR (AHealthFillup, Strife, -1, 0) - PROP_StrifeType (299) - PROP_StrifeTeaserType (281) - PROP_StrifeTeaserType2 (298) - PROP_Tag ("Health") -END_DEFAULTS +IMPLEMENT_CLASS (AHealthFillup) bool AHealthFillup::TryPickup (AActor *toucher) { @@ -473,13 +328,7 @@ bool AHealthFillup::TryPickup (AActor *toucher) // Upgrade Stamina ---------------------------------------------------------- -IMPLEMENT_STATELESS_ACTOR (AUpgradeStamina, Strife, -1, 0) - PROP_StrifeType (306) - PROP_StrifeTeaserType (287) - PROP_StrifeTeaserType2 (307) - PROP_Inventory_Amount (10) - PROP_Inventory_MaxAmount (100) -END_DEFAULTS +IMPLEMENT_CLASS (AUpgradeStamina) bool AUpgradeStamina::TryPickup (AActor *toucher) { @@ -497,11 +346,7 @@ bool AUpgradeStamina::TryPickup (AActor *toucher) // Upgrade Accuracy --------------------------------------------------------- -IMPLEMENT_STATELESS_ACTOR (AUpgradeAccuracy, Strife, -1, 0) - PROP_StrifeType (307) - PROP_StrifeTeaserType (288) - PROP_StrifeTeaserType2 (308) -END_DEFAULTS +IMPLEMENT_CLASS (AUpgradeAccuracy) bool AUpgradeAccuracy::TryPickup (AActor *toucher) { @@ -514,9 +359,7 @@ bool AUpgradeAccuracy::TryPickup (AActor *toucher) // Start a slideshow -------------------------------------------------------- -IMPLEMENT_STATELESS_ACTOR (ASlideshowStarter, Strife, -1, 0) - PROP_StrifeType (343) -END_DEFAULTS +IMPLEMENT_CLASS (ASlideshowStarter) bool ASlideshowStarter::TryPickup (AActor *toucher) { diff --git a/src/g_strife/a_strifeweapons.cpp b/src/g_strife/a_strifeweapons.cpp index db3a28274..f06450b9e 100644 --- a/src/g_strife/a_strifeweapons.cpp +++ b/src/g_strife/a_strifeweapons.cpp @@ -689,183 +689,18 @@ void A_FireGrenade (AActor *self) // The Almighty Sigil! ------------------------------------------------------ -void A_SelectPiece (AActor *); -void A_SelectSigilView (AActor *); -void A_SelectSigilDown (AActor *); -void A_SelectSigilAttack (AActor *); -void A_SigilCharge (AActor *); -void A_FireSigil1 (AActor *); -void A_FireSigil2 (AActor *); -void A_FireSigil3 (AActor *); -void A_FireSigil4 (AActor *); -void A_FireSigil5 (AActor *); -void A_LightInverse (AActor *); +IMPLEMENT_CLASS(ASigil) -FState ASigil::States[] = +//============================================================================ +// +// ASigil :: Serialize +// +//============================================================================ + +void ASigil::BeginPlay() { - S_NORMAL (SIGL, 'A', 0, NULL, &States[1]), - S_NORMAL (SIGL, 'A', -1, A_SelectPiece, NULL), - S_NORMAL (SIGL, 'B', -1, NULL, NULL), - S_NORMAL (SIGL, 'C', -1, NULL, NULL), - S_NORMAL (SIGL, 'D', -1, NULL, NULL), - S_NORMAL (SIGL, 'E', -1, NULL, NULL), - -#define S_SIGIL 6 - S_BRIGHT (SIGH, 'A', 0, A_SelectSigilView, &States[S_SIGIL+1]), - S_BRIGHT (SIGH, 'A', 1, A_WeaponReady, &States[S_SIGIL+1]), - S_BRIGHT (SIGH, 'B', 1, A_WeaponReady, &States[S_SIGIL+2]), - S_BRIGHT (SIGH, 'C', 1, A_WeaponReady, &States[S_SIGIL+3]), - S_BRIGHT (SIGH, 'D', 1, A_WeaponReady, &States[S_SIGIL+4]), - S_BRIGHT (SIGH, 'E', 1, A_WeaponReady, &States[S_SIGIL+5]), - -#define S_SIGILDOWN (S_SIGIL+6) - S_BRIGHT (SIGH, 'A', 0, A_SelectSigilDown, &States[S_SIGILDOWN+1]), - S_BRIGHT (SIGH, 'A', 1, A_Lower, &States[S_SIGILDOWN+1]), - S_BRIGHT (SIGH, 'B', 1, A_Lower, &States[S_SIGILDOWN+2]), - S_BRIGHT (SIGH, 'C', 1, A_Lower, &States[S_SIGILDOWN+3]), - S_BRIGHT (SIGH, 'D', 1, A_Lower, &States[S_SIGILDOWN+4]), - S_BRIGHT (SIGH, 'E', 1, A_Lower, &States[S_SIGILDOWN+5]), - -#define S_SIGILUP (S_SIGILDOWN+6) - S_BRIGHT (SIGH, 'A', 0, A_SelectSigilView, &States[S_SIGILUP+1]), - S_BRIGHT (SIGH, 'A', 1, A_Raise, &States[S_SIGILUP+1]), - S_BRIGHT (SIGH, 'B', 1, A_Raise, &States[S_SIGILUP+2]), - S_BRIGHT (SIGH, 'C', 1, A_Raise, &States[S_SIGILUP+3]), - S_BRIGHT (SIGH, 'D', 1, A_Raise, &States[S_SIGILUP+4]), - S_BRIGHT (SIGH, 'E', 1, A_Raise, &States[S_SIGILUP+5]), - -#define S_SIGILATK (S_SIGILUP+6) - S_BRIGHT (SIGH, 'A', 0, A_SelectSigilAttack, &States[S_SIGILATK+1]), - - S_BRIGHT (SIGH, 'A', 18, A_SigilCharge, &States[S_SIGILATK+2]), - S_BRIGHT (SIGH, 'A', 3, A_GunFlash, &States[S_SIGILATK+3]), - S_NORMAL (SIGH, 'A', 10, A_FireSigil1, &States[S_SIGILATK+4]), - S_NORMAL (SIGH, 'A', 5, NULL, &States[S_SIGIL]), - - S_BRIGHT (SIGH, 'B', 18, A_SigilCharge, &States[S_SIGILATK+6]), - S_BRIGHT (SIGH, 'B', 3, A_GunFlash, &States[S_SIGILATK+7]), - S_NORMAL (SIGH, 'B', 10, A_FireSigil2, &States[S_SIGILATK+8]), - S_NORMAL (SIGH, 'B', 5, NULL, &States[S_SIGIL]), - - S_BRIGHT (SIGH, 'C', 18, A_SigilCharge, &States[S_SIGILATK+10]), - S_BRIGHT (SIGH, 'C', 3, A_GunFlash, &States[S_SIGILATK+11]), - S_NORMAL (SIGH, 'C', 10, A_FireSigil3, &States[S_SIGILATK+12]), - S_NORMAL (SIGH, 'C', 5, NULL, &States[S_SIGIL]), - - S_BRIGHT (SIGH, 'D', 18, A_SigilCharge, &States[S_SIGILATK+14]), - S_BRIGHT (SIGH, 'D', 3, A_GunFlash, &States[S_SIGILATK+15]), - S_NORMAL (SIGH, 'D', 10, A_FireSigil4, &States[S_SIGILATK+16]), - S_NORMAL (SIGH, 'D', 5, NULL, &States[S_SIGIL]), - - S_BRIGHT (SIGH, 'E', 18, A_SigilCharge, &States[S_SIGILATK+18]), - S_BRIGHT (SIGH, 'E', 3, A_GunFlash, &States[S_SIGILATK+19]), - S_NORMAL (SIGH, 'E', 10, A_FireSigil5, &States[S_SIGILATK+20]), - S_NORMAL (SIGH, 'E', 5, NULL, &States[S_SIGIL]), - -#define S_SIGILFLASH (S_SIGILATK+1+4*5) - S_BRIGHT (SIGF, 'A', 4, A_Light2, &States[S_SIGILFLASH+1]), - S_BRIGHT (SIGF, 'B', 6, A_LightInverse, &States[S_SIGILFLASH+2]), - S_BRIGHT (SIGF, 'C', 4, A_Light1, &States[S_SIGILFLASH+3]), - S_BRIGHT (SIGF, 'C', 0, A_Light0, NULL) -}; - -IMPLEMENT_ACTOR (ASigil, Strife, -1, 0) - PROP_Weapon_SelectionOrder (4000) - PROP_Weapon_UpState (S_SIGILUP) - PROP_Weapon_DownState (S_SIGILDOWN) - PROP_Weapon_ReadyState (S_SIGIL) - PROP_Weapon_AtkState (S_SIGILATK) - PROP_Weapon_FlashState (S_SIGILFLASH) - PROP_Sigil_NumPieces (1) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Weapon_FlagsSet (WIF_CHEATNOTWEAPON) - PROP_Inventory_PickupSound("weapons/sigilcharge") - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL1") - PROP_Inventory_PickupMessage("$TXT_SIGIL") -END_DEFAULTS - -// Sigil 1 ------------------------------------------------------------------ - -class ASigil1 : public ASigil -{ - DECLARE_STATELESS_ACTOR (ASigil1, ASigil) -}; - -IMPLEMENT_STATELESS_ACTOR (ASigil1, Strife, 77, 0) - PROP_Sigil_NumPieces (1) - PROP_StrifeType (196) - PROP_StrifeTeaserType (190) - PROP_StrifeTeaserType2 (194) - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL1") -END_DEFAULTS - -// Sigil 2 ------------------------------------------------------------------ - -class ASigil2 : public ASigil -{ - DECLARE_STATELESS_ACTOR (ASigil2, ASigil) -}; - -IMPLEMENT_STATELESS_ACTOR (ASigil2, Strife, 78, 0) - PROP_Sigil_NumPieces (2) - PROP_StrifeType (197) - PROP_StrifeTeaserType (191) - PROP_StrifeTeaserType2 (195) - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL2") -END_DEFAULTS - -// Sigil 3 ------------------------------------------------------------------ - -class ASigil3 : public ASigil -{ - DECLARE_STATELESS_ACTOR (ASigil3, ASigil) -}; - -IMPLEMENT_STATELESS_ACTOR (ASigil3, Strife, 79, 0) - PROP_Sigil_NumPieces (3) - PROP_StrifeType (198) - PROP_StrifeTeaserType (192) - PROP_StrifeTeaserType2 (196) - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL3") -END_DEFAULTS - -// Sigil 4 ------------------------------------------------------------------ - -class ASigil4 : public ASigil -{ - DECLARE_STATELESS_ACTOR (ASigil4, ASigil) -}; - -IMPLEMENT_STATELESS_ACTOR (ASigil4, Strife, 80, 0) - PROP_Sigil_NumPieces (4) - PROP_StrifeType (199) - PROP_StrifeTeaserType (193) - PROP_StrifeTeaserType2 (197) - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL4") -END_DEFAULTS - -// Sigil 5 ------------------------------------------------------------------ - -class ASigil5 : public ASigil -{ - DECLARE_STATELESS_ACTOR (ASigil5, ASigil) -}; - -IMPLEMENT_STATELESS_ACTOR (ASigil5, Strife, 81, 0) - PROP_Sigil_NumPieces (5) - PROP_StrifeType (200) - PROP_StrifeTeaserType (194) - PROP_StrifeTeaserType2 (198) - PROP_Tag ("SIGIL") - PROP_Inventory_Icon ("I_SGL5") -END_DEFAULTS + NumPieces = health; +} //============================================================================ // @@ -944,7 +779,7 @@ void A_SelectPiece (AActor *self) if (pieces > 1) { - self->SetState (&ASigil::States[pieces]); + self->SetState (self->FindState("Spawn")+pieces); } } @@ -1242,7 +1077,7 @@ int ASigil::GiveSigilPiece (AActor *receiver) sigil = receiver->FindInventory (); if (sigil == NULL) { - sigil = Spawn (0,0,0, NO_REPLACE); + sigil = static_cast(Spawn("Sigil1", 0,0,0, NO_REPLACE)); if (!sigil->TryPickup (receiver)) { sigil->Destroy (); @@ -1252,15 +1087,11 @@ int ASigil::GiveSigilPiece (AActor *receiver) else if (sigil->NumPieces < 5) { ++sigil->NumPieces; - static const PClass *const sigils[5] = + static const char* sigils[5] = { - RUNTIME_CLASS(ASigil1), - RUNTIME_CLASS(ASigil2), - RUNTIME_CLASS(ASigil3), - RUNTIME_CLASS(ASigil4), - RUNTIME_CLASS(ASigil5) + "Sigil1", "Sigil2", "Sigil3", "Sigil4", "Sigil5" }; - sigil->Icon = ((AInventory*)GetDefaultByType (sigils[MAX(0,sigil->NumPieces-1)]))->Icon; + sigil->Icon = ((AInventory*)GetDefaultByName (sigils[MAX(0,sigil->NumPieces-1)]))->Icon; // If the player has the Sigil out, drop it and bring it back up. if (sigil->Owner->player != NULL && sigil->Owner->player->ReadyWeapon == sigil) { diff --git a/src/namedef.h b/src/namedef.h index 8d7a503f5..e4492b74b 100644 --- a/src/namedef.h +++ b/src/namedef.h @@ -11,6 +11,7 @@ xx(Doom) xx(Heretic) xx(Hexen) xx(Strife) +xx(Raven) // blood spawning xx(Blood) @@ -134,6 +135,8 @@ xx(Mauler) xx(AcolyteBlue) xx(SpectralLightningV1) +xx(TeleportDest) +xx(TeleportDest2) // Strife's spectres xx(AlienSpectre1) diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp index f170fbce8..a64b9a423 100644 --- a/src/p_enemy.cpp +++ b/src/p_enemy.cpp @@ -2601,16 +2601,6 @@ void A_Explode (AActor *thing) } } -void A_ExplodeAndAlert (AActor *thing) -{ - A_Explode (thing); - if (thing->target != NULL && thing->target->player != NULL) - { - validcount++; - P_RecursiveSound (thing->Sector, thing->target, false, 0); - } -} - bool CheckBossDeath (AActor *actor) { int i; diff --git a/src/p_enemy.h b/src/p_enemy.h index 179a4568f..91538e731 100644 --- a/src/p_enemy.h +++ b/src/p_enemy.h @@ -47,7 +47,6 @@ void A_Pain (AActor *actor); void A_Die (AActor *actor); void A_Detonate (AActor *mo); void A_Explode (AActor *thing); -void A_ExplodeAndAlert (AActor *thing); void A_Mushroom (AActor *actor); void A_BossDeath (AActor *actor); void A_FireScream (AActor *mo); diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 5c15f15a7..e7ff83811 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -2288,10 +2288,6 @@ angle_t AActor::AngleIncrements () return ANGLE_45; } -void AActor::PreExplode () -{ -} - void AActor::GetExplodeParms (int &damage, int &dist, bool &hurtSource) { } diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index bc85782a8..a90160c03 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -40,107 +40,25 @@ extern void P_CalcHeight (player_t *player); CVAR (Bool, telezoom, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); -FState ATeleportFog::States[] = -{ -#define S_DTFOG 0 - S_BRIGHT (TFOG, 'A', 6, NULL , &States[S_DTFOG+1]), - S_BRIGHT (TFOG, 'B', 6, NULL , &States[S_DTFOG+2]), - S_BRIGHT (TFOG, 'A', 6, NULL , &States[S_DTFOG+3]), - S_BRIGHT (TFOG, 'B', 6, NULL , &States[S_DTFOG+4]), - S_BRIGHT (TFOG, 'C', 6, NULL , &States[S_DTFOG+5]), - S_BRIGHT (TFOG, 'D', 6, NULL , &States[S_DTFOG+6]), - S_BRIGHT (TFOG, 'E', 6, NULL , &States[S_DTFOG+7]), - S_BRIGHT (TFOG, 'F', 6, NULL , &States[S_DTFOG+8]), - S_BRIGHT (TFOG, 'G', 6, NULL , &States[S_DTFOG+9]), - S_BRIGHT (TFOG, 'H', 6, NULL , &States[S_DTFOG+10]), - S_BRIGHT (TFOG, 'I', 6, NULL , &States[S_DTFOG+11]), - S_BRIGHT (TFOG, 'J', 6, NULL , NULL), - -#define S_HTFOG (S_DTFOG+12) - S_BRIGHT (TELE, 'A', 6, NULL , &States[S_HTFOG+1]), - S_BRIGHT (TELE, 'B', 6, NULL , &States[S_HTFOG+2]), - S_BRIGHT (TELE, 'C', 6, NULL , &States[S_HTFOG+3]), - S_BRIGHT (TELE, 'D', 6, NULL , &States[S_HTFOG+4]), - S_BRIGHT (TELE, 'E', 6, NULL , &States[S_HTFOG+5]), - S_BRIGHT (TELE, 'F', 6, NULL , &States[S_HTFOG+6]), - S_BRIGHT (TELE, 'G', 6, NULL , &States[S_HTFOG+7]), - S_BRIGHT (TELE, 'H', 6, NULL , &States[S_HTFOG+8]), - S_BRIGHT (TELE, 'G', 6, NULL , &States[S_HTFOG+9]), - S_BRIGHT (TELE, 'F', 6, NULL , &States[S_HTFOG+10]), - S_BRIGHT (TELE, 'E', 6, NULL , &States[S_HTFOG+11]), - S_BRIGHT (TELE, 'D', 6, NULL , &States[S_HTFOG+12]), - S_BRIGHT (TELE, 'C', 6, NULL , NULL), - -#define S_STFOG (S_HTFOG+13) - S_BRIGHT (TFOG, 'A', 6, NULL , &States[S_STFOG+1]), - S_BRIGHT (TFOG, 'B', 6, NULL , &States[S_STFOG+2]), - S_BRIGHT (TFOG, 'C', 6, NULL , &States[S_STFOG+3]), - S_BRIGHT (TFOG, 'D', 6, NULL , &States[S_STFOG+4]), - S_BRIGHT (TFOG, 'E', 6, NULL , &States[S_STFOG+5]), - S_BRIGHT (TFOG, 'F', 6, NULL , &States[S_STFOG+6]), - S_BRIGHT (TFOG, 'E', 6, NULL , &States[S_STFOG+7]), - S_BRIGHT (TFOG, 'D', 6, NULL , &States[S_STFOG+8]), - S_BRIGHT (TFOG, 'C', 6, NULL , &States[S_STFOG+9]), - S_BRIGHT (TFOG, 'B', 6, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ATeleportFog, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Add) -END_DEFAULTS - -AT_GAME_SET (TeleportFog) -{ - ATeleportFog *def = GetDefault(); - - if (gameinfo.gametype == GAME_Doom) - { - def->SpawnState = &ATeleportFog::States[S_DTFOG]; - } - else if (gameinfo.gametype == GAME_Strife) - { - def->SpawnState = &ATeleportFog::States[S_STFOG]; - } - else - { - def->SpawnState = &ATeleportFog::States[S_HTFOG]; - } -} +IMPLEMENT_CLASS (ATeleportFog) void ATeleportFog::PostBeginPlay () { Super::PostBeginPlay (); S_Sound (this, CHAN_BODY, "misc/teleport", 1, ATTN_NORM); + switch (gameinfo.gametype) + { + case GAME_Hexen: + case GAME_Heretic: + SetState(FindState(NAME_Raven)); + break; + + case GAME_Strife: + SetState(FindState(NAME_Strife)); + break; + } } -IMPLEMENT_STATELESS_ACTOR (ATeleportDest, Any, 14, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR) - PROP_Flags3(MF3_DONTSPLASH) -END_DEFAULTS - -// Teleport dest that can spawn above floor - -class ATeleportDest2 : public ATeleportDest -{ - DECLARE_STATELESS_ACTOR (ATeleportDest2, ATeleportDest) -}; - -IMPLEMENT_STATELESS_ACTOR (ATeleportDest2, Any, 9044, 0) - PROP_FlagsSet (MF_NOGRAVITY) -END_DEFAULTS - -// Z-preserving dest subject to gravity (for TeleportGroup, etc.) - -class ATeleportDest3 : public ATeleportDest2 -{ - DECLARE_STATELESS_ACTOR (ATeleportDest3, ATeleportDest2) -}; - -IMPLEMENT_STATELESS_ACTOR (ATeleportDest3, Any, 9043, 0) - PROP_FlagsClear (MF_NOGRAVITY) -END_DEFAULTS - //========================================================================== // // P_SpawnTeleportFog @@ -340,7 +258,7 @@ static AActor *SelectTeleDest (int tid, int tag) if (tid != 0) { - TActorIterator iterator (tid); + NActorIterator iterator (NAME_TeleportDest, tid); int count = 0; while ( (searcher = iterator.Next ()) ) { @@ -405,7 +323,7 @@ static AActor *SelectTeleDest (int tid, int tag) // teleport destination. This means if 50 sectors have a matching tag and // only the last one has a destination, *every* actor is scanned at least 49 // times. Yuck. - TThinkerIterator it2; + TThinkerIterator it2(NAME_TeleportDest); while ((searcher = it2.Next()) != NULL) { if (searcher->Sector == sectors + secnum) @@ -464,7 +382,7 @@ bool EV_Teleport (int tid, int tag, line_t *line, int side, AActor *thing, bool z = searcher->z; } - else if (searcher->IsKindOf (RUNTIME_CLASS(ATeleportDest2))) + else if (searcher->IsKindOf (PClass::FindClass(NAME_TeleportDest2))) { z = searcher->z; } @@ -709,7 +627,7 @@ bool EV_TeleportGroup (int group_tid, AActor *victim, int source_tid, int dest_t } { - TActorIterator iterator (dest_tid); + NActorIterator iterator (NAME_TeleportDest, dest_tid); destOrigin = iterator.Next (); } if (destOrigin == NULL) @@ -718,7 +636,7 @@ bool EV_TeleportGroup (int group_tid, AActor *victim, int source_tid, int dest_t } bool didSomething = false; - bool floorz = !destOrigin->IsKindOf (RUNTIME_CLASS(ATeleportDest2)); + bool floorz = !destOrigin->IsKindOf (PClass::FindClass("TeleportDest2")); // Use the passed victim if group_tid is 0 if (group_tid == 0 && victim != NULL) @@ -764,7 +682,7 @@ bool EV_TeleportSector (int tag, int source_tid, int dest_tid, bool fog, int gro return false; } { - TActorIterator iterator (dest_tid); + NActorIterator iterator (NAME_TeleportDest, dest_tid); destOrigin = iterator.Next (); } if (destOrigin == NULL) @@ -773,7 +691,7 @@ bool EV_TeleportSector (int tag, int source_tid, int dest_tid, bool fog, int gro } bool didSomething = false; - bool floorz = !destOrigin->IsKindOf (RUNTIME_CLASS(ATeleportDest2)); + bool floorz = !destOrigin->IsKindOf (PClass::FindClass("TeleportDest2")); int secnum; secnum = -1; diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 876fc31d7..701883afa 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -290,8 +290,8 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld) void P_TranslateTeleportThings () { - ATeleportDest *dest; - TThinkerIterator iterator; + AActor *dest; + TThinkerIterator iterator(NAME_TeleportDest); bool foundSomething = false; while ( (dest = iterator.Next()) ) diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index 04b644bfa..3ad82d00e 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -1890,7 +1890,7 @@ static void InventoryIcon (FScanner &sc, AInventory *defaults, Baggage &bag) // Don't print warnings if the item is for another game or if this is a shareware IWAD. // Strife's teaser doesn't contain all the icon graphics of the full game. if ((bag.Info->GameFilter == GAME_Any || bag.Info->GameFilter & gameinfo.gametype) && - !(gameinfo.flags&GI_SHAREWARE)) + !(gameinfo.flags&GI_SHAREWARE) && Wads.GetLumpFile(sc.LumpNum) != 0) { Printf("Icon '%s' for '%s' not found\n", sc.String, bag.Info->Class->TypeName.GetChars()); } diff --git a/wadsrc/static/actors/hexen/fighterhammer.txt b/wadsrc/static/actors/hexen/fighterhammer.txt index 455b6c17b..63585b1cc 100644 --- a/wadsrc/static/actors/hexen/fighterhammer.txt +++ b/wadsrc/static/actors/hexen/fighterhammer.txt @@ -61,8 +61,6 @@ ACTOR HammerMissile Projectile DeathSound "FighterHammerExplode" - action native A_BeAdditive(); - States { Spawn: @@ -71,7 +69,7 @@ ACTOR HammerMissile FHFX CDEFGH 2 Bright Loop Death: - FHFX I 3 Bright A_BeAdditive + FHFX I 3 Bright A_SetTranslucent(1,1) FHFX J 3 Bright FHFX K 3 Bright A_Explode (128, 128, 0) FHFX LM 3 Bright diff --git a/wadsrc/static/actors/hexen/magestaff.txt b/wadsrc/static/actors/hexen/magestaff.txt index 35e1a8846..3bf0a1a9b 100644 --- a/wadsrc/static/actors/hexen/magestaff.txt +++ b/wadsrc/static/actors/hexen/magestaff.txt @@ -128,7 +128,6 @@ ACTOR MageStaffFX2 native DeathSound "MageStaffExplode" action native A_MStaffTrack(); - action native A_BeAdditive(); States { @@ -136,7 +135,7 @@ ACTOR MageStaffFX2 native MSP2 ABCD 2 Bright A_MStaffTrack Loop Death: - MSP2 E 4 Bright A_BeAdditive + MSP2 E 4 Bright A_SetTranslucent(1,1) MSP2 F 5 Bright A_Explode (80, 192, 0) MSP2 GH 5 Bright MSP2 I 4 Bright diff --git a/wadsrc/static/actors/shared/teleport.txt b/wadsrc/static/actors/shared/teleport.txt new file mode 100644 index 000000000..a91eaf9d4 --- /dev/null +++ b/wadsrc/static/actors/shared/teleport.txt @@ -0,0 +1,42 @@ + +ACTOR TeleportFog native +{ + +NOBLOCKMAP + +NOTELEPORT + +NOGRAVITY + RenderStyle Add + States + { + Spawn: + TFOG ABABCDEFGHIJ 6 Bright + Stop + + Raven: + TELE ABCDEFGHGFEDC 6 Bright + Stop + + Strife: + TFOG ABCDEFEDCB 6 Bright + Stop + } +} + + + +ACTOR TeleportDest 14 +{ + +NOBLOCKMAP + +NOSECTOR + +DONTSPLASH +} + +ACTOR TeleportDest2 : TeleportDest 9044 +{ + +NOGRAVITY +} + +ACTOR TeleportDest3 : TeleportDest2 9043 +{ + -NOGRAVITY +} + diff --git a/wadsrc/static/actors/strife/sigil.txt b/wadsrc/static/actors/strife/sigil.txt new file mode 100644 index 000000000..ab9c6d21b --- /dev/null +++ b/wadsrc/static/actors/strife/sigil.txt @@ -0,0 +1,172 @@ + +// The Almighty Sigil! ------------------------------------------------------ + +ACTOR Sigil : Weapon native +{ + Game Strife + + Weapon.Kickback 100 + Weapon.SelectionOrder 4000 + Health 1 + +FLOORCLIP + +WEAPON.CHEATNOTWEAPON + Inventory.PickupSound "weapons/sigilcharge" + Tag "SIGIL" + Inventory.Icon "I_SGL1" + Inventory.PickupMessage "$TXT_SIGIL" + + action native A_SelectPiece (); + action native A_SelectSigilView (); + action native A_SelectSigilDown (); + action native A_SelectSigilAttack (); + action native A_SigilCharge (); + action native A_FireSigil1 (); + action native A_FireSigil2 (); + action native A_FireSigil3 (); + action native A_FireSigil4 (); + action native A_FireSigil5 (); + + States + { + Spawn: + SIGL A 1 + SIGL A -1 A_SelectPiece + Stop + SIGL B -1 + Stop + SIGL C -1 + Stop + SIGL D -1 + Stop + SIGL E -1 + Stop + Ready: + SIGH A 0 Bright A_SelectSigilView + Wait + SIGH A 1 Bright A_WeaponReady + Wait + SIGH B 1 Bright A_WeaponReady + Wait + SIGH C 1 Bright A_WeaponReady + Wait + SIGH D 1 Bright A_WeaponReady + Wait + SIGH E 1 Bright A_WeaponReady + Wait + Deselect: + SIGH A 1 Bright A_SelectSigilDown + Wait + SIGH A 1 Bright A_Lower + Wait + SIGH B 1 Bright A_Lower + Wait + SIGH C 1 Bright A_Lower + Wait + SIGH D 1 Bright A_Lower + Wait + SIGH E 1 Bright A_Lower + Wait + Select: + SIGH A 1 Bright A_SelectSigilView + Wait + SIGH A 1 Bright A_Raise + Wait + SIGH B 1 Bright A_Raise + Wait + SIGH C 1 Bright A_Raise + Wait + SIGH D 1 Bright A_Raise + Wait + SIGH E 1 Bright A_Raise + Wait + + Fire: + SIGH A 0 Bright A_SelectSigilAttack + + SIGH A 18 Bright A_SigilCharge + SIGH A 3 Bright A_GunFlash + SIGH A 10 A_FireSigil1 + SIGH A 5 + Goto Ready + + SIGH B 18 Bright A_SigilCharge + SIGH B 3 Bright A_GunFlash + SIGH B 10 A_FireSigil2 + SIGH B 5 + Goto Ready + + SIGH C 18 Bright A_SigilCharge + SIGH C 3 Bright A_GunFlash + SIGH C 10 A_FireSigil3 + SIGH C 5 + Goto Ready + + SIGH D 18 Bright A_SigilCharge + SIGH D 3 Bright A_GunFlash + SIGH D 10 A_FireSigil4 + SIGH D 5 + Goto Ready + + SIGH E 18 Bright A_SigilCharge + SIGH E 3 Bright A_GunFlash + SIGH E 10 A_FireSigil5 + SIGH E 5 + Goto Ready + Flash: + SIGF A 4 Bright A_Light2 + SIGF B 6 Bright A_LightInverse + SIGF C 4 Bright A_Light1 + SIGF C 0 Bright A_Light0 + Stop + } +} + +// Sigil 1 ------------------------------------------------------------------ + +ACTOR Sigil1 : Sigil 77 +{ + Game Strife + ConversationID 196, 190, 194 + Inventory.Icon "I_SGL1" + Health 1 +} + +// Sigil 2 ------------------------------------------------------------------ + +ACTOR Sigil2 : Sigil 78 +{ + Game Strife + ConversationID 197, 191, 195 + Inventory.Icon "I_SGL2" + Health 2 +} + +// Sigil 3 ------------------------------------------------------------------ + +ACTOR Sigil3 : Sigil 79 +{ + Game Strife + ConversationID 198, 192, 196 + Inventory.Icon "I_SGL3" + Health 3 +} + +// Sigil 4 ------------------------------------------------------------------ + +ACTOR Sigil4 : Sigil 80 +{ + Game Strife + ConversationID 199, 193, 197 + Inventory.Icon "I_SGL4" + Health 4 +} + +// Sigil 5 ------------------------------------------------------------------ + +ACTOR Sigil5 : Sigil 81 +{ + Game Strife + ConversationID 200, 194, 198 + Inventory.Icon "I_SGL5" + Health 5 +} diff --git a/wadsrc/static/actors/strife/strifeitems.txt b/wadsrc/static/actors/strife/strifeitems.txt index 50df056dd..0ab204e8d 100644 --- a/wadsrc/static/actors/strife/strifeitems.txt +++ b/wadsrc/static/actors/strife/strifeitems.txt @@ -371,3 +371,203 @@ ACTOR Communicator : Inventory 206 } } +// Degnin Ore --------------------------------------------------------------- + +ACTOR DegninOre : Inventory 59 native +{ + Game Strife + ConversationID 128, 124, 127 + Health 10 + Radius 16 + Height 16 + Inventory.MaxAmount 10 + +SOLID + +SHOOTABLE + +NOBLOOD + +FLOORCLIP + +INCOMBAT + +INVENTORY.INVBAR + Tag "Degnin_Ore" + DeathSound "ore/explode" + Inventory.Icon "I_XPRK" + Inventory.PickupMessage "$TXT_DEGNINORE" + States + { + Spawn: + XPRK A -1 + Stop + Death: + XPRK A 1 A_RemoveForceField + BNG3 A 0 A_SetTranslucent(1,1) + BNG3 A 0 A_Scream + BNG3 A 3 Bright A_Explode(192,192,1,1) + BNG3 BCDEFGH 3 Bright + Stop + } +} + +// Gun Training ------------------------------------------------------------- + +ACTOR GunTraining : Inventory +{ + Game Strife + ConversationID 310,-1,-1 + +FLOORCLIP + +INVENTORY.INVBAR + +INVENTORY.UNDROPPABLE + Inventory.MaxAmount 100 + Tag "Accuracy" + Inventory.Icon "I_GUNT" + States + { + Spawn: + GUNT A -1 + Stop + } +} + +// Health Training ---------------------------------------------------------- + +ACTOR HealthTraining : Inventory native +{ + Game Strife + ConversationID 309,-1,-1 + +FLOORCLIP + +INVENTORY.INVBAR + +INVENTORY.UNDROPPABLE + Inventory.MaxAmount 100 + Tag "Toughness" + Inventory.Icon "I_HELT" + States + { + Spawn: + HELT A -1 + Stop + } +} + + + +// Scanner ------------------------------------------------------------------ + +ACTOR Scanner : PowerupGiver 2027 native +{ + Game Strife + ConversationID 165,-1,-1 + +FLOORCLIP + +INVENTORY.FANCYPICKUPSOUND + Inventory.MaxAmount 1 + Tag "scanner" + Inventory.Icon "I_PMUP" + Powerup.Type "Scanner" + Inventory.PickupSound "misc/i_pkup" + Inventory.PickupMessage "$TXT_SCANNER" + States + { + Spawn: + PMUP AB 6 + Loop + } +} + +// Prison Pass -------------------------------------------------------------- + +ACTOR PrisonPass : Key native +{ + Game Strife + ConversationID 304, 286, 303 + Inventory.Icon "I_TOKN" + Tag "Prison_pass" + Inventory.PickupMessage "TXT_PRISONPASS" + States + { + Spawn: + TOKN A -1 + Stop + } +} + +//--------------------------------------------------------------------------- +// Dummy items. They are just used by Strife to perform --------------------- +// actions and cannot be held. ---------------------------------------------- +//--------------------------------------------------------------------------- + +ACTOR DummyStrifeItem : Inventory native +{ + States + { + Spawn: + TOKN A -1 + Stop + } +} + +// Sound the alarm! --------------------------------------------------------- + +ACTOR RaiseAlarm : DummyStrifeItem native +{ + ConversationID 301, 283, 300 + Tag "alarm" +} + +// Open door tag 222 -------------------------------------------------------- + +ACTOR OpenDoor222 : DummyStrifeItem native +{ + ConversationID 302, 284, 301 +} + +// Close door tag 222 ------------------------------------------------------- + +ACTOR CloseDoor222 : DummyStrifeItem native +{ + ConversationID 303, 285, 302 +} + +// Open door tag 224 -------------------------------------------------------- + +ACTOR OpenDoor224 : DummyStrifeItem native +{ + ConversationID 305, -1, -1 +} + +// Ammo --------------------------------------------------------------------- + +ACTOR AmmoFillup : DummyStrifeItem native +{ + ConversationID 298,280,297 + Tag "Ammo" +} + +// Health ------------------------------------------------------------------- + +ACTOR HealthFillup : DummyStrifeItem native +{ + ConversationID 299,281,298 + Tag "Health" +} + +// Upgrade Stamina ---------------------------------------------------------- + +ACTOR UpgradeStamina : DummyStrifeItem native +{ + ConversationID 306, 287, 307 + Inventory.Amount 10 + Inventory.MaxAmount 100 +} + +// Upgrade Accuracy --------------------------------------------------------- + +ACTOR UpgradeAccuracy : DummyStrifeItem native +{ + ConversationID 307, 288, 308 +} + +// Start a slideshow -------------------------------------------------------- + +ACTOR SlideshowStarter : DummyStrifeItem native +{ + ConversationID 343,-1,-1 +} + + diff --git a/wadsrc/static/decorate.txt b/wadsrc/static/decorate.txt index 83f934c48..4f2409e41 100644 --- a/wadsrc/static/decorate.txt +++ b/wadsrc/static/decorate.txt @@ -11,6 +11,7 @@ #include "actors/shared/soundsequence.txt" #include "actors/shared/bridge.txt" #include "actors/shared/specialspot.txt" +#include "actors/shared/teleport.txt" #include "actors/doom/doomplayer.txt" #include "actors/doom/possessed.txt" @@ -140,3 +141,4 @@ #include "actors/strife/thingstoblowup.txt" #include "actors/strife/templar.txt" #include "actors/strife/zombie.txt" +#include "actors/strife/sigil.txt"