mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-01-29 20:10:58 +00:00
- 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. SVN r1132 (trunk)
This commit is contained in:
parent
bd50321357
commit
ef2c9243c5
23 changed files with 511 additions and 520 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -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<<FRACBITS))
|
||||
{
|
||||
P_HitFloor (actor);
|
||||
}
|
||||
|
||||
// Now launch mushroom cloud
|
||||
AActor *target = Spawn("Mapspot", 0, 0, 0, NO_REPLACE); // We need something to aim at.
|
||||
|
|
|
@ -80,16 +80,10 @@ IMPLEMENT_CLASS (AMWeapBloodscourge)
|
|||
|
||||
// Mage Staff FX2 (Bloodscourge) --------------------------------------------
|
||||
|
||||
void A_BeAdditive (AActor *self)
|
||||
{
|
||||
self->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 &&
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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<ACoin> (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)
|
||||
{
|
||||
|
|
|
@ -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<ASigil> ();
|
||||
if (sigil == NULL)
|
||||
{
|
||||
sigil = Spawn<ASigil1> (0,0,0, NO_REPLACE);
|
||||
sigil = static_cast<ASigil*>(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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -2288,10 +2288,6 @@ angle_t AActor::AngleIncrements ()
|
|||
return ANGLE_45;
|
||||
}
|
||||
|
||||
void AActor::PreExplode ()
|
||||
{
|
||||
}
|
||||
|
||||
void AActor::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -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<ATeleportFog>();
|
||||
|
||||
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<ATeleportDest> 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<ATeleportDest> it2;
|
||||
TThinkerIterator<AActor> 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<ATeleportDest> 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<ATeleportDest> 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;
|
||||
|
|
|
@ -290,8 +290,8 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld)
|
|||
|
||||
void P_TranslateTeleportThings ()
|
||||
{
|
||||
ATeleportDest *dest;
|
||||
TThinkerIterator<ATeleportDest> iterator;
|
||||
AActor *dest;
|
||||
TThinkerIterator<AActor> iterator(NAME_TeleportDest);
|
||||
bool foundSomething = false;
|
||||
|
||||
while ( (dest = iterator.Next()) )
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
42
wadsrc/static/actors/shared/teleport.txt
Normal file
42
wadsrc/static/actors/shared/teleport.txt
Normal file
|
@ -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
|
||||
}
|
||||
|
172
wadsrc/static/actors/strife/sigil.txt
Normal file
172
wadsrc/static/actors/strife/sigil.txt
Normal file
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue