- Added more DECORATE conversions by Karate Chris.

SVN r1108 (trunk)
This commit is contained in:
Christoph Oelckers 2008-08-03 19:42:24 +00:00
parent affd0e5034
commit cc99d150a3
14 changed files with 497 additions and 656 deletions

View File

@ -160,6 +160,21 @@ ACTOR(MaceBallImpact2)
ACTOR(DeathBallImpact)
ACTOR(BatSpawnInit)
ACTOR(BatSpawn)
ACTOR(BatMove)
ACTOR(BishopDecide)
ACTOR(BishopDoBlur)
ACTOR(BishopSpawnBlur)
ACTOR(BishopPainBlur)
ACTOR(BishopChase)
ACTOR(BishopAttack)
ACTOR(BishopAttack2)
ACTOR(BishopPuff)
WEAPON(CFlameAttack)
WEAPON(CFlameRotate)
ACTOR(CFlamePuff)
WEAPON(CFlameMissile)
WEAPON(CMaceAttack)
ACTOR(FiredRocks)
ACTOR(FiredChase)

View File

@ -7,77 +7,6 @@
static FRandom pr_batspawn ("BatSpawn");
static FRandom pr_batmove ("BatMove");
void A_BatSpawnInit (AActor *);
void A_BatSpawn (AActor *);
void A_BatMove (AActor *);
// Bat Spawner --------------------------------------------------------------
class ABatSpawner : public AActor
{
DECLARE_ACTOR (ABatSpawner, AActor)
public:
void Activate (AActor *activator);
void Deactivate (AActor *activator);
};
FState ABatSpawner::States[] =
{
#define S_SPAWNBATS1 0
S_NORMAL (TNT1, 'A', 2, NULL , &States[S_SPAWNBATS1+1]),
S_NORMAL (TNT1, 'A', 2, A_BatSpawnInit , &States[S_SPAWNBATS1+2]),
S_NORMAL (TNT1, 'A', 2, A_BatSpawn , &States[S_SPAWNBATS1+2]),
#define S_SPAWNBATS_OFF (S_SPAWNBATS1+3)
S_NORMAL (TNT1, 'A', -1, NULL , NULL)
};
IMPLEMENT_ACTOR (ABatSpawner, Hexen, 10225, 0)
PROP_Flags (MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_None)
PROP_SpawnState (S_SPAWNBATS1)
END_DEFAULTS
void ABatSpawner::Activate (AActor *activator)
{
SetState (&States[S_SPAWNBATS1]);
}
void ABatSpawner::Deactivate (AActor *activator)
{
SetState (&States[S_SPAWNBATS_OFF]);
}
// Bat ----------------------------------------------------------------------
class ABat : public AActor
{
DECLARE_ACTOR (ABat, AActor)
};
FState ABat::States[] =
{
#define S_BAT1 0
S_NORMAL (ABAT, 'A', 2, A_BatMove , &States[S_BAT1+1]),
S_NORMAL (ABAT, 'B', 2, A_BatMove , &States[S_BAT1+2]),
S_NORMAL (ABAT, 'C', 2, A_BatMove , &States[S_BAT1]),
#define S_BAT_DEATH (S_BAT1+3)
S_NORMAL (ABAT, 'A', 2, NULL , NULL),
};
IMPLEMENT_ACTOR (ABat, Hexen, -1, 0)
PROP_SpeedFixed (5)
PROP_RadiusFixed (3)
PROP_HeightFixed (3)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT|MF2_PASSMOBJ)
PROP_SpawnState (S_BAT1)
PROP_DeathState (S_BAT_DEATH)
END_DEFAULTS
//===========================================================================
// Bat Spawner Variables
// special1 frequency counter
@ -111,7 +40,7 @@ void A_BatSpawn (AActor *actor)
delta = actor->args[1];
if (delta==0) delta=1;
angle = actor->angle + (((pr_batspawn()%delta)-(delta>>1))<<24);
mo = P_SpawnMissileAngle (actor, RUNTIME_CLASS(ABat), angle, 0);
mo = P_SpawnMissileAngle (actor, PClass::FindClass ("Bat"), angle, 0);
if (mo)
{
mo->args[0] = pr_batspawn()&63; // floatbob index

View File

@ -14,216 +14,6 @@ static FRandom pr_doblur ("BishopDoBlur");
static FRandom pr_sblur ("BishopSpawnBlur");
static FRandom pr_pain ("BishopPainBlur");
void A_BishopDecide (AActor *);
void A_BishopDoBlur (AActor *);
void A_BishopSpawnBlur (AActor *);
void A_BishopPainBlur (AActor *);
void A_BishopChase (AActor *);
void A_BishopAttack (AActor *);
void A_BishopAttack2 (AActor *);
void A_BishopPuff (AActor *);
void A_SetAltShadow (AActor *);
void A_BishopMissileWeave (AActor *);
void A_BishopMissileSeek (AActor *);
// Bishop -------------------------------------------------------------------
FState ABishop::States[] =
{
#define S_BISHOP_LOOK 0
S_NORMAL (BISH, 'A', 10, A_Look , &States[S_BISHOP_LOOK+0]),
#define S_BISHOP_BLUR (S_BISHOP_LOOK+1)
S_NORMAL (BISH, 'A', 2, A_BishopDoBlur , &States[S_BISHOP_BLUR+1]),
S_NORMAL (BISH, 'A', 4, A_BishopSpawnBlur , &States[S_BISHOP_BLUR+1]),
#define S_BISHOP_WALK (S_BISHOP_BLUR+2)
S_NORMAL (BISH, 'A', 2, A_Chase , &States[S_BISHOP_WALK+1]),
S_NORMAL (BISH, 'A', 2, A_BishopChase , &States[S_BISHOP_WALK+2]),
S_NORMAL (BISH, 'A', 2, NULL , &States[S_BISHOP_WALK+3]),
S_NORMAL (BISH, 'B', 2, A_BishopChase , &States[S_BISHOP_WALK+4]),
S_NORMAL (BISH, 'B', 2, A_Chase , &States[S_BISHOP_WALK+5]),
S_NORMAL (BISH, 'B', 2, A_BishopChase , &States[S_BISHOP_WALK+6]), // S_BISHOP_DECIDE
#define S_BISHOP_DECIDE (S_BISHOP_WALK+6)
S_NORMAL (BISH, 'A', 1, A_BishopDecide , &States[S_BISHOP_WALK+0]),
#define S_BISHOP_ATK (S_BISHOP_DECIDE+1)
S_NORMAL (BISH, 'A', 3, A_FaceTarget , &States[S_BISHOP_ATK+1]),
S_BRIGHT (BISH, 'D', 3, A_FaceTarget , &States[S_BISHOP_ATK+2]),
S_BRIGHT (BISH, 'E', 3, A_FaceTarget , &States[S_BISHOP_ATK+3]),
S_BRIGHT (BISH, 'F', 3, A_BishopAttack , &States[S_BISHOP_ATK+4]),
S_BRIGHT (BISH, 'F', 5, A_BishopAttack2 , &States[S_BISHOP_ATK+4]),
#define S_BISHOP_PAIN (S_BISHOP_ATK+5)
S_NORMAL (BISH, 'C', 6, A_Pain , &States[S_BISHOP_PAIN+1]),
S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+2]),
S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+3]),
S_NORMAL (BISH, 'C', 6, A_BishopPainBlur , &States[S_BISHOP_PAIN+4]),
S_NORMAL (BISH, 'C', 0, NULL , &States[S_BISHOP_WALK+0]),
#define S_BISHOP_DEATH (S_BISHOP_PAIN+5)
S_NORMAL (BISH, 'G', 6, NULL , &States[S_BISHOP_DEATH+1]),
S_BRIGHT (BISH, 'H', 6, A_Scream , &States[S_BISHOP_DEATH+2]),
S_BRIGHT (BISH, 'I', 5, A_NoBlocking , &States[S_BISHOP_DEATH+3]),
S_BRIGHT (BISH, 'J', 5, A_Explode , &States[S_BISHOP_DEATH+4]),
S_BRIGHT (BISH, 'K', 5, NULL , &States[S_BISHOP_DEATH+5]),
S_BRIGHT (BISH, 'L', 4, NULL , &States[S_BISHOP_DEATH+6]),
S_BRIGHT (BISH, 'M', 4, NULL , &States[S_BISHOP_DEATH+7]),
S_NORMAL (BISH, 'N', 4, A_BishopPuff , &States[S_BISHOP_DEATH+8]),
S_NORMAL (BISH, 'O', 4, A_QueueCorpse , &States[S_BISHOP_DEATH+9]),
S_NORMAL (BISH, 'P', -1, NULL , NULL),
#define S_BISHOP_ICE (S_BISHOP_DEATH+10)
S_NORMAL (BISH, 'X', 5, A_FreezeDeath , &States[S_BISHOP_ICE+1]),
S_NORMAL (BISH, 'X', 1, A_FreezeDeathChunks , &States[S_BISHOP_ICE+1])
};
IMPLEMENT_ACTOR (ABishop, Hexen, 114, 19)
PROP_SpawnHealth (130)
PROP_RadiusFixed (22)
PROP_HeightFixed (65)
PROP_SpeedFixed (10)
PROP_PainChance (110)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_FLOAT|MF_NOGRAVITY|MF_NOBLOOD)
PROP_Flags2 (MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP)
PROP_Flags3 (MF3_DONTOVERLAP)
PROP_Flags4 (MF4_NOTARGETSWITCH)
PROP_SpawnState (S_BISHOP_LOOK)
PROP_SeeState (S_BISHOP_WALK)
PROP_PainState (S_BISHOP_PAIN)
PROP_MissileState (S_BISHOP_ATK)
PROP_DeathState (S_BISHOP_DEATH)
PROP_IDeathState (S_BISHOP_ICE)
PROP_SeeSound ("BishopSight")
PROP_AttackSound ("BishopAttack")
PROP_PainSound ("BishopPain")
PROP_DeathSound ("BishopDeath")
PROP_ActiveSound ("BishopActiveSounds")
PROP_Obituary("$OB_BISHOP")
END_DEFAULTS
void ABishop::GetExplodeParms (int &damage, int &distance, bool &hurtSource)
{ // Bishop radius death
damage = 25 + (pr_boom() & 15);
}
// Bishop puff --------------------------------------------------------------
class ABishopPuff : public AActor
{
DECLARE_ACTOR (ABishopPuff, AActor)
};
FState ABishopPuff::States[] =
{
S_NORMAL (BISH, 'Q', 5, NULL , &States[1]),
S_NORMAL (BISH, 'R', 5, NULL , &States[2]),
S_NORMAL (BISH, 'S', 5, NULL , &States[3]),
S_NORMAL (BISH, 'T', 5, NULL , &States[4]),
S_NORMAL (BISH, 'U', 6, NULL , &States[5]),
S_NORMAL (BISH, 'V', 6, NULL , &States[6]),
S_NORMAL (BISH, 'W', 5, NULL , NULL)
};
IMPLEMENT_ACTOR (ABishopPuff, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_SHADOW)
PROP_SpawnState (0)
END_DEFAULTS
// Bishop blur --------------------------------------------------------------
class ABishopBlur : public AActor
{
DECLARE_ACTOR (ABishopBlur, AActor)
};
FState ABishopBlur::States[] =
{
S_NORMAL (BISH, 'A', 16, NULL , &States[1]),
S_NORMAL (BISH, 'A', 8, A_SetAltShadow , NULL)
};
IMPLEMENT_ACTOR (ABishopBlur, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_SHADOW)
PROP_SpawnState (0)
END_DEFAULTS
// Bishop pain blur ---------------------------------------------------------
class ABishopPainBlur : public AActor
{
DECLARE_ACTOR (ABishopPainBlur, AActor)
};
FState ABishopPainBlur::States[] =
{
S_NORMAL (BISH, 'C', 8, NULL , NULL)
};
IMPLEMENT_ACTOR (ABishopPainBlur, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_SHADOW)
PROP_SpawnState (0)
END_DEFAULTS
// Bishop FX ----------------------------------------------------------------
class ABishopFX : public AActor
{
DECLARE_ACTOR (ABishopFX, AActor)
public:
int DoSpecialDamage (AActor *target, int damage);
};
FState ABishopFX::States[] =
{
#define S_BISHFX1 0
S_BRIGHT (BPFX, 'A', 1, A_BishopMissileWeave , &States[S_BISHFX1+1]),
S_BRIGHT (BPFX, 'B', 1, A_BishopMissileWeave , &States[S_BISHFX1+2]),
S_BRIGHT (BPFX, 'A', 1, A_BishopMissileWeave , &States[S_BISHFX1+3]),
S_BRIGHT (BPFX, 'B', 1, A_BishopMissileWeave , &States[S_BISHFX1+4]),
S_BRIGHT (BPFX, 'B', 0, A_BishopMissileSeek , &States[S_BISHFX1+0]),
#define S_BISHFXI1 (S_BISHFX1+5)
S_BRIGHT (BPFX, 'C', 4, NULL , &States[S_BISHFXI1+1]),
S_BRIGHT (BPFX, 'D', 4, NULL , &States[S_BISHFXI1+2]),
S_BRIGHT (BPFX, 'E', 4, NULL , &States[S_BISHFXI1+3]),
S_BRIGHT (BPFX, 'F', 4, NULL , &States[S_BISHFXI1+4]),
S_BRIGHT (BPFX, 'G', 3, NULL , &States[S_BISHFXI1+5]),
S_BRIGHT (BPFX, 'H', 3, NULL , NULL)
};
IMPLEMENT_ACTOR (ABishopFX, Hexen, -1, 0)
PROP_RadiusFixed (10)
PROP_HeightFixed (6)
PROP_SpeedFixed (10)
PROP_Damage (1)
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
PROP_Flags2 (MF2_NOTELEPORT|MF2_SEEKERMISSILE)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (S_BISHFX1)
PROP_DeathState (S_BISHFXI1)
PROP_DeathSound ("BishopMissileExplode")
END_DEFAULTS
int ABishopFX::DoSpecialDamage (AActor *target, int damage)
{ // Bishops are just too nasty
return damage >> 1;
}
//============================================================================
//
// A_BishopAttack
@ -264,7 +54,7 @@ void A_BishopAttack2 (AActor *actor)
actor->SetState (actor->SeeState);
return;
}
mo = P_SpawnMissile (actor, actor->target, RUNTIME_CLASS(ABishopFX));
mo = P_SpawnMissile (actor, actor->target, PClass::FindClass("BishopFX"));
if (mo != NULL)
{
mo->tracer = actor->target;
@ -302,17 +92,6 @@ void A_BishopMissileWeave (AActor *actor)
actor->special2 = weaveZ + (weaveXY<<16);
}
//============================================================================
//
// A_BishopMissileSeek
//
//============================================================================
void A_BishopMissileSeek (AActor *actor)
{
P_SeekerMissile (actor, ANGLE_1*2, ANGLE_1*3);
}
//============================================================================
//
// A_BishopDecide
@ -327,7 +106,7 @@ void A_BishopDecide (AActor *actor)
}
else
{
actor->SetState (&ABishop::States[S_BISHOP_BLUR]);
actor->SetState (actor->FindState ("Blur"));
}
}
@ -378,7 +157,7 @@ void A_BishopSpawnBlur (AActor *actor)
actor->SetState (actor->MissileState);
}
}
mo = Spawn<ABishopBlur> (actor->x, actor->y, actor->z, ALLOW_REPLACE);
mo = Spawn ("BishopBlur", actor->x, actor->y, actor->z, ALLOW_REPLACE);
if (mo)
{
mo->angle = actor->angle;
@ -408,7 +187,7 @@ void A_BishopPuff (AActor *actor)
{
AActor *mo;
mo = Spawn<ABishopPuff> (actor->x, actor->y, actor->z + 40*FRACUNIT, ALLOW_REPLACE);
mo = Spawn ("BishopPuff", actor->x, actor->y, actor->z + 40*FRACUNIT, ALLOW_REPLACE);
if (mo)
{
mo->momz = FRACUNIT/2;
@ -427,27 +206,15 @@ void A_BishopPainBlur (AActor *actor)
if (pr_pain() < 64)
{
actor->SetState (&ABishop::States[S_BISHOP_BLUR]);
actor->SetState (actor->FindState ("Blur"));
return;
}
fixed_t x = actor->x + (pr_pain.Random2()<<12);
fixed_t y = actor->y + (pr_pain.Random2()<<12);
fixed_t z = actor->z + (pr_pain.Random2()<<11);
mo = Spawn<ABishopPainBlur> (x, y, z, ALLOW_REPLACE);
mo = Spawn ("BishopPainBlur", x, y, z, ALLOW_REPLACE);
if (mo)
{
mo->angle = actor->angle;
}
}
//==========================================================================
//
// A_SetAltShadow
//
//==========================================================================
void A_SetAltShadow (AActor *actor)
{
actor->alpha = HX_ALTSHADOW;
actor->RenderStyle = STYLE_Translucent;
}

View File

@ -14,64 +14,14 @@
class AArtiBlastRadius : public AInventory
{
DECLARE_ACTOR (AArtiBlastRadius, AInventory)
DECLARE_CLASS (AArtiBlastRadius, AInventory)
public:
bool Use (bool pickup);
protected:
void BlastActor (AActor *victim, fixed_t strength);
};
FState AArtiBlastRadius::States[] =
{
S_BRIGHT (BLST, 'A', 4, NULL , &States[1]),
S_BRIGHT (BLST, 'B', 4, NULL , &States[2]),
S_BRIGHT (BLST, 'C', 4, NULL , &States[3]),
S_BRIGHT (BLST, 'D', 4, NULL , &States[4]),
S_BRIGHT (BLST, 'E', 4, NULL , &States[5]),
S_BRIGHT (BLST, 'F', 4, NULL , &States[6]),
S_BRIGHT (BLST, 'G', 4, NULL , &States[7]),
S_BRIGHT (BLST, 'H', 4, NULL , &States[0]),
};
IMPLEMENT_ACTOR (AArtiBlastRadius, Hexen, 10110, 74)
PROP_Flags (MF_SPECIAL)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
PROP_Inventory_DefMaxAmount
PROP_Inventory_PickupFlash (1)
PROP_Inventory_FlagsSet (IF_INVBAR|IF_FANCYPICKUPSOUND)
PROP_Inventory_Icon ("ARTIBLST")
PROP_Inventory_PickupSound ("misc/p_pkup")
PROP_Inventory_PickupMessage("$TXT_ARTIBLASTRADIUS")
END_DEFAULTS
// Blast Effect -------------------------------------------------------------
class ABlastEffect : public AActor
{
DECLARE_ACTOR (ABlastEffect, AActor)
};
FState ABlastEffect::States[] =
{
S_NORMAL (RADE, 'A', 4, NULL , &States[1]),
S_NORMAL (RADE, 'B', 4, NULL , &States[2]),
S_NORMAL (RADE, 'C', 4, NULL , &States[3]),
S_NORMAL (RADE, 'D', 4, NULL , &States[4]),
S_NORMAL (RADE, 'E', 4, NULL , &States[5]),
S_NORMAL (RADE, 'F', 4, NULL , &States[6]),
S_NORMAL (RADE, 'G', 4, NULL , &States[7]),
S_NORMAL (RADE, 'H', 4, NULL , &States[8]),
S_NORMAL (RADE, 'I', 4, NULL , NULL)
};
IMPLEMENT_ACTOR (ABlastEffect, Any, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (TRANSLUC66)
PROP_SpawnState (0)
END_DEFAULTS
IMPLEMENT_CLASS (AArtiBlastRadius)
//==========================================================================
//
@ -182,7 +132,7 @@ void AArtiBlastRadius::BlastActor (AActor *victim, fixed_t strength)
x = victim->x + FixedMul (victim->radius+FRACUNIT, finecosine[ang]);
y = victim->y + FixedMul (victim->radius+FRACUNIT, finesine[ang]);
z = victim->z - victim->floorclip + (victim->height>>1);
mo = Spawn<ABlastEffect> (x, y, z, ALLOW_REPLACE);
mo = Spawn ("BlastEffect", x, y, z, ALLOW_REPLACE);
if (mo)
{
mo->momx = victim->momx;

View File

@ -10,35 +10,12 @@
class AArtiBoostArmor : public AInventory
{
DECLARE_ACTOR (AArtiBoostArmor, AInventory)
DECLARE_CLASS (AArtiBoostArmor, AInventory)
public:
bool Use (bool pickup);
};
FState AArtiBoostArmor::States[] =
{
#define S_ARTI_ARMOR1 0
S_BRIGHT (BRAC, 'A', 4, NULL , &States[1]),
S_BRIGHT (BRAC, 'B', 4, NULL , &States[2]),
S_BRIGHT (BRAC, 'C', 4, NULL , &States[3]),
S_BRIGHT (BRAC, 'D', 4, NULL , &States[4]),
S_BRIGHT (BRAC, 'E', 4, NULL , &States[5]),
S_BRIGHT (BRAC, 'F', 4, NULL , &States[6]),
S_BRIGHT (BRAC, 'G', 4, NULL , &States[7]),
S_BRIGHT (BRAC, 'H', 4, NULL , &States[0]),
};
IMPLEMENT_ACTOR (AArtiBoostArmor, Hexen, 8041, 22)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
PROP_Inventory_DefMaxAmount
PROP_Inventory_PickupFlash (1)
PROP_Inventory_FlagsSet (IF_INVBAR|IF_FANCYPICKUPSOUND)
PROP_Inventory_Icon ("ARTIBRAC")
PROP_Inventory_PickupSound ("misc/p_pkup")
PROP_Inventory_PickupMessage("$TXT_ARTIBOOSTARMOR")
END_DEFAULTS
IMPLEMENT_CLASS (AArtiBoostArmor)
bool AArtiBoostArmor::Use (bool pickup)
{

View File

@ -22,270 +22,17 @@ void A_CFlameRotate (AActor *);
void A_CFlamePuff (AActor *);
void A_CFlameMissile (AActor *);
// The Cleric's Flame Strike ------------------------------------------------
class ACWeapFlame : public AClericWeapon
{
DECLARE_ACTOR (ACWeapFlame, AClericWeapon)
};
FState ACWeapFlame::States[] =
{
#define S_CFLAME1 0
S_BRIGHT (WCFM, 'A', 4, NULL , &States[S_CFLAME1+1]),
S_BRIGHT (WCFM, 'B', 4, NULL , &States[S_CFLAME1+2]),
S_BRIGHT (WCFM, 'C', 4, NULL , &States[S_CFLAME1+3]),
S_BRIGHT (WCFM, 'D', 4, NULL , &States[S_CFLAME1+4]),
S_BRIGHT (WCFM, 'E', 4, NULL , &States[S_CFLAME1+5]),
S_BRIGHT (WCFM, 'F', 4, NULL , &States[S_CFLAME1+6]),
S_BRIGHT (WCFM, 'G', 4, NULL , &States[S_CFLAME1+7]),
S_BRIGHT (WCFM, 'H', 4, NULL , &States[S_CFLAME1]),
#define S_CFLAMEREADY (S_CFLAME1+8)
S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+1]),
S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+2]),
S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+3]),
S_NORMAL (CFLM, 'A', 1, A_WeaponReady , &States[S_CFLAMEREADY+4]),
S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+5]),
S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+6]),
S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+7]),
S_NORMAL (CFLM, 'B', 1, A_WeaponReady , &States[S_CFLAMEREADY+8]),
S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+9]),
S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+10]),
S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY+11]),
S_NORMAL (CFLM, 'C', 1, A_WeaponReady , &States[S_CFLAMEREADY]),
#define S_CFLAMEDOWN (S_CFLAMEREADY+12)
S_NORMAL (CFLM, 'A', 1, A_Lower , &States[S_CFLAMEDOWN]),
#define S_CFLAMEUP (S_CFLAMEDOWN+1)
S_NORMAL (CFLM, 'A', 1, A_Raise , &States[S_CFLAMEUP]),
#define S_CFLAMEATK (S_CFLAMEUP+1)
S_NORMAL2 (CFLM, 'A', 2, NULL , &States[S_CFLAMEATK+1], 0, 40),
S_NORMAL2 (CFLM, 'D', 2, NULL , &States[S_CFLAMEATK+2], 0, 50),
S_NORMAL2 (CFLM, 'D', 2, NULL , &States[S_CFLAMEATK+3], 0, 36),
S_BRIGHT (CFLM, 'E', 4, NULL , &States[S_CFLAMEATK+4]),
S_BRIGHT (CFLM, 'F', 4, A_CFlameAttack , &States[S_CFLAMEATK+5]),
S_BRIGHT (CFLM, 'E', 4, NULL , &States[S_CFLAMEATK+6]),
S_NORMAL2 (CFLM, 'G', 2, NULL , &States[S_CFLAMEATK+7], 0, 40),
S_NORMAL (CFLM, 'G', 2, NULL , &States[S_CFLAMEREADY]),
};
IMPLEMENT_ACTOR (ACWeapFlame, Hexen, 8009, 0)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_SpawnState (S_CFLAME1)
PROP_Weapon_SelectionOrder (1000)
PROP_Weapon_AmmoUse1 (4)
PROP_Weapon_AmmoGive1 (25)
PROP_Weapon_UpState (S_CFLAMEUP)
PROP_Weapon_DownState (S_CFLAMEDOWN)
PROP_Weapon_ReadyState (S_CFLAMEREADY)
PROP_Weapon_AtkState (S_CFLAMEATK)
PROP_Weapon_Kickback (150)
PROP_Weapon_YAdjust (10)
PROP_Weapon_MoveCombatDist (27000000)
PROP_Weapon_AmmoType1 ("Mana2")
PROP_Weapon_ProjectileType ("CFlameMissile")
PROP_Inventory_PickupMessage("$TXT_WEAPON_C3")
END_DEFAULTS
// Floor Flame --------------------------------------------------------------
class ACFlameFloor : public AActor
{
DECLARE_ACTOR (ACFlameFloor, AActor)
};
FState ACFlameFloor::States[] =
{
S_BRIGHT (CFFX, 'N', 5, NULL , &States[1]),
S_BRIGHT (CFFX, 'O', 4, NULL , &States[2]),
S_BRIGHT (CFFX, 'P', 3, NULL , NULL),
};
IMPLEMENT_ACTOR (ACFlameFloor, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (0)
END_DEFAULTS
// Flame Puff ---------------------------------------------------------------
class AFlamePuff : public AActor
{
DECLARE_ACTOR (AFlamePuff, AActor)
};
FState AFlamePuff::States[] =
{
S_BRIGHT (CFFX, 'A', 3, NULL , &States[1]),
S_BRIGHT (CFFX, 'B', 3, NULL , &States[2]),
S_BRIGHT (CFFX, 'C', 3, NULL , &States[3]),
S_BRIGHT (CFFX, 'D', 4, NULL , &States[4]),
S_BRIGHT (CFFX, 'E', 3, NULL , &States[5]),
S_BRIGHT (CFFX, 'F', 4, NULL , &States[6]),
S_BRIGHT (CFFX, 'G', 3, NULL , &States[7]),
S_BRIGHT (CFFX, 'H', 4, NULL , &States[8]),
S_BRIGHT (CFFX, 'I', 3, NULL , &States[9]),
S_BRIGHT (CFFX, 'J', 4, NULL , &States[10]),
S_BRIGHT (CFFX, 'K', 3, NULL , &States[11]),
S_BRIGHT (CFFX, 'L', 4, NULL , &States[12]),
S_BRIGHT (CFFX, 'M', 3, NULL , NULL),
};
IMPLEMENT_ACTOR (AFlamePuff, Hexen, -1, 0)
PROP_RadiusFixed (1)
PROP_HeightFixed (1)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (0)
PROP_SeeSound ("ClericFlameExplode")
PROP_AttackSound ("ClericFlameExplode")
END_DEFAULTS
// Flame Puff 2 -------------------------------------------------------------
class AFlamePuff2 : public AActor
{
DECLARE_ACTOR (AFlamePuff2, AActor)
};
FState AFlamePuff2::States[] =
{
S_BRIGHT (CFFX, 'A', 3, NULL , &States[1]),
S_BRIGHT (CFFX, 'B', 3, NULL , &States[2]),
S_BRIGHT (CFFX, 'C', 3, NULL , &States[3]),
S_BRIGHT (CFFX, 'D', 4, NULL , &States[4]),
S_BRIGHT (CFFX, 'E', 3, NULL , &States[5]),
S_BRIGHT (CFFX, 'F', 4, NULL , &States[6]),
S_BRIGHT (CFFX, 'G', 3, NULL , &States[7]),
S_BRIGHT (CFFX, 'H', 4, NULL , &States[8]),
S_BRIGHT (CFFX, 'I', 3, NULL , &States[9]),
S_BRIGHT (CFFX, 'C', 3, NULL , &States[10]),
S_BRIGHT (CFFX, 'D', 4, NULL , &States[11]),
S_BRIGHT (CFFX, 'E', 3, NULL , &States[12]),
S_BRIGHT (CFFX, 'F', 4, NULL , &States[13]),
S_BRIGHT (CFFX, 'G', 3, NULL , &States[14]),
S_BRIGHT (CFFX, 'H', 4, NULL , &States[15]),
S_BRIGHT (CFFX, 'I', 3, NULL , &States[16]),
S_BRIGHT (CFFX, 'J', 4, NULL , &States[17]),
S_BRIGHT (CFFX, 'K', 3, NULL , &States[18]),
S_BRIGHT (CFFX, 'L', 4, NULL , &States[19]),
S_BRIGHT (CFFX, 'M', 3, NULL , NULL),
};
IMPLEMENT_ACTOR (AFlamePuff2, Hexen, -1, 0)
PROP_RadiusFixed (1)
PROP_HeightFixed (1)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (0)
PROP_SeeSound ("ClericFlameExplode")
PROP_AttackSound ("ClericFlameExplode")
END_DEFAULTS
// Circle Flame -------------------------------------------------------------
class ACircleFlame : public AActor
{
DECLARE_ACTOR (ACircleFlame, AActor)
public:
void GetExplodeParms (int &damage, int &dist, bool &hurtSource);
};
FState ACircleFlame::States[] =
{
#define S_CIRCLE_FLAME1 0
S_BRIGHT (CFCF, 'A', 4, NULL , &States[S_CIRCLE_FLAME1+1]),
S_BRIGHT (CFCF, 'B', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+2]),
S_BRIGHT (CFCF, 'C', 2, NULL , &States[S_CIRCLE_FLAME1+3]),
S_BRIGHT (CFCF, 'D', 1, NULL , &States[S_CIRCLE_FLAME1+4]),
S_BRIGHT (CFCF, 'E', 2, NULL , &States[S_CIRCLE_FLAME1+5]),
S_BRIGHT (CFCF, 'F', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+6]),
S_BRIGHT (CFCF, 'G', 1, NULL , &States[S_CIRCLE_FLAME1+7]),
S_BRIGHT (CFCF, 'H', 2, NULL , &States[S_CIRCLE_FLAME1+8]),
S_BRIGHT (CFCF, 'I', 2, NULL , &States[S_CIRCLE_FLAME1+9]),
S_BRIGHT (CFCF, 'J', 1, A_CFlameRotate , &States[S_CIRCLE_FLAME1+10]),
S_BRIGHT (CFCF, 'K', 2, NULL , &States[S_CIRCLE_FLAME1+11]),
S_BRIGHT (CFCF, 'L', 3, NULL , &States[S_CIRCLE_FLAME1+12]),
S_BRIGHT (CFCF, 'M', 3, NULL , &States[S_CIRCLE_FLAME1+13]),
S_BRIGHT (CFCF, 'N', 2, A_CFlameRotate , &States[S_CIRCLE_FLAME1+14]),
S_BRIGHT (CFCF, 'O', 3, NULL , &States[S_CIRCLE_FLAME1+15]),
S_BRIGHT (CFCF, 'P', 2, NULL , NULL),
#define S_CIRCLE_FLAME_X1 (S_CIRCLE_FLAME1+16)
S_BRIGHT (CFCF, 'Q', 3, NULL , &States[S_CIRCLE_FLAME_X1+1]),
S_BRIGHT (CFCF, 'R', 3, NULL , &States[S_CIRCLE_FLAME_X1+2]),
S_BRIGHT (CFCF, 'S', 3, A_Explode , &States[S_CIRCLE_FLAME_X1+3]),
S_BRIGHT (CFCF, 'T', 3, NULL , &States[S_CIRCLE_FLAME_X1+4]),
S_BRIGHT (CFCF, 'U', 3, NULL , &States[S_CIRCLE_FLAME_X1+5]),
S_BRIGHT (CFCF, 'V', 3, NULL , &States[S_CIRCLE_FLAME_X1+6]),
S_BRIGHT (CFCF, 'W', 3, NULL , &States[S_CIRCLE_FLAME_X1+7]),
S_BRIGHT (CFCF, 'X', 3, NULL , &States[S_CIRCLE_FLAME_X1+8]),
S_BRIGHT (CFCF, 'Y', 3, NULL , &States[S_CIRCLE_FLAME_X1+9]),
S_BRIGHT (CFCF, 'Z', 3, NULL , NULL),
};
IMPLEMENT_ACTOR (ACircleFlame, Hexen, -1, 0)
PROP_RadiusFixed (6)
PROP_Damage (2)
PROP_DamageType (NAME_Fire)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (S_CIRCLE_FLAME1)
PROP_DeathState (S_CIRCLE_FLAME_X1)
PROP_DeathSound ("ClericFlameCircle")
END_DEFAULTS
void ACircleFlame::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
{
damage = 20;
hurtSource = false;
}
// Flame Missile ------------------------------------------------------------
class ACFlameMissile : public AActor
{
DECLARE_ACTOR (ACFlameMissile, AActor)
DECLARE_CLASS (ACFlameMissile, AActor)
public:
void BeginPlay ();
void Tick ();
};
FState ACFlameMissile::States[] =
{
#define S_CFLAME_MISSILE1 0
S_BRIGHT (CFFX, 'A', 4, NULL , &States[S_CFLAME_MISSILE1+1]),
S_NORMAL (CFFX, 'A', 1, A_CFlamePuff , &AFlamePuff::States[0]),
#define S_CFLAME_MISSILE_X (S_CFLAME_MISSILE1+2)
S_BRIGHT (CFFX, 'A', 1, A_CFlameMissile , &AFlamePuff::States[0]),
};
IMPLEMENT_ACTOR (ACFlameMissile, Hexen, -1, 0)
PROP_SpeedFixed (200)
PROP_RadiusFixed (14)
PROP_HeightFixed (8)
PROP_Damage (8)
PROP_DamageType (NAME_Fire)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
PROP_RenderFlags (RF_INVISIBLE)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (S_CFLAME_MISSILE1)
PROP_DeathState (S_CFLAME_MISSILE_X)
END_DEFAULTS
IMPLEMENT_CLASS (ACFlameMissile)
void ACFlameMissile::BeginPlay ()
{
@ -347,7 +94,7 @@ void ACFlameMissile::Tick ()
{
newz = floorz;
}
mo = Spawn<ACFlameFloor> (x, y, newz, ALLOW_REPLACE);
mo = Spawn ("CFlameFloor", x, y, newz, ALLOW_REPLACE);
if (mo)
{
mo->angle = angle;
@ -432,7 +179,7 @@ void A_CFlameMissile (AActor *actor)
{
an = (i*ANG45)>>ANGLETOFINESHIFT;
an90 = (i*ANG45+ANG90)>>ANGLETOFINESHIFT;
mo = Spawn<ACircleFlame> (BlockingMobj->x+FixedMul(dist, finecosine[an]),
mo = Spawn ("CircleFlame", BlockingMobj->x+FixedMul(dist, finecosine[an]),
BlockingMobj->y+FixedMul(dist, finesine[an]),
BlockingMobj->z+5*FRACUNIT, ALLOW_REPLACE);
if (mo)
@ -443,7 +190,7 @@ void A_CFlameMissile (AActor *actor)
mo->momy = mo->special2 = FixedMul(FLAMESPEED, finesine[an]);
mo->tics -= pr_missile()&3;
}
mo = Spawn<ACircleFlame> (BlockingMobj->x-FixedMul(dist, finecosine[an]),
mo = Spawn ("CircleFlame", BlockingMobj->x-FixedMul(dist, finecosine[an]),
BlockingMobj->y-FixedMul(dist, finesine[an]),
BlockingMobj->z+5*FRACUNIT, ALLOW_REPLACE);
if(mo)
@ -455,7 +202,7 @@ void A_CFlameMissile (AActor *actor)
mo->tics -= pr_missile()&3;
}
}
actor->SetState (&AFlamePuff2::States[0]);
actor->SetState (actor->SpawnState);
}
}

View File

@ -1284,7 +1284,7 @@ void A_SorcFX2Orbit (AActor *actor)
void A_SpawnBishop(AActor *actor)
{
AActor *mo;
mo = Spawn<ABishop> (actor->x, actor->y, actor->z, ALLOW_REPLACE);
mo = Spawn("Bishop", actor->x, actor->y, actor->z, ALLOW_REPLACE);
if (mo)
{
if (!P_TestMobjLocation(mo))

View File

@ -19,13 +19,6 @@ public:
void BeginPlay ();
};
class ABishop : public AActor
{
DECLARE_ACTOR (ABishop, AActor)
public:
void GetExplodeParms (int &damage, int &distance, bool &hurtSource);
};
class AHeresiarch : public AActor
{
DECLARE_ACTOR (AHeresiarch, AActor)

View File

@ -0,0 +1,48 @@
// Bat Spawner --------------------------------------------------------------
ACTOR BatSpawner : SwitchableDecoration 10225
{
Game Hexen
+NOBLOCKMAP +NOSECTOR +NOGRAVITY
RenderStyle None
action native A_BatSpawnInit();
action native A_BatSpawn();
States
{
Spawn:
Active:
TNT1 A 2
TNT1 A 2 A_BatSpawnInit
TNT1 A 2 A_BatSpawn
Wait
Inactive:
TNT1 A -1
Stop
}
}
// Bat ----------------------------------------------------------------------
ACTOR Bat
{
Speed 5
Radius 3
Height 3
+NOBLOCKMAP +NOGRAVITY +MISSILE
+NOTELEPORT +CANPASS
action native A_BatMove();
States
{
Spawn:
ABAT ABC 2 A_BatMove
Loop
Death:
ABAT A 2
Stop
}
}

View File

@ -0,0 +1,156 @@
// Bishop -------------------------------------------------------------------
ACTOR Bishop 114
{
Game Hexen
SpawnID 19
Health 130
Radius 22
Height 65
Speed 10
PainChance 110
Monster
+FLOAT +NOGRAVITY +NOBLOOD
+TELESTOMP
+DONTOVERLAP
+NOTARGETSWITCH
SeeSound "BishopSight"
AttackSound "BishopAttack"
PainSound "BishopPain"
DeathSound "BishopDeath"
ActiveSound "BishopActiveSounds"
Obituary"$OB_BISHOP"
action native A_BishopChase();
action native A_BishopDecide();
action native A_BishopDoBlur();
action native A_BishopSpawnBlur();
action native A_BishopPainBlur();
action native A_BishopAttack();
action native A_BishopAttack2();
States
{
Spawn:
BISH A 10 A_Look
Loop
See:
BISH A 2 A_Chase
BISH A 2 A_BishopChase
BISH A 2
BISH B 2 A_BishopChase
BISH B 2 A_Chase
BISH B 2 A_BishopChase
BISH A 1 A_BishopDecide
Loop
Blur:
BISH A 2 A_BishopDoBlur
BISH A 4 A_BishopSpawnBlur
Wait
Pain:
BISH C 6 A_Pain
BISH CCC 6 A_BishopPainBlur
BISH C 0
Goto See
Missile:
BISH A 3 A_FaceTarget
BISH DE 3 A_FaceTarget
BISH F 3 A_BishopAttack
BISH F 5 A_BishopAttack2
Wait
Death:
BISH G 6
BISH H 6 Bright A_Scream
BISH I 5 Bright A_NoBlocking
BISH J 5 BRIGHT A_Explode(random[BishopBoom](25,40))
BISH K 5 Bright
BISH LM 4 Bright
BISH N 4 A_SpawnItemEx("BishopPuff", 0,0,40, 0,0,0.5)
BISH O 4 A_QueueCorpse
BISH P -1
Stop
Ice:
BISH X 5 A_FreezeDeath
BISH X 1 A_FreezeDeathChunks
Wait
}
}
// Bishop puff --------------------------------------------------------------
ACTOR BishopPuff
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
RenderStyle Translucent
Alpha 0.6
States
{
Spawn:
BISH QRST 5
BISH UV 6
BISH W 5
Stop
}
}
// Bishop pain blur ---------------------------------------------------------
ACTOR BishopPainBlur
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
RenderStyle Translucent
Alpha 0.6
States
{
Spawn:
BISH C 8
Stop
}
}
// Bishop FX ----------------------------------------------------------------
ACTOR BishopFX
{
Game Hexen
Radius 10
Height 6
Speed 10
Damage 1
Projectile
+SEEKERMISSILE
-ACTIVATEIMPACT -ACTIVATEPCROSS
+STRIFEDAMAGE
RenderStyle Add
DeathSound "BishopMissileExplode"
States
{
Spawn:
BPFX ABAB 1 Bright A_BishopMissileWeave
BPFX B 0 Bright A_SeekerMissile(2,3)
Loop
Death:
BPFX CDEF 4 Bright
BPFX GH 3 Bright
Stop
}
}
// Bishop blur --------------------------------------------------------------
ACTOR BishopBlur
{
+NOBLOCKMAP +NOGRAVITY
RenderStyle Translucent
Alpha 0.6
States
{
Spawn:
BISH A 16
BISH A 8 A_SetTranslucent(0.4)
Stop
}
}

View File

@ -0,0 +1,35 @@
ACTOR ArtiBlastRadius : Inventory 10110 native
{
Game Hexen
SpawnID 74
+FLOATBOB
Inventory.DefMaxAmount
Inventory.PickupFlash 1
+INVBAR +FANCYPICKUPSOUND
Inventory.Icon "ARTIBLST"
Inventory.PickupSound "misc/p_pkup"
Inventory.PickupMessage "$TXT_ARTIBLASTRADIUS"
States
{
Spawn:
BLST ABCDEFGH 4 Bright
Loop
}
}
// Blast Effect -------------------------------------------------------------
ACTOR BlastEffect
{
+NOBLOCKMAP +NOGRAVITY +NOCLIP
+NOTELEPORT
RenderStyle Translucent
Alpha 0.666
States
{
Spawn:
RADE ABCDEFGHI 4
Stop
}
}

View File

@ -0,0 +1,22 @@
// Boost Armor Artifact (Dragonskin Bracers) --------------------------------
ACTOR ArtiBoostArmor : Inventory 8041 native
{
Game Hexen
SpawnID 22
+COUNTITEM
+FLOATBOB
Inventory.DefMaxAmount
Inventory.PickupFlash 1
+INVBAR +FANCYPICKUPSOUND
Inventory.Icon "ARTIBRAC"
Inventory.PickupSound "misc/p_pkup"
Inventory.PickupMessage "$TXT_ARTIBOOSTARMOR"
States
{
Spawn:
BRAC ABCDEFGH 4 Bright
Loop
}
}

View File

@ -0,0 +1,197 @@
// The Cleric's Flame Strike ------------------------------------------------
ACTOR CWeapFlame : ClericWeapon 8009
{
+NOGRAVITY
Weapon.SelectionOrder 1000
Weapon.AmmoUse 4
Weapon.AmmoGive 25
Weapon.KickBack 150
Weapon.YAdjust 10
Weapon.AmmoType1 "Mana2"
Inventory.PickupMessage "$TXT_WEAPON_C3"
action native A_CFlameAttack();
States
{
Spawn:
WCFM ABCDEFGH 4 Bright
Loop
Select:
CFLM A 1 A_Raise
Loop
Deselect:
CFLM A 1 A_Lower
Loop
Ready:
CFLM AAAABBBBCCCC 1 A_WeaponReady
Loop
Fire:
CFLM A 2 Offset (0, 40)
CFLM D 2 Offset (0, 50)
CFLM D 2 Offset (0, 36)
CFLM E 4 Bright
CFLM F 4 Bright A_CFlameAttack
CFLM E 4 Bright
CFLM G 2 Offset (0, 40)
CFLM G 2
Goto Ready
}
}
// Floor Flame --------------------------------------------------------------
ACTOR CFlameFloor
{
Game Hexen
+NOBLOCKMAP +NOGRAVITY
RenderStyle Add
States
{
Spawn:
CFFX N 5 Bright
CFFX O 4 Bright
CFFX P 3 Bright
Stop
}
}
// Flame Puff ---------------------------------------------------------------
ACTOR FlamePuff
{
Game Hexen
Radius 1
Height 1
+NOBLOCKMAP +NOGRAVITY
RenderStyle Add
SeeSound "ClericFlameExplode"
AttackSound "ClericFlameExplode"
States
{
Spawn:
CFFX ABC 3 Bright
CFFX D 4 Bright
CFFX E 3 Bright
CFFX F 4 Bright
CFFX G 3 Bright
CFFX H 4 Bright
CFFX I 3 Bright
CFFX J 4 Bright
CFFX K 3 Bright
CFFX L 4 Bright
CFFX M 3 Bright
Stop
}
}
// Flame Puff 2 -------------------------------------------------------------
ACTOR FlamePuff2 : FlamePuff
{
States
{
Spawn:
CFFX ABC 3 Bright
CFFX D 4 Bright
CFFX E 3 Bright
CFFX F 4 Bright
CFFX G 3 Bright
CFFX H 4 Bright
CFFX IC 3 Bright
CFFX D 4 Bright
CFFX E 3 Bright
CFFX F 4 Bright
CFFX G 3 Bright
CFFX H 4 Bright
CFFX I 3 Bright
CFFX J 4 Bright
CFFX K 3 Bright
CFFX L 4 Bright
CFFX M 3 Bright
Stop
}
}
// Circle Flame -------------------------------------------------------------
ACTOR CircleFlame
{
Game Hexen
Radius 6
Damage 2
DamageType "Fire"
+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE
+NOTELEPORT
RenderStyle Add
DeathSound "ClericFlameCircle"
action native A_CFlameRotate();
States
{
Spawn:
CFCF A 4 Bright
CFCF B 2 Bright A_CFlameRotate
CFCF C 2 Bright
CFCF D 1 Bright
CFCF E 2 Bright
CFCF F 2 Bright A_CFlameRotate
CFCF G 1 Bright
CFCF HI 2 Bright
CFCF J 1 Bright A_CFlameRotate
CFCF K 2 Bright
CFCF LM 3 Bright
CFCF N 2 Bright A_CFlameRotate
CFCF O 3 Bright
CFCF P 2 Bright
Stop
Death:
CFCF QR 3 Bright
CFCF S 3 Bright A_Explode(20, 20, 0)
CFCF TUVWXYZ 3 Bright
Stop
}
}
// Flame Missile ------------------------------------------------------------
ACTOR CFlameMissile native
{
Speed 200
Radius 14
Height 8
Damage 8
DamageType "Fire"
Projectile
+INVISIBLE
-BLOODSPLATTER
RenderStyle Add
action native A_CFlamePuff();
action native A_CFlameMissile();
States
{
Spawn:
CFFX A 4 Bright
CFFX A 1 A_CFlamePuff
Goto Death + 1
Death:
CFFX A 1 Bright A_CFlameMissile
CFFX ABC 3 Bright
CFFX D 4 Bright
CFFX E 3 Bright
CFFX F 4 Bright
CFFX G 3 Bright
CFFX H 4 Bright
CFFX I 3 Bright
CFFX J 4 Bright
CFFX K 3 Bright
CFFX L 4 Bright
CFFX M 3 Bright
Stop
}
}

View File

@ -87,6 +87,11 @@
#include "actors/hexen/clericboss.txt"
#include "actors/hexen/fighterboss.txt"
#include "actors/hexen/mageboss.txt"
#include "actors/hexen/bats.txt"
#include "actors/hexen/bishop.txt"
#include "actors/hexen/blastradius.txt"
#include "actors/hexen/boostarmor.txt"
#include "actors/hexen/clericflame.txt"
#include "actors/strife/strifeplayer.txt"
#include "actors/strife/beggars.txt"