mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- Added more DECORATE conversions by Karate Chris.
SVN r1124 (trunk)
This commit is contained in:
parent
0ad1bfe87e
commit
269a54a258
13 changed files with 493 additions and 588 deletions
|
@ -1,6 +1,7 @@
|
|||
August 7, 2008 (Changes by Graf Zahl)
|
||||
- Added Gez's dropammofactor submission with some necessary changes. Also merged
|
||||
redundant ammo multiplication code from P_DropItem and ADehackedPickup::TryPickup.
|
||||
- Restricted native action function definitions to zdoom.pk3.
|
||||
- Fixed. The Firedemon was missing a game filter.
|
||||
|
||||
August 7, 2008 (SBARINfO update)
|
||||
|
|
|
@ -233,6 +233,21 @@ WEAPON(CStaffInitBlink)
|
|||
WEAPON(CStaffCheckBlink)
|
||||
WEAPON(CStaffCheck)
|
||||
WEAPON(CStaffAttack)
|
||||
WEAPON(FireConePL1)
|
||||
WEAPON(ShedShard)
|
||||
WEAPON(LightningReady)
|
||||
WEAPON(MLightningAttack)
|
||||
ACTOR(LightningZap)
|
||||
ACTOR(LightningClip)
|
||||
ACTOR(LightningRemove)
|
||||
ACTOR(FreeTargMobj)
|
||||
ACTOR(LastZap)
|
||||
ACTOR(ZapMimic)
|
||||
ACTOR(DropBloodscourgePieces)
|
||||
WEAPON(MStaffAttack)
|
||||
WEAPON(MStaffPalette)
|
||||
ACTOR(MStaffTrack)
|
||||
ACTOR(BeAdditive)
|
||||
ACTOR(FiredRocks)
|
||||
ACTOR(FiredChase)
|
||||
ACTOR(FiredAttack)
|
||||
|
|
|
@ -68,7 +68,7 @@ void ACWeaponPiece1::BeginPlay ()
|
|||
|
||||
class ACWeaponPiece2 : public AClericWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (ACWeaponPiece2, AClericWeaponPiece)
|
||||
DECLARE_CLASS (ACWeaponPiece2, AClericWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
@ -85,7 +85,7 @@ void ACWeaponPiece2::BeginPlay ()
|
|||
|
||||
class ACWeaponPiece3 : public AClericWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (ACWeaponPiece3, AClericWeaponPiece)
|
||||
DECLARE_CLASS (ACWeaponPiece3, AClericWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
@ -102,7 +102,7 @@ void ACWeaponPiece3::BeginPlay ()
|
|||
|
||||
class ACWeapWraithverge : public AClericWeapon
|
||||
{
|
||||
DECLARE_ACTOR (ACWeapWraithverge, AClericWeapon)
|
||||
DECLARE_CLASS (ACWeapWraithverge, AClericWeapon)
|
||||
public:
|
||||
void Serialize (FArchive &arc)
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class ALightning : public AActor
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (ALightning, AActor)
|
||||
DECLARE_CLASS (ALightning, AActor)
|
||||
public:
|
||||
int SpecialMissileHit (AActor *victim);
|
||||
};
|
||||
|
|
|
@ -21,99 +21,16 @@ static FRandom pr_cone ("FireConePL1");
|
|||
void A_FireConePL1 (AActor *actor);
|
||||
void A_ShedShard (AActor *);
|
||||
|
||||
// The Mage's Frost Cone ----------------------------------------------------
|
||||
|
||||
class AMWeapFrost : public AMageWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AMWeapFrost, AMageWeapon)
|
||||
};
|
||||
|
||||
FState AMWeapFrost::States[] =
|
||||
{
|
||||
#define S_COS1 0
|
||||
S_BRIGHT (WMCS, 'A', 8, NULL , &States[S_COS1+1]),
|
||||
S_BRIGHT (WMCS, 'B', 8, NULL , &States[S_COS1+2]),
|
||||
S_BRIGHT (WMCS, 'C', 8, NULL , &States[S_COS1]),
|
||||
|
||||
#define S_CONEREADY (S_COS1+3)
|
||||
S_NORMAL (CONE, 'A', 1, A_WeaponReady , &States[S_CONEREADY]),
|
||||
|
||||
#define S_CONEDOWN (S_CONEREADY+1)
|
||||
S_NORMAL (CONE, 'A', 1, A_Lower , &States[S_CONEDOWN]),
|
||||
|
||||
#define S_CONEUP (S_CONEDOWN+1)
|
||||
S_NORMAL (CONE, 'A', 1, A_Raise , &States[S_CONEUP]),
|
||||
|
||||
#define S_CONEATK (S_CONEUP+1)
|
||||
S_NORMAL (CONE, 'B', 3, NULL , &States[S_CONEATK+1]),
|
||||
S_NORMAL (CONE, 'C', 4, NULL , &States[S_CONEATK+2]),
|
||||
S_NORMAL (CONE, 'D', 3, NULL , &States[S_CONEATK+3]),
|
||||
S_NORMAL (CONE, 'E', 5, NULL , &States[S_CONEATK+4]),
|
||||
S_NORMAL (CONE, 'F', 3, A_FireConePL1 , &States[S_CONEATK+5]),
|
||||
S_NORMAL (CONE, 'G', 3, NULL , &States[S_CONEATK+6]),
|
||||
S_NORMAL (CONE, 'A', 9, NULL , &States[S_CONEATK+7]),
|
||||
S_NORMAL (CONE, 'A', 10, A_ReFire , &States[S_CONEREADY]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeapFrost, Hexen, 53, 36)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags5 (MF5_BLOODSPLATTER)
|
||||
PROP_SpawnState (S_COS1)
|
||||
|
||||
PROP_Weapon_SelectionOrder (1700)
|
||||
PROP_Weapon_AmmoUse1 (3)
|
||||
PROP_Weapon_AmmoGive1 (25)
|
||||
PROP_Weapon_UpState (S_CONEUP)
|
||||
PROP_Weapon_DownState (S_CONEDOWN)
|
||||
PROP_Weapon_ReadyState (S_CONEREADY)
|
||||
PROP_Weapon_AtkState (S_CONEATK)
|
||||
PROP_Weapon_HoldAtkState (S_CONEATK+2)
|
||||
PROP_Weapon_Kickback (150)
|
||||
PROP_Weapon_YAdjust (20)
|
||||
PROP_Weapon_MoveCombatDist (19000000)
|
||||
PROP_Weapon_AmmoType1 ("Mana1")
|
||||
PROP_Weapon_ProjectileType ("FrostMissile")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_M2")
|
||||
END_DEFAULTS
|
||||
|
||||
// Frost Missile ------------------------------------------------------------
|
||||
|
||||
class AFrostMissile : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AFrostMissile, AActor)
|
||||
DECLARE_CLASS (AFrostMissile, AActor)
|
||||
public:
|
||||
int DoSpecialDamage (AActor *victim, int damage);
|
||||
};
|
||||
|
||||
FState AFrostMissile::States[] =
|
||||
{
|
||||
S_BRIGHT (SHRD, 'A', 2, NULL , &States[1]),
|
||||
S_BRIGHT (SHRD, 'A', 3, A_ShedShard , &States[2]),
|
||||
S_BRIGHT (SHRD, 'B', 3, NULL , &States[3]),
|
||||
S_BRIGHT (SHRD, 'C', 3, NULL , &States[0]),
|
||||
|
||||
#define S_SHARDFXE1_1 (4)
|
||||
S_BRIGHT (SHEX, 'A', 5, NULL , &States[S_SHARDFXE1_1+1]),
|
||||
S_BRIGHT (SHEX, 'B', 5, NULL , &States[S_SHARDFXE1_1+2]),
|
||||
S_BRIGHT (SHEX, 'C', 5, NULL , &States[S_SHARDFXE1_1+3]),
|
||||
S_BRIGHT (SHEX, 'D', 5, NULL , &States[S_SHARDFXE1_1+4]),
|
||||
S_BRIGHT (SHEX, 'E', 5, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFrostMissile, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (13)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Damage (1)
|
||||
PROP_DamageType (NAME_Ice)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
|
||||
|
||||
PROP_SpawnState (0)
|
||||
PROP_DeathState (S_SHARDFXE1_1)
|
||||
|
||||
PROP_DeathSound ("MageShardsExplode")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFrostMissile)
|
||||
|
||||
int AFrostMissile::DoSpecialDamage (AActor *victim, int damage)
|
||||
{
|
||||
|
@ -124,26 +41,6 @@ int AFrostMissile::DoSpecialDamage (AActor *victim, int damage)
|
|||
return damage;
|
||||
}
|
||||
|
||||
// Ice Shard ----------------------------------------------------------------
|
||||
|
||||
class AIceShard : public AFrostMissile
|
||||
{
|
||||
DECLARE_ACTOR (AIceShard, AFrostMissile)
|
||||
};
|
||||
|
||||
FState AIceShard::States[] =
|
||||
{
|
||||
S_BRIGHT (SHRD, 'A', 3, NULL , &States[1]),
|
||||
S_BRIGHT (SHRD, 'B', 3, NULL , &States[2]),
|
||||
S_BRIGHT (SHRD, 'C', 3, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AIceShard, Hexen, -1, 65)
|
||||
PROP_DamageType (NAME_Ice)
|
||||
PROP_Flags2 (MF2_NOTELEPORT)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FireConePL1
|
||||
|
|
|
@ -29,93 +29,9 @@ void A_LastZap (AActor *);
|
|||
void A_LightningRemove (AActor *);
|
||||
void A_FreeTargMobj (AActor *);
|
||||
|
||||
// The Mage's Lightning Arc of Death ----------------------------------------
|
||||
|
||||
class AMWeapLightning : public AMageWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AMWeapLightning, AMageWeapon)
|
||||
};
|
||||
|
||||
FState AMWeapLightning::States[] =
|
||||
{
|
||||
#define S_MW_LIGHTNING1 0
|
||||
S_BRIGHT (WMLG, 'A', 4, NULL , &States[S_MW_LIGHTNING1+1]),
|
||||
S_BRIGHT (WMLG, 'B', 4, NULL , &States[S_MW_LIGHTNING1+2]),
|
||||
S_BRIGHT (WMLG, 'C', 4, NULL , &States[S_MW_LIGHTNING1+3]),
|
||||
S_BRIGHT (WMLG, 'D', 4, NULL , &States[S_MW_LIGHTNING1+4]),
|
||||
S_BRIGHT (WMLG, 'E', 4, NULL , &States[S_MW_LIGHTNING1+5]),
|
||||
S_BRIGHT (WMLG, 'F', 4, NULL , &States[S_MW_LIGHTNING1+6]),
|
||||
S_BRIGHT (WMLG, 'G', 4, NULL , &States[S_MW_LIGHTNING1+7]),
|
||||
S_BRIGHT (WMLG, 'H', 4, NULL , &States[S_MW_LIGHTNING1]),
|
||||
|
||||
#define S_MLIGHTNINGREADY (S_MW_LIGHTNING1+8)
|
||||
S_BRIGHT (MLNG, 'A', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+1]),
|
||||
S_BRIGHT (MLNG, 'A', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+2]),
|
||||
S_BRIGHT (MLNG, 'A', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+3]),
|
||||
S_BRIGHT (MLNG, 'A', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+4]),
|
||||
S_BRIGHT (MLNG, 'A', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+5]),
|
||||
S_BRIGHT (MLNG, 'A', 1, A_LightningReady , &States[S_MLIGHTNINGREADY+6]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+7]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+8]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+9]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+10]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+11]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+12]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+13]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+14]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+15]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+16]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+17]),
|
||||
S_BRIGHT (MLNG, 'C', 1, A_LightningReady , &States[S_MLIGHTNINGREADY+18]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+19]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+20]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+21]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+22]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY+23]),
|
||||
S_BRIGHT (MLNG, 'B', 1, A_WeaponReady , &States[S_MLIGHTNINGREADY]),
|
||||
|
||||
#define S_MLIGHTNINGDOWN (S_MLIGHTNINGREADY+24)
|
||||
S_BRIGHT (MLNG, 'A', 1, A_Lower , &States[S_MLIGHTNINGDOWN]),
|
||||
|
||||
#define S_MLIGHTNINGUP (S_MLIGHTNINGDOWN+1)
|
||||
S_BRIGHT (MLNG, 'A', 1, A_Raise , &States[S_MLIGHTNINGUP]),
|
||||
|
||||
#define S_MLIGHTNINGATK (S_MLIGHTNINGUP+1)
|
||||
S_BRIGHT (MLNG, 'D', 3, NULL , &States[S_MLIGHTNINGATK+1]),
|
||||
S_BRIGHT (MLNG, 'E', 3, NULL , &States[S_MLIGHTNINGATK+2]),
|
||||
S_BRIGHT (MLNG, 'F', 4, A_MLightningAttack , &States[S_MLIGHTNINGATK+3]),
|
||||
S_BRIGHT (MLNG, 'G', 4, NULL , &States[S_MLIGHTNINGATK+4]),
|
||||
S_BRIGHT (MLNG, 'H', 3, NULL , &States[S_MLIGHTNINGATK+5]),
|
||||
S_BRIGHT (MLNG, 'I', 3, NULL , &States[S_MLIGHTNINGATK+6]),
|
||||
S_BRIGHT2 (MLNG, 'I', 6, NULL , &States[S_MLIGHTNINGATK+7], 0, 199),
|
||||
S_BRIGHT2 (MLNG, 'C', 2, NULL , &States[S_MLIGHTNINGATK+8], 0, 55),
|
||||
S_BRIGHT2 (MLNG, 'B', 2, NULL , &States[S_MLIGHTNINGATK+9], 0, 50),
|
||||
S_BRIGHT2 (MLNG, 'B', 2, NULL , &States[S_MLIGHTNINGATK+10], 0, 45),
|
||||
S_BRIGHT2 (MLNG, 'B', 2, NULL , &States[S_MLIGHTNINGREADY], 0, 40),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeapLightning, Hexen, 8040, 0)
|
||||
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
|
||||
PROP_SpawnState (S_MW_LIGHTNING1)
|
||||
|
||||
PROP_Weapon_SelectionOrder (1100)
|
||||
PROP_Weapon_AmmoUse1 (5)
|
||||
PROP_Weapon_AmmoGive1 (25)
|
||||
PROP_Weapon_UpState (S_MLIGHTNINGUP)
|
||||
PROP_Weapon_DownState (S_MLIGHTNINGDOWN)
|
||||
PROP_Weapon_ReadyState (S_MLIGHTNINGREADY)
|
||||
PROP_Weapon_AtkState (S_MLIGHTNINGATK)
|
||||
PROP_Weapon_Kickback (0)
|
||||
PROP_Weapon_YAdjust (20)
|
||||
PROP_Weapon_MoveCombatDist (23000000)
|
||||
PROP_Weapon_AmmoType1 ("Mana2")
|
||||
PROP_Weapon_ProjectileType ("LightningFloor")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_M3")
|
||||
END_DEFAULTS
|
||||
|
||||
// Lightning ----------------------------------------------------------------
|
||||
|
||||
IMPLEMENT_ABSTRACT_ACTOR (ALightning)
|
||||
IMPLEMENT_CLASS(ALightning)
|
||||
|
||||
int ALightning::SpecialMissileHit (AActor *thing)
|
||||
{
|
||||
|
@ -170,150 +86,16 @@ int ALightning::SpecialMissileHit (AActor *thing)
|
|||
return 1; // lightning zaps through all sprites
|
||||
}
|
||||
|
||||
// Ceiling Lightning --------------------------------------------------------
|
||||
|
||||
class ALightningCeiling : public ALightning
|
||||
{
|
||||
DECLARE_ACTOR (ALightningCeiling, ALightning)
|
||||
};
|
||||
|
||||
FState ALightningCeiling::States[] =
|
||||
{
|
||||
#define S_LIGHTNING_CEILING1 0
|
||||
S_BRIGHT (MLFX, 'A', 2, A_LightningZap , &States[S_LIGHTNING_CEILING1+1]),
|
||||
S_BRIGHT (MLFX, 'B', 2, A_LightningClip , &States[S_LIGHTNING_CEILING1+2]),
|
||||
S_BRIGHT (MLFX, 'C', 2, A_LightningClip , &States[S_LIGHTNING_CEILING1+3]),
|
||||
S_BRIGHT (MLFX, 'D', 2, A_LightningClip , &States[S_LIGHTNING_CEILING1]),
|
||||
|
||||
#define S_LIGHTNING_C_X1 (S_LIGHTNING_CEILING1+4)
|
||||
S_BRIGHT (MLF2, 'A', 2, A_LightningRemove , &States[S_LIGHTNING_C_X1+1]),
|
||||
S_BRIGHT (MLF2, 'B', 3, NULL , &States[S_LIGHTNING_C_X1+2]),
|
||||
S_BRIGHT (MLF2, 'C', 3, NULL , &States[S_LIGHTNING_C_X1+3]),
|
||||
S_BRIGHT (MLF2, 'D', 3, NULL , &States[S_LIGHTNING_C_X1+4]),
|
||||
S_BRIGHT (MLF2, 'E', 3, NULL , &States[S_LIGHTNING_C_X1+5]),
|
||||
S_BRIGHT (MLF2, 'K', 3, NULL , &States[S_LIGHTNING_C_X1+6]),
|
||||
S_BRIGHT (MLF2, 'L', 3, NULL , &States[S_LIGHTNING_C_X1+7]),
|
||||
S_BRIGHT (MLF2, 'M', 3, NULL , &States[S_LIGHTNING_C_X1+8]),
|
||||
S_NORMAL (ACLO, 'E', 35, NULL , &States[S_LIGHTNING_C_X1+9]),
|
||||
S_BRIGHT (MLF2, 'N', 3, NULL , &States[S_LIGHTNING_C_X1+10]),
|
||||
S_BRIGHT (MLF2, 'O', 3, NULL , &States[S_LIGHTNING_C_X1+11]),
|
||||
S_BRIGHT (MLF2, 'P', 4, NULL , &States[S_LIGHTNING_C_X1+12]),
|
||||
S_BRIGHT (MLF2, 'Q', 3, NULL , &States[S_LIGHTNING_C_X1+13]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_C_X1+14]),
|
||||
S_BRIGHT (MLF2, 'Q', 4, NULL , &States[S_LIGHTNING_C_X1+15]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_C_X1+16]),
|
||||
S_BRIGHT (MLF2, 'O', 3, NULL , &States[S_LIGHTNING_C_X1+17]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_C_X1+18]),
|
||||
S_BRIGHT (MLF2, 'P', 1, A_HideThing , &States[S_LIGHTNING_C_X1+19]),
|
||||
S_NORMAL (ACLO, 'E', 1050, A_FreeTargMobj , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (ALightningCeiling, Hexen, -1, 0)
|
||||
PROP_SpawnHealth (144)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (40)
|
||||
PROP_Damage (8)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
|
||||
PROP_Flags3 (MF3_CEILINGHUGGER)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
||||
PROP_SpawnState (S_LIGHTNING_CEILING1)
|
||||
PROP_DeathState (S_LIGHTNING_C_X1)
|
||||
END_DEFAULTS
|
||||
|
||||
// Floor Lightning ----------------------------------------------------------
|
||||
|
||||
class ALightningFloor : public ALightning
|
||||
{
|
||||
DECLARE_ACTOR (ALightningFloor, ALightning)
|
||||
};
|
||||
|
||||
FState ALightningFloor::States[] =
|
||||
{
|
||||
#define S_LIGHTNING_FLOOR1 0
|
||||
S_BRIGHT (MLFX, 'E', 2, A_LightningZap , &States[S_LIGHTNING_FLOOR1+1]),
|
||||
S_BRIGHT (MLFX, 'F', 2, A_LightningClip , &States[S_LIGHTNING_FLOOR1+2]),
|
||||
S_BRIGHT (MLFX, 'G', 2, A_LightningClip , &States[S_LIGHTNING_FLOOR1+3]),
|
||||
S_BRIGHT (MLFX, 'H', 2, A_LightningClip , &States[S_LIGHTNING_FLOOR1]),
|
||||
|
||||
#define S_LIGHTNING_F_X1 (S_LIGHTNING_FLOOR1+4)
|
||||
S_BRIGHT (MLF2, 'F', 2, A_LightningRemove , &States[S_LIGHTNING_F_X1+1]),
|
||||
S_BRIGHT (MLF2, 'G', 3, NULL , &States[S_LIGHTNING_F_X1+2]),
|
||||
S_BRIGHT (MLF2, 'H', 3, NULL , &States[S_LIGHTNING_F_X1+3]),
|
||||
S_BRIGHT (MLF2, 'I', 3, NULL , &States[S_LIGHTNING_F_X1+4]),
|
||||
S_BRIGHT (MLF2, 'J', 3, NULL , &States[S_LIGHTNING_F_X1+5]),
|
||||
S_BRIGHT (MLF2, 'K', 3, NULL , &States[S_LIGHTNING_F_X1+6]),
|
||||
S_BRIGHT (MLF2, 'L', 3, NULL , &States[S_LIGHTNING_F_X1+7]),
|
||||
S_BRIGHT (MLF2, 'M', 3, NULL , &States[S_LIGHTNING_F_X1+8]),
|
||||
S_NORMAL (ACLO, 'E', 20, NULL , &States[S_LIGHTNING_F_X1+9]),
|
||||
S_BRIGHT (MLF2, 'N', 3, NULL , &States[S_LIGHTNING_F_X1+10]),
|
||||
S_BRIGHT (MLF2, 'O', 3, NULL , &States[S_LIGHTNING_F_X1+11]),
|
||||
S_BRIGHT (MLF2, 'P', 4, NULL , &States[S_LIGHTNING_F_X1+12]),
|
||||
S_BRIGHT (MLF2, 'Q', 3, NULL , &States[S_LIGHTNING_F_X1+13]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_F_X1+14]),
|
||||
S_BRIGHT (MLF2, 'Q', 4, A_LastZap , &States[S_LIGHTNING_F_X1+15]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_F_X1+16]),
|
||||
S_BRIGHT (MLF2, 'O', 3, NULL , &States[S_LIGHTNING_F_X1+17]),
|
||||
S_BRIGHT (MLF2, 'P', 3, NULL , &States[S_LIGHTNING_F_X1+18]),
|
||||
S_BRIGHT (MLF2, 'P', 1, A_HideThing , &ALightningCeiling::States[S_LIGHTNING_C_X1+19]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (ALightningFloor, Hexen, -1, 0)
|
||||
PROP_SpawnHealth (144)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (40)
|
||||
PROP_Damage (8)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
|
||||
PROP_Flags3 (MF3_FLOORHUGGER)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
||||
PROP_SpawnState (S_LIGHTNING_FLOOR1)
|
||||
PROP_DeathState (S_LIGHTNING_F_X1)
|
||||
END_DEFAULTS
|
||||
|
||||
// Lightning Zap ------------------------------------------------------------
|
||||
|
||||
class ALightningZap : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ALightningZap, AActor)
|
||||
DECLARE_CLASS (ALightningZap, AActor)
|
||||
public:
|
||||
int SpecialMissileHit (AActor *thing);
|
||||
};
|
||||
|
||||
FState ALightningZap::States[] =
|
||||
{
|
||||
#define S_LIGHTNING_ZAP1 0
|
||||
S_BRIGHT (MLFX, 'I', 2, A_ZapMimic , &States[S_LIGHTNING_ZAP1+1]),
|
||||
S_BRIGHT (MLFX, 'J', 2, A_ZapMimic , &States[S_LIGHTNING_ZAP1+2]),
|
||||
S_BRIGHT (MLFX, 'K', 2, A_ZapMimic , &States[S_LIGHTNING_ZAP1+3]),
|
||||
S_BRIGHT (MLFX, 'L', 2, A_ZapMimic , &States[S_LIGHTNING_ZAP1+4]),
|
||||
S_BRIGHT (MLFX, 'M', 2, A_ZapMimic , &States[S_LIGHTNING_ZAP1]),
|
||||
|
||||
#define S_LIGHTNING_ZAP_X1 (S_LIGHTNING_ZAP1+5)
|
||||
S_BRIGHT (MLFX, 'N', 2, NULL , &States[S_LIGHTNING_ZAP_X1+1]),
|
||||
S_BRIGHT (MLFX, 'O', 2, NULL , &States[S_LIGHTNING_ZAP_X1+2]),
|
||||
S_BRIGHT (MLFX, 'P', 2, NULL , &States[S_LIGHTNING_ZAP_X1+3]),
|
||||
S_BRIGHT (MLFX, 'Q', 2, NULL , &States[S_LIGHTNING_ZAP_X1+4]),
|
||||
S_BRIGHT (MLFX, 'R', 2, NULL , &States[S_LIGHTNING_ZAP_X1+5]),
|
||||
S_BRIGHT (MLFX, 'S', 2, NULL , &States[S_LIGHTNING_ZAP_X1+6]),
|
||||
S_BRIGHT (MLFX, 'T', 2, NULL , &States[S_LIGHTNING_ZAP_X1+7]),
|
||||
S_BRIGHT (MLFX, 'U', 2, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (ALightningZap, Hexen, -1, 0)
|
||||
PROP_RadiusFixed (15)
|
||||
PROP_HeightFixed (35)
|
||||
PROP_Damage (2)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
||||
PROP_SpawnState (S_LIGHTNING_ZAP1)
|
||||
PROP_DeathState (S_LIGHTNING_ZAP_X1+7)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (ALightningZap)
|
||||
|
||||
int ALightningZap::SpecialMissileHit (AActor *thing)
|
||||
{
|
||||
|
@ -486,8 +268,8 @@ void A_MLightningAttack2 (AActor *actor)
|
|||
{
|
||||
AActor *fmo, *cmo;
|
||||
|
||||
fmo = P_SpawnPlayerMissile (actor, RUNTIME_CLASS(ALightningFloor));
|
||||
cmo = P_SpawnPlayerMissile (actor, RUNTIME_CLASS(ALightningCeiling));
|
||||
fmo = P_SpawnPlayerMissile (actor, PClass::FindClass ("LightningFloor"));
|
||||
cmo = P_SpawnPlayerMissile (actor, PClass::FindClass ("LightningCeiling"));
|
||||
if (fmo)
|
||||
{
|
||||
fmo->special1 = 0;
|
||||
|
@ -560,7 +342,7 @@ void A_LastZap (AActor *actor)
|
|||
mo = Spawn<ALightningZap> (actor->x, actor->y, actor->z, ALLOW_REPLACE);
|
||||
if (mo)
|
||||
{
|
||||
mo->SetState (&ALightningZap::States[S_LIGHTNING_ZAP_X1]);
|
||||
mo->SetState (mo->FindState ("Death"));
|
||||
mo->momz = 40*FRACUNIT;
|
||||
mo->Damage = 0;
|
||||
}
|
||||
|
|
|
@ -22,16 +22,14 @@ static divline_t BlockCheckLine;
|
|||
|
||||
class AMageWeaponPiece : public AFourthWeaponPiece
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AMageWeaponPiece, AFourthWeaponPiece)
|
||||
DECLARE_CLASS (AMageWeaponPiece, AFourthWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
protected:
|
||||
bool MatchPlayerClass (AActor *toucher);
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AMageWeaponPiece, Hexen, -1, 0)
|
||||
PROP_Inventory_PickupMessage("$TXT_BLOODSCOURGE_PIECE")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMageWeaponPiece)
|
||||
|
||||
bool AMageWeaponPiece::MatchPlayerClass (AActor *toucher)
|
||||
{
|
||||
|
@ -43,21 +41,12 @@ bool AMageWeaponPiece::MatchPlayerClass (AActor *toucher)
|
|||
|
||||
class AMWeaponPiece1 : public AMageWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AMWeaponPiece1, AMageWeaponPiece)
|
||||
DECLARE_CLASS (AMWeaponPiece1, AMageWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AMWeaponPiece1::States[] =
|
||||
{
|
||||
S_BRIGHT (WMS1, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeaponPiece1, Hexen, 21, 37)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMWeaponPiece1)
|
||||
|
||||
void AMWeaponPiece1::BeginPlay ()
|
||||
{
|
||||
|
@ -69,21 +58,12 @@ void AMWeaponPiece1::BeginPlay ()
|
|||
|
||||
class AMWeaponPiece2 : public AMageWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AMWeaponPiece2, AMageWeaponPiece)
|
||||
DECLARE_CLASS (AMWeaponPiece2, AMageWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AMWeaponPiece2::States[] =
|
||||
{
|
||||
S_BRIGHT (WMS2, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeaponPiece2, Hexen, 22, 38)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMWeaponPiece2)
|
||||
|
||||
void AMWeaponPiece2::BeginPlay ()
|
||||
{
|
||||
|
@ -95,21 +75,12 @@ void AMWeaponPiece2::BeginPlay ()
|
|||
|
||||
class AMWeaponPiece3 : public AMageWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AMWeaponPiece3, AMageWeaponPiece)
|
||||
DECLARE_CLASS (AMWeaponPiece3, AMageWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AMWeaponPiece3::States[] =
|
||||
{
|
||||
S_BRIGHT (WMS3, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeaponPiece3, Hexen, 23, 39)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMWeaponPiece3)
|
||||
|
||||
void AMWeaponPiece3::BeginPlay ()
|
||||
{
|
||||
|
@ -117,31 +88,11 @@ void AMWeaponPiece3::BeginPlay ()
|
|||
PieceValue = WPIECE3<<6;
|
||||
}
|
||||
|
||||
// An actor that spawns the three pieces of the mage's fourth weapon --------
|
||||
|
||||
// This gets spawned if weapon drop is on so that other players can pick up
|
||||
// this player's weapon.
|
||||
|
||||
class ABloodscourgeDrop : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ABloodscourgeDrop, AActor)
|
||||
};
|
||||
|
||||
FState ABloodscourgeDrop::States[] =
|
||||
{
|
||||
S_NORMAL (TNT1, 'A', 1, NULL, &States[1]),
|
||||
S_NORMAL (TNT1, 'A', 1, A_DropBloodscourgePieces, NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (ABloodscourgeDrop, Hexen, -1, 0)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
// The Mages's Staff (Bloodscourge) -----------------------------------------
|
||||
|
||||
class AMWeapBloodscourge : public AMageWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AMWeapBloodscourge, AMageWeapon)
|
||||
DECLARE_CLASS (AMWeapBloodscourge, AMageWeapon)
|
||||
public:
|
||||
void Serialize (FArchive &arc)
|
||||
{
|
||||
|
@ -155,84 +106,7 @@ public:
|
|||
BYTE MStaffCount;
|
||||
};
|
||||
|
||||
FState AMWeapBloodscourge::States[] =
|
||||
{
|
||||
// Dummy state, because the fourth weapon does not appear in a level directly.
|
||||
S_NORMAL (TNT1, 'A', -1, NULL , NULL),
|
||||
|
||||
#define S_MSTAFFREADY 1
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+1]),
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+2]),
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+3]),
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+4]),
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+5]),
|
||||
S_NORMAL (MSTF, 'A', 1, A_WeaponReady , &States[S_MSTAFFREADY+6]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+7]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+8]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+9]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+10]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+11]),
|
||||
S_NORMAL (MSTF, 'B', 1, A_WeaponReady , &States[S_MSTAFFREADY+12]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+13]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+14]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+15]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+16]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+17]),
|
||||
S_NORMAL (MSTF, 'C', 1, A_WeaponReady , &States[S_MSTAFFREADY+18]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+19]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+20]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+21]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+22]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+23]),
|
||||
S_NORMAL (MSTF, 'D', 1, A_WeaponReady , &States[S_MSTAFFREADY+24]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+25]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+26]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+27]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+28]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+29]),
|
||||
S_NORMAL (MSTF, 'E', 1, A_WeaponReady , &States[S_MSTAFFREADY+30]),
|
||||
S_NORMAL (MSTF, 'F', 1, A_WeaponReady , &States[S_MSTAFFREADY+31]),
|
||||
S_NORMAL (MSTF, 'F', 1, A_WeaponReady , &States[S_MSTAFFREADY+32]),
|
||||
S_NORMAL (MSTF, 'F', 1, A_WeaponReady , &States[S_MSTAFFREADY+33]),
|
||||
S_NORMAL (MSTF, 'F', 1, A_WeaponReady , &States[S_MSTAFFREADY+34]),
|
||||
S_NORMAL (MSTF, 'F', 1, A_WeaponReady , &States[S_MSTAFFREADY]),
|
||||
|
||||
#define S_MSTAFFDOWN (S_MSTAFFREADY+35)
|
||||
S_NORMAL (MSTF, 'A', 1, A_Lower , &States[S_MSTAFFDOWN]),
|
||||
|
||||
#define S_MSTAFFUP (S_MSTAFFDOWN+1)
|
||||
S_NORMAL (MSTF, 'A', 1, A_Raise , &States[S_MSTAFFUP]),
|
||||
|
||||
#define S_MSTAFFATK (S_MSTAFFUP+1)
|
||||
S_NORMAL2 (MSTF, 'G', 4, NULL , &States[S_MSTAFFATK+1], 0, 40),
|
||||
S_BRIGHT2 (MSTF, 'H', 4, A_MStaffAttack , &States[S_MSTAFFATK+2], 0, 48),
|
||||
S_BRIGHT2 (MSTF, 'H', 2, A_MStaffPalette , &States[S_MSTAFFATK+3], 0, 48),
|
||||
S_NORMAL2 (MSTF, 'I', 2, A_MStaffPalette , &States[S_MSTAFFATK+4], 0, 48),
|
||||
S_NORMAL2 (MSTF, 'I', 2, A_MStaffPalette , &States[S_MSTAFFATK+5], 0, 48),
|
||||
S_NORMAL2 (MSTF, 'I', 1, NULL , &States[S_MSTAFFATK+6], 0, 40),
|
||||
S_NORMAL2 (MSTF, 'J', 5, NULL , &States[S_MSTAFFREADY], 0, 36)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeapBloodscourge, Hexen, -1, 0)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_SpawnState (0)
|
||||
|
||||
PROP_Weapon_SelectionOrder (3100)
|
||||
PROP_Weapon_Flags (WIF_PRIMARY_USES_BOTH)
|
||||
PROP_Weapon_AmmoUse1 (15)
|
||||
PROP_Weapon_AmmoUse2 (15)
|
||||
PROP_Weapon_UpState (S_MSTAFFUP)
|
||||
PROP_Weapon_DownState (S_MSTAFFDOWN)
|
||||
PROP_Weapon_ReadyState (S_MSTAFFREADY)
|
||||
PROP_Weapon_AtkState (S_MSTAFFATK)
|
||||
PROP_Weapon_Kickback (150)
|
||||
PROP_Weapon_YAdjust (20)
|
||||
PROP_Weapon_MoveCombatDist (20000000)
|
||||
PROP_Weapon_AmmoType1 ("Mana1")
|
||||
PROP_Weapon_AmmoType2 ("Mana2")
|
||||
PROP_Weapon_ProjectileType ("MageStaffFX2")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_M4")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMWeapBloodscourge)
|
||||
|
||||
// Mage Staff FX2 (Bloodscourge) --------------------------------------------
|
||||
|
||||
|
@ -243,7 +117,7 @@ void A_BeAdditive (AActor *self)
|
|||
|
||||
class AMageStaffFX2 : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMageStaffFX2, AActor)
|
||||
DECLARE_CLASS(AMageStaffFX2, AActor)
|
||||
public:
|
||||
void GetExplodeParms (int &damage, int &dist, bool &hurtSource);
|
||||
int SpecialMissileHit (AActor *victim);
|
||||
|
@ -251,36 +125,7 @@ public:
|
|||
bool SpecialBlastHandling (AActor *source, fixed_t strength);
|
||||
};
|
||||
|
||||
FState AMageStaffFX2::States[] =
|
||||
{
|
||||
#define S_MSTAFF_FX2_1 0
|
||||
S_BRIGHT (MSP2, 'A', 2, A_MStaffTrack , &States[S_MSTAFF_FX2_1+1]),
|
||||
S_BRIGHT (MSP2, 'B', 2, A_MStaffTrack , &States[S_MSTAFF_FX2_1+2]),
|
||||
S_BRIGHT (MSP2, 'C', 2, A_MStaffTrack , &States[S_MSTAFF_FX2_1+3]),
|
||||
S_BRIGHT (MSP2, 'D', 2, A_MStaffTrack , &States[S_MSTAFF_FX2_1]),
|
||||
|
||||
#define S_MSTAFF_FX2_X1 (S_MSTAFF_FX2_1+4)
|
||||
S_BRIGHT (MSP2, 'E', 4, A_BeAdditive , &States[S_MSTAFF_FX2_X1+1]),
|
||||
S_BRIGHT (MSP2, 'F', 5, A_Explode , &States[S_MSTAFF_FX2_X1+2]),
|
||||
S_BRIGHT (MSP2, 'G', 5, NULL , &States[S_MSTAFF_FX2_X1+3]),
|
||||
S_BRIGHT (MSP2, 'H', 5, NULL , &States[S_MSTAFF_FX2_X1+4]),
|
||||
S_BRIGHT (MSP2, 'I', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMageStaffFX2, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (17)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Damage (4)
|
||||
PROP_DamageType (NAME_Fire)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_SEEKERMISSILE)
|
||||
PROP_Flags4 (MF4_EXTREMEDEATH)
|
||||
|
||||
PROP_SpawnState (S_MSTAFF_FX2_1)
|
||||
PROP_DeathState (S_MSTAFF_FX2_X1)
|
||||
|
||||
PROP_DeathSound ("MageStaffExplode")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMageStaffFX2)
|
||||
|
||||
void AMageStaffFX2::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
|
||||
{
|
||||
|
|
|
@ -15,100 +15,16 @@ static FRandom pr_smoke ("MWandSmoke");
|
|||
|
||||
void A_MWandAttack (AActor *actor);
|
||||
|
||||
// The Mage's Wand ----------------------------------------------------------
|
||||
|
||||
class AMWeapWand : public AMageWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AMWeapWand, AMageWeapon)
|
||||
};
|
||||
|
||||
FState AMWeapWand::States[] =
|
||||
{
|
||||
#define S_MWANDREADY 0
|
||||
S_NORMAL (MWND, 'A', 1, A_WeaponReady , &States[S_MWANDREADY]),
|
||||
|
||||
#define S_MWANDDOWN (S_MWANDREADY+1)
|
||||
S_NORMAL (MWND, 'A', 1, A_Lower , &States[S_MWANDDOWN]),
|
||||
|
||||
#define S_MWANDUP (S_MWANDDOWN+1)
|
||||
S_NORMAL (MWND, 'A', 1, A_Raise , &States[S_MWANDUP]),
|
||||
|
||||
#define S_MWANDATK (S_MWANDUP+1)
|
||||
S_NORMAL (MWND, 'A', 6, NULL , &States[S_MWANDATK+1]),
|
||||
S_BRIGHT2 (MWND, 'B', 6, A_MWandAttack , &States[S_MWANDATK+2], 0, 48),
|
||||
S_NORMAL2 (MWND, 'A', 3, NULL , &States[S_MWANDATK+3], 0, 40),
|
||||
S_NORMAL2 (MWND, 'A', 3, A_ReFire , &States[S_MWANDREADY], 0, 36),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMWeapWand, Hexen, -1, 0)
|
||||
PROP_Weapon_SelectionOrder (3600)
|
||||
PROP_Weapon_UpState (S_MWANDUP)
|
||||
PROP_Weapon_DownState (S_MWANDDOWN)
|
||||
PROP_Weapon_ReadyState (S_MWANDREADY)
|
||||
PROP_Weapon_AtkState (S_MWANDATK)
|
||||
PROP_Weapon_Kickback (0)
|
||||
PROP_Weapon_YAdjust (9)
|
||||
PROP_Weapon_MoveCombatDist (25000000)
|
||||
PROP_Weapon_ProjectileType ("MageWandMissile")
|
||||
END_DEFAULTS
|
||||
|
||||
// Wand Smoke ---------------------------------------------------------------
|
||||
|
||||
class AMageWandSmoke : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMageWandSmoke, AActor)
|
||||
};
|
||||
|
||||
FState AMageWandSmoke::States[] =
|
||||
{
|
||||
S_NORMAL (MWND, 'C', 4, NULL , &States[1]),
|
||||
S_NORMAL (MWND, 'D', 4, NULL , &States[2]),
|
||||
S_NORMAL (MWND, 'C', 4, NULL , &States[3]),
|
||||
S_NORMAL (MWND, 'D', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMageWandSmoke, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SHADOW)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_CANNOTPUSH|MF2_NODMGTHRUST)
|
||||
PROP_SpawnState (0)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
END_DEFAULTS
|
||||
|
||||
// Wand Missile -------------------------------------------------------------
|
||||
|
||||
class AMageWandMissile : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMageWandMissile, AActor)
|
||||
DECLARE_CLASS(AMageWandMissile, AActor)
|
||||
public:
|
||||
void Tick ();
|
||||
};
|
||||
|
||||
FState AMageWandMissile::States[] =
|
||||
{
|
||||
#define S_MWAND_MISSILE 0
|
||||
S_BRIGHT (MWND, 'C', 4, NULL , &States[S_MWAND_MISSILE+1]),
|
||||
S_BRIGHT (MWND, 'D', 4, NULL , &States[S_MWAND_MISSILE]),
|
||||
|
||||
#define S_MWANDPUFF (S_MWAND_MISSILE+2)
|
||||
S_BRIGHT (MWND, 'E', 4, NULL , &States[S_MWANDPUFF+1]),
|
||||
S_BRIGHT (MWND, 'F', 3, NULL , &States[S_MWANDPUFF+2]),
|
||||
S_BRIGHT (MWND, 'G', 4, NULL , &States[S_MWANDPUFF+3]),
|
||||
S_BRIGHT (MWND, 'H', 3, NULL , &States[S_MWANDPUFF+4]),
|
||||
S_BRIGHT (MWND, 'I', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMageWandMissile, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (184)
|
||||
PROP_RadiusFixed (12)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Damage (2)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_RIP|MF2_CANNOTPUSH|MF2_NODMGTHRUST|MF2_IMPACT|MF2_PCROSS)
|
||||
|
||||
PROP_SpawnState (S_MWAND_MISSILE)
|
||||
PROP_DeathState (S_MWANDPUFF)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AMageWandMissile)
|
||||
|
||||
void AMageWandMissile::Tick ()
|
||||
{
|
||||
|
@ -167,7 +83,7 @@ void AMageWandMissile::Tick ()
|
|||
{
|
||||
hitz = floorz;
|
||||
}
|
||||
Spawn<AMageWandSmoke> (x, y, hitz, ALLOW_REPLACE);
|
||||
Spawn ("MageWandSmoke", x, y, hitz, ALLOW_REPLACE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
89
wadsrc/static/actors/hexen/magecone.txt
Normal file
89
wadsrc/static/actors/hexen/magecone.txt
Normal file
|
@ -0,0 +1,89 @@
|
|||
|
||||
// The Mage's Frost Cone ----------------------------------------------------
|
||||
|
||||
ACTOR MWeapFrost : MageWeapon 53
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 36
|
||||
+BLOODSPLATTER
|
||||
Weapon.SelectionOrder 1700
|
||||
Weapon.AmmoUse1 3
|
||||
Weapon.AmmoGive1 25
|
||||
Weapon.KickBack 150
|
||||
Weapon.YAdjust 20
|
||||
Weapon.AmmoType1 "Mana1"
|
||||
Inventory.PickupMessage "$TXT_WEAPON_M2"
|
||||
|
||||
action native A_FireConePL1();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WMCS ABC 8 Bright
|
||||
Loop
|
||||
Select:
|
||||
CONE A 1 A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
CONE A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
CONE A 1 A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
CONE B 3
|
||||
CONE C 4
|
||||
Hold:
|
||||
CONE D 3
|
||||
CONE E 5
|
||||
CONE F 3 A_FireConePL1
|
||||
CONE G 3
|
||||
CONE A 9
|
||||
CONE A 10 A_ReFire
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Frost Missile ------------------------------------------------------------
|
||||
|
||||
ACTOR FrostMissile native
|
||||
{
|
||||
Speed 25
|
||||
Radius 13
|
||||
Height 8
|
||||
Damage 1
|
||||
DamageType "Ice"
|
||||
Projectile
|
||||
DeathSound "MageShardsExplode"
|
||||
|
||||
action native A_ShedShard();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
SHRD A 2 Bright
|
||||
SHRD A 3 Bright A_ShedShard
|
||||
SHRD B 3 Bright
|
||||
SHRD C 3 Bright
|
||||
Loop
|
||||
Death:
|
||||
SHEX ABCDE 5 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Ice Shard ----------------------------------------------------------------
|
||||
|
||||
ACTOR IceShard : FrostMissile
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 65
|
||||
DamageType "Ice"
|
||||
+NOTELEPORT
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
SHRD ABC 3 Bright
|
||||
Loop
|
||||
}
|
||||
}
|
148
wadsrc/static/actors/hexen/magelightning.txt
Normal file
148
wadsrc/static/actors/hexen/magelightning.txt
Normal file
|
@ -0,0 +1,148 @@
|
|||
|
||||
// The Mage's Lightning Arc of Death ----------------------------------------
|
||||
|
||||
ACTOR MWeapLightning : MageWeapon 8040
|
||||
{
|
||||
Game Hexen
|
||||
+NOGRAVITY
|
||||
Weapon.SelectionOrder 1100
|
||||
Weapon.AmmoUse1 5
|
||||
Weapon.AmmoGive1 25
|
||||
Weapon.KickBack 0
|
||||
Weapon.YAdjust 20
|
||||
Weapon.AmmoType1 "Mana2"
|
||||
Inventory.PickupMessage "$TXT_WEAPON_M3"
|
||||
|
||||
action native A_LightningReady();
|
||||
action native A_MLightningAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WMLG ABCDEFGH 4 Bright
|
||||
Loop
|
||||
Select:
|
||||
MLNG A 1 Bright A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
MLNG A 1 Bright A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
MLNG AAAAA 1 Bright A_WeaponReady
|
||||
MLNG A 1 Bright A_LightningReady
|
||||
MLNG BBBBBB 1 Bright A_WeaponReady
|
||||
MLNG CCCCC 1 Bright A_WeaponReady
|
||||
MLNG C 1 Bright A_LightningReady
|
||||
MLNG BBBBBB 1 Bright A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
MLNG DE 3 Bright
|
||||
MLNG F 4 Bright A_MLightningAttack
|
||||
MLNG G 4 Bright
|
||||
MLNG HI 3 Bright
|
||||
MLNG I 6 Bright Offset (0, 199)
|
||||
MLNG C 2 Bright Offset (0, 55)
|
||||
MLNG B 2 Bright Offset (0, 50)
|
||||
MLNG B 2 Bright Offset (0, 45)
|
||||
MLNG B 2 Bright Offset (0, 40)
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Ceiling Lightning --------------------------------------------------------
|
||||
|
||||
ACTOR Lightning native
|
||||
{
|
||||
}
|
||||
|
||||
ACTOR LightningCeiling : Lightning
|
||||
{
|
||||
Health 144
|
||||
Speed 25
|
||||
Radius 16
|
||||
Height 40
|
||||
Damage 8
|
||||
Projectile
|
||||
+CEILINGHUGGER
|
||||
RenderStyle Add
|
||||
|
||||
action native A_LightningZap();
|
||||
action native A_LightningClip();
|
||||
action native A_LightningRemove();
|
||||
action native A_FreeTargMobj();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MLFX A 2 Bright A_LightningZap
|
||||
MLFX BCD 2 Bright A_LightningClip
|
||||
Loop
|
||||
Death:
|
||||
MLF2 A 2 Bright A_LightningRemove
|
||||
MLF2 BCDEKLM 3 Bright
|
||||
ACLO E 35
|
||||
MLF2 NO 3 Bright
|
||||
MLF2 P 4 Bright
|
||||
MLF2 QP 3 Bright
|
||||
MLF2 Q 4 Bright
|
||||
MLF2 P 3 Bright
|
||||
MLF2 O 3 Bright
|
||||
MLF2 P 3 Bright
|
||||
MLF2 P 1 Bright A_HideThing
|
||||
ACLO E 1050 A_FreeTargMobj
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Floor Lightning ----------------------------------------------------------
|
||||
|
||||
ACTOR LightningFloor : LightningCeiling
|
||||
{
|
||||
-CEILINGHUGGER
|
||||
+FLOORHUGGER
|
||||
RenderStyle Add
|
||||
|
||||
action native A_LastZap();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MLFX E 2 Bright A_LightningZap
|
||||
MLFX FGH 2 Bright A_LightningClip
|
||||
Loop
|
||||
Death:
|
||||
MLF2 F 2 Bright A_LightningRemove
|
||||
MLF2 GHIJKLM 3 Bright
|
||||
ACLO E 20
|
||||
MLF2 NO 3 Bright
|
||||
MLF2 P 4 Bright
|
||||
MLF2 QP 3 Bright
|
||||
MLF2 Q 4 Bright A_LastZap
|
||||
MLF2 POP 3 Bright
|
||||
MLF2 P 1 Bright A_HideThing
|
||||
Goto Super::Death + 19
|
||||
}
|
||||
}
|
||||
|
||||
// Lightning Zap ------------------------------------------------------------
|
||||
|
||||
ACTOR LightningZap native
|
||||
{
|
||||
Radius 15
|
||||
Height 35
|
||||
Damage 2
|
||||
+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE
|
||||
RenderStyle Add
|
||||
|
||||
action native A_ZapMimic();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MLFX IJKLM 2 Bright A_ZapMimic
|
||||
Loop
|
||||
Death:
|
||||
MLFX NOPQRSTU 2 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
139
wadsrc/static/actors/hexen/magestaff.txt
Normal file
139
wadsrc/static/actors/hexen/magestaff.txt
Normal file
|
@ -0,0 +1,139 @@
|
|||
|
||||
// Mage Weapon Piece --------------------------------------------------------
|
||||
|
||||
ACTOR MageWeaponPiece : FourthWeaponPiece native
|
||||
{
|
||||
Inventory.PickupMessage "$TXT_BLOODSCOURGE_PIECE"
|
||||
}
|
||||
|
||||
// Mage Weapon Piece 1 ------------------------------------------------------
|
||||
|
||||
ACTOR MWeaponPiece1 : MageWeaponPiece 21 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 37
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WMS1 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Mage Weapon Piece 2 ------------------------------------------------------
|
||||
|
||||
ACTOR MWeaponPiece2 : MageWeaponPiece 22 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 38
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WMS2 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Mage Weapon Piece 3 ------------------------------------------------------
|
||||
|
||||
ACTOR MWeaponPiece3 : MageWeaponPiece 23 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 39
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WMS3 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Bloodscourge Drop --------------------------------------------------------
|
||||
|
||||
ACTOR BloodscourgeDrop
|
||||
{
|
||||
action native A_DropBloodscourgePieces();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 1
|
||||
TNT1 A 1 A_DropBloodscourgePieces
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// The Mages's Staff (Bloodscourge) -----------------------------------------
|
||||
|
||||
ACTOR MWeapBloodscourge : MageWeapon native
|
||||
{
|
||||
Weapon.SelectionOrder 3100
|
||||
Weapon.AmmoUse1 15
|
||||
Weapon.AmmoUse2 15
|
||||
Weapon.KickBack 150
|
||||
Weapon.YAdjust 20
|
||||
Weapon.AmmoType1 "Mana1"
|
||||
Weapon.AmmoType2 "Mana2"
|
||||
+WEAPON.PRIMARY_USES_BOTH
|
||||
Inventory.PickupMessage "$TXT_WEAPON_M4"
|
||||
|
||||
action native A_MStaffAttack();
|
||||
action native A_MStaffPalette();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A -1
|
||||
Stop
|
||||
Select:
|
||||
MSTF A 1 A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
MSTF A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
MSTF AAAAAABBBBBBCCCCCCDDDDDDEEEEEEFFFFF 1 A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
MSTF G 4 Offset (0, 40)
|
||||
MSTF H 4 Bright Offset (0, 48) A_MStaffAttack
|
||||
MSTF H 2 Bright Offset (0, 48) A_MStaffPalette
|
||||
MSTF II 2 Offset (0, 48) A_MStaffPalette
|
||||
MSTF I 1 Offset (0, 40)
|
||||
MSTF J 5 Offset (0, 36)
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Mage Staff FX2 (Bloodscourge) --------------------------------------------
|
||||
|
||||
ACTOR MageStaffFX2 native
|
||||
{
|
||||
Speed 18
|
||||
Height 8
|
||||
Damage 4
|
||||
DamageType "Fire"
|
||||
Projectile
|
||||
+SEEKERMISSILE
|
||||
+EXTREMEDEATH
|
||||
DeathSound "MageStaffExplode"
|
||||
|
||||
action native A_MStaffTrack();
|
||||
action native A_BeAdditive();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MSP2 ABCD 2 Bright A_MStaffTrack
|
||||
Loop
|
||||
Death:
|
||||
MSP2 E 4 Bright A_BeAdditive
|
||||
MSP2 F 5 Bright A_Explode (80, 192, 0)
|
||||
MSP2 GH 5 Bright
|
||||
MSP2 I 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
69
wadsrc/static/actors/hexen/magewand.txt
Normal file
69
wadsrc/static/actors/hexen/magewand.txt
Normal file
|
@ -0,0 +1,69 @@
|
|||
|
||||
// The Mage's Wand ----------------------------------------------------------
|
||||
|
||||
ACTOR MWeapWand : MageWeapon
|
||||
{
|
||||
Weapon.SelectionOrder 3600
|
||||
Weapon.KickBack 0
|
||||
Weapon.YAdjust 9
|
||||
States
|
||||
{
|
||||
Select:
|
||||
MWND A 1 A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
MWND A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
MWND A 1 A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
MWND A 6
|
||||
MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("MageWandMissile")
|
||||
MWND A 3 Offset (0, 40)
|
||||
MWND A 3 Offset (0, 36) A_ReFire
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Wand Smoke ---------------------------------------------------------------
|
||||
|
||||
ACTOR MageWandSmoke
|
||||
{
|
||||
+NOBLOCKMAP +NOGRAVITY +SHADOW
|
||||
+NOTELEPORT +CANNOTPUSH +NODAMAGETHRUST
|
||||
RenderStyle Translucent
|
||||
Alpha 0.6
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MWND CDCD 4
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Wand Missile -------------------------------------------------------------
|
||||
|
||||
ACTOR MageWandMissile native
|
||||
{
|
||||
Speed 184
|
||||
Radius 12
|
||||
Height 8
|
||||
Damage 2
|
||||
Projectile
|
||||
+RIPPER +CANNOTPUSH +NODAMAGETHRUST
|
||||
SeeSound "MageWandFire"
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MWND CD 4 Bright
|
||||
Loop
|
||||
Death:
|
||||
MWND E 4 Bright
|
||||
MWND F 3 Bright
|
||||
MWND G 4 Bright
|
||||
MWND H 3 Bright
|
||||
MWND I 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
|
@ -81,7 +81,6 @@
|
|||
#include "actors/hexen/ettin.txt"
|
||||
#include "actors/hexen/centaur.txt"
|
||||
#include "actors/hexen/demons.txt"
|
||||
#include "actors/hexen/clericmace.txt"
|
||||
#include "actors/hexen/firedemon.txt"
|
||||
#include "actors/hexen/fog.txt"
|
||||
#include "actors/hexen/summon.txt"
|
||||
|
@ -93,9 +92,14 @@
|
|||
#include "actors/hexen/bishop.txt"
|
||||
#include "actors/hexen/blastradius.txt"
|
||||
#include "actors/hexen/boostarmor.txt"
|
||||
#include "actors/hexen/clericmace.txt"
|
||||
#include "actors/hexen/clericflame.txt"
|
||||
#include "actors/hexen/clericholy.txt"
|
||||
#include "actors/hexen/clericstaff.txt"
|
||||
#include "actors/hexen/magewand.txt"
|
||||
#include "actors/hexen/magecone.txt"
|
||||
#include "actors/hexen/magelightning.txt"
|
||||
#include "actors/hexen/magestaff.txt"
|
||||
|
||||
#include "actors/strife/strifeplayer.txt"
|
||||
#include "actors/strife/spectral.txt"
|
||||
|
|
Loading…
Reference in a new issue