- 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:
Christoph Oelckers 2008-08-08 19:47:18 +00:00
parent bd50321357
commit ef2c9243c5
23 changed files with 511 additions and 520 deletions

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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)
{
}

View File

@ -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.

View File

@ -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 &&

View File

@ -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)

View File

@ -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;
};

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -2288,10 +2288,6 @@ angle_t AActor::AngleIncrements ()
return ANGLE_45;
}
void AActor::PreExplode ()
{
}
void AActor::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
{
}

View File

@ -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;

View File

@ -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()) )

View File

@ -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());
}

View File

@ -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

View File

@ -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

View 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
}

View 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
}

View File

@ -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
}

View File

@ -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"