ZDaemon Actors particular to either Heretic or Hexen
------------------------------------------------------------------------
//========== Wind sound
IMPLEMENT_ACTOR (ASoundWind, Raven, -1, 110)
PROP_SpawnState (0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
END_DEFAULTS
FState ASoundWind::States[] =
{
S_NORMAL1 (TNT1, 'A', 2, A_WindSound, &States[0])
};
------------------------------------------------------------------------
//========== Waterfall sound
IMPLEMENT_ACTOR (ASoundWaterfall, Raven, 41, 111)
PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
PROP_SpawnState (0)
END_DEFAULTS
FState ASoundWaterfall::States[] =
{
S_NORMAL1 (TNT1, 'A', 2, A_WaterfallSound, &States[0])
};
------------------------------------------------------------------------
//========== Maulotaur
IMPLEMENT_ACTOR (AMinotaur, Raven, -1, 0)
PROP_SpawnHealth(3000)
PROP_RadiusFixed(28)
PROP_HeightFixed(100)
PROP_Mass(800)
PROP_SpeedFixed(16)
PROP_Damage(7)
PROP_PainChance(25)
PROP_Flags(MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF)
PROP_Flags2(MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_BOSS|MF2_PUSHWALL)
PROP_Flags3(MF3_NORADIUSDMG|MF3_DONTMORPH|MF3_NOTARGET)
PROP_SpawnState(S_MNTR_LOOK)
PROP_SeeState(S_MNTR_WALK)
PROP_PainState(S_MNTR_PAIN)
PROP_MeleeState(S_MNTR_ATK1)
PROP_MissileState(S_MNTR_ATK2)
PROP_DeathState(S_MNTR_DIE)
PROP_SeeSound("minotaur/sight")
PROP_AttackSound("minotaur/attack1")
PROP_PainSound("minotaur/pain")
PROP_DeathSound("minotaur/death")
PROP_ActiveSound("minotaur/active")
END_DEFAULTS
FState AMinotaur::States[] =
{
#define S_MNTR_LOOK 0
S_NORMAL1 (MNTR, 'A', 10, A_MinotaurLook , &States[S_MNTR_LOOK+1]),
S_NORMAL1 (MNTR, 'B', 10, A_MinotaurLook , &States[S_MNTR_LOOK+0]),
#define S_MNTR_ROAM (S_MNTR_LOOK+2)
S_NORMAL1 (MNTR, 'A', 5, A_MinotaurRoam , &States[S_MNTR_ROAM+1]),
S_NORMAL1 (MNTR, 'B', 5, A_MinotaurRoam , &States[S_MNTR_ROAM+2]),
S_NORMAL1 (MNTR, 'C', 5, A_MinotaurRoam , &States[S_MNTR_ROAM+3]),
S_NORMAL1 (MNTR, 'D', 5, A_MinotaurRoam , &States[S_MNTR_ROAM]),
#define S_MNTR_WALK (S_MNTR_ROAM+4)
S_NORMAL1 (MNTR, 'A', 5, A_MinotaurChase , &States[S_MNTR_WALK+1]),
S_NORMAL1 (MNTR, 'B', 5, A_MinotaurChase , &States[S_MNTR_WALK+2]),
S_NORMAL1 (MNTR, 'C', 5, A_MinotaurChase , &States[S_MNTR_WALK+3]),
S_NORMAL1 (MNTR, 'D', 5, A_MinotaurChase , &States[S_MNTR_WALK+0]),
#define S_MNTR_ATK1 (S_MNTR_WALK+4)
S_NORMAL1 (MNTR, 'V', 10, A_FaceTarget , &States[S_MNTR_ATK1+1]),
S_NORMAL1 (MNTR, 'W', 7, A_FaceTarget , &States[S_MNTR_ATK1+2]),
S_NORMAL1 (MNTR, 'X', 12, A_MinotaurAtk1 , &States[S_MNTR_WALK+0]),
#define S_MNTR_ATK2 (S_MNTR_ATK1+3)
S_NORMAL1 (MNTR, 'V', 10, A_MinotaurDecide, &States[S_MNTR_ATK2+1]),
S_NORMAL1 (MNTR, 'Y', 4, A_FaceTarget , &States[S_MNTR_ATK2+2]),
S_NORMAL1 (MNTR, 'Z', 9, A_MinotaurAtk2 , &States[S_MNTR_WALK+0]),
#define S_MNTR_ATK3 (S_MNTR_ATK2+3)
S_NORMAL1 (MNTR, 'V', 10, A_FaceTarget , &States[S_MNTR_ATK3+1]),
S_NORMAL1 (MNTR, 'W', 7, A_FaceTarget , &States[S_MNTR_ATK3+2]),
S_NORMAL1 (MNTR, 'X', 12, A_MinotaurAtk3 , &States[S_MNTR_WALK+0]),
S_NORMAL1 (MNTR, 'X', 12, NULL , &States[S_MNTR_ATK3+0]),
#define S_MNTR_ATK4 (S_MNTR_ATK3+4)
S_NORMAL1 (MNTR, 'U', 2, A_MinotaurCharge, &States[S_MNTR_ATK4+0]),
#define S_MNTR_PAIN (S_MNTR_ATK4+1)
S_NORMAL1 (MNTR, 'E', 3, NULL , &States[S_MNTR_PAIN+1]),
S_NORMAL1 (MNTR, 'E', 6, A_Pain , &States[S_MNTR_WALK+0]),
#define S_MNTR_DIE (S_MNTR_PAIN+2)
S_NORMAL1 (MNTR, 'F', 6, NULL , &States[S_MNTR_DIE+1]),
S_NORMAL1 (MNTR, 'G', 5, NULL , &States[S_MNTR_DIE+2]),
S_NORMAL1 (MNTR, 'H', 6, A_Scream , &States[S_MNTR_DIE+3]),
S_NORMAL1 (MNTR, 'I', 5, NULL , &States[S_MNTR_DIE+4]),
S_NORMAL1 (MNTR, 'J', 6, NULL , &States[S_MNTR_DIE+5]),
S_NORMAL1 (MNTR, 'K', 5, NULL , &States[S_MNTR_DIE+6]),
S_NORMAL1 (MNTR, 'L', 6, NULL , &States[S_MNTR_DIE+7]),
S_NORMAL1 (MNTR, 'M', 5, A_NoBlocking , &States[S_MNTR_DIE+8]),
S_NORMAL1 (MNTR, 'N', 6, NULL , &States[S_MNTR_DIE+9]),
S_NORMAL1 (MNTR, 'O', 5, NULL , &States[S_MNTR_DIE+10]),
S_NORMAL1 (MNTR, 'P', 6, NULL , &States[S_MNTR_DIE+11]),
S_NORMAL1 (MNTR, 'Q', 5, NULL , &States[S_MNTR_DIE+12]),
S_NORMAL1 (MNTR, 'R', 6, NULL , &States[S_MNTR_DIE+13]),
S_NORMAL1 (MNTR, 'S', 5, NULL , &States[S_MNTR_DIE+14]),
S_NORMAL1 (MNTR, 'T', -1, A_BossDeath , NULL),
#define S_MNTR_FADEIN (S_MNTR_DIE+15)
S_NORMAL1 (MNTR, 'A', 15, NULL , &States[S_MNTR_FADEIN+1]),
S_NORMAL1 (MNTR, 'A', 15, A_MinotaurFade1 , &States[S_MNTR_FADEIN+2]),
S_NORMAL1 (MNTR, 'A', 3, A_MinotaurFade2 , &States[S_MNTR_LOOK]),
#define S_MNTR_FADEOUT (S_MNTR_FADEIN+3)
S_NORMAL1 (MNTR, 'E', 6, NULL , &States[S_MNTR_FADEOUT+1]),
S_NORMAL1 (MNTR, 'E', 2, A_Scream , &States[S_MNTR_FADEOUT+2]),
S_NORMAL1 (MNTR, 'E', 5, A_SmokePuffExit , &States[S_MNTR_FADEOUT+3]),
S_NORMAL1 (MNTR, 'E', 5, NULL , &States[S_MNTR_FADEOUT+4]),
S_NORMAL1 (MNTR, 'E', 5, A_NoBlocking , &States[S_MNTR_FADEOUT+5]),
S_NORMAL1 (MNTR, 'E', 5, NULL , &States[S_MNTR_FADEOUT+6]),
S_NORMAL1 (MNTR, 'E', 5, A_MinotaurFade1 , &States[S_MNTR_FADEOUT+7]),
S_NORMAL1 (MNTR, 'E', 5, A_MinotaurFade0 , &States[S_MNTR_FADEOUT+8]),
S_NORMAL1 (MNTR, 'E', 10, NULL , NULL),
};
------------------------------------------------------------------------
//========== The fireballs created by a swing from a maulotaur's maul.
IMPLEMENT_ACTOR (AMinotaurFX1, Raven, -1, 0)
PROP_RadiusFixed (10)
PROP_HeightFixed (6)
PROP_SpeedFixed (20)
PROP_Damage (3)
PROP_DamageType (MOD_FIRE)
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_Flags4 (MF4_BLOODSPLATTER)
PROP_SpawnState (S_MNTRFX1)
PROP_DeathState (S_MNTRFXI1)
END_DEFAULTS
FState AMinotaurFX1::States[] =
{
#define S_MNTRFX1 0
S_BRIGHT (FX12, 'A', 6, NULL, &States[S_MNTRFX1+1]),
S_BRIGHT (FX12, 'B', 6, NULL, &States[S_MNTRFX1+0]),
#define S_MNTRFXI1 (S_MNTRFX1+2)
S_BRIGHT (FX12, 'C', 5, NULL, &States[S_MNTRFXI1+1]),
S_BRIGHT (FX12, 'D', 5, NULL, &States[S_MNTRFXI1+2]),
S_BRIGHT (FX12, 'E', 5, NULL, &States[S_MNTRFXI1+3]),
S_BRIGHT (FX12, 'F', 5, NULL, &States[S_MNTRFXI1+4]),
S_BRIGHT (FX12, 'G', 5, NULL, &States[S_MNTRFXI1+5]),
S_BRIGHT (FX12, 'H', 5, NULL, NULL)
};
------------------------------------------------------------------------
//========== The running flame created by an impact on the ground from a maulotaur's maul.
IMPLEMENT_ACTOR (AMinotaurFX2, Raven, -1, 0)
PROP_RadiusFixed (5)
PROP_HeightFixed (12)
PROP_SpeedFixed (14)
PROP_Damage (4)
PROP_Flags3 (MF3_FLOORHUGGER)
PROP_SpawnState (S_MNTRFX2)
PROP_DeathState (S_MNTRFXI2)
PROP_DeathSound ("minotaur/fx2hit")
END_DEFAULTS
FState AMinotaurFX2::States[] =
{
#define S_MNTRFX2 0
S_NORMAL1 (FX13, 'A', 2, A_MntrFloorFire, &States[S_MNTRFX2+0]),
#define S_MNTRFXI2 (S_MNTRFX2+1)
S_BRIGHT (FX13, 'I', 4, A_Explode , &States[S_MNTRFXI2+1]),
S_BRIGHT (FX13, 'J', 4, NULL , &States[S_MNTRFXI2+2]),
S_BRIGHT (FX13, 'K', 4, NULL , &States[S_MNTRFXI2+3]),
S_BRIGHT (FX13, 'L', 4, NULL , &States[S_MNTRFXI2+4]),
S_BRIGHT (FX13, 'M', 4, NULL , NULL)
};
------------------------------------------------------------------------
//========== The flame trail left behind the running flame from an impact on the ground from a maulotaur's maul.
IMPLEMENT_ACTOR (AMinotaurFX3, Raven, -1, 0)
PROP_RadiusFixed (8)
PROP_HeightFixed (16)
PROP_SpeedFixed (0)
PROP_Flags3 (0)
PROP_SpawnState (S_MNTRFX3)
PROP_DeathSound ("minotaur/fx3hit")
END_DEFAULTS
FState AMinotaurFX3::States[] =
{
#define S_MNTRFX3 0
S_BRIGHT (FX13, 'D', 4, NULL, &States[S_MNTRFX3+1]),
S_BRIGHT (FX13, 'C', 4, NULL, &States[S_MNTRFX3+2]),
S_BRIGHT (FX13, 'B', 5, NULL, &States[S_MNTRFX3+3]),
S_BRIGHT (FX13, 'C', 5, NULL, &States[S_MNTRFX3+4]),
S_BRIGHT (FX13, 'D', 5, NULL, &States[S_MNTRFX3+5]),
S_BRIGHT (FX13, 'E', 5, NULL, &States[S_MNTRFX3+6]),
S_BRIGHT (FX13, 'F', 4, NULL, &States[S_MNTRFX3+7]),
S_BRIGHT (FX13, 'G', 4, NULL, &States[S_MNTRFX3+8]),
S_BRIGHT (FX13, 'H', 4, NULL, NULL)
};
------------------------------------------------------------------------
//========== Teleport (self) artifact
IMPLEMENT_ACTOR (AArtiTeleport, Raven, 36, 18)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiTeleport::States[] =
{
S_NORMAL1 (ATLP, 'A', 4, NULL, &States[1]),
S_NORMAL1 (ATLP, 'B', 4, NULL, &States[2]),
S_NORMAL1 (ATLP, 'C', 4, NULL, &States[3]),
S_NORMAL1 (ATLP, 'B', 4, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Health artifact
IMPLEMENT_ACTOR (AArtiHealth, Raven, 82, 24)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiHealth::States[] =
{
S_NORMAL1 (PTN2, 'A', 4, NULL, &States[1]),
S_NORMAL1 (PTN2, 'B', 4, NULL, &States[2]),
S_NORMAL1 (PTN2, 'C', 4, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Super health artifact
IMPLEMENT_ACTOR (AArtiSuperHealth, Raven, 32, 25)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiSuperHealth::States[] =
{
S_NORMAL1 (SPHL, 'A', 350, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Flight artifact
IMPLEMENT_ACTOR (AArtiFly, Raven, 83, 15)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiFly::States[] =
{
S_NORMAL1 (SOAR, 'A', 5, NULL, &States[1]),
S_NORMAL1 (SOAR, 'B', 5, NULL, &States[2]),
S_NORMAL1 (SOAR, 'C', 5, NULL, &States[3]),
S_NORMAL1 (SOAR, 'B', 5, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Invulnerability artifact
IMPLEMENT_ACTOR (AArtiInvulnerability, Raven, 84, 133)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiInvulnerability::States[] =
{
S_NORMAL1 (INVU, 'A', 3, NULL, &States[1]),
S_NORMAL1 (INVU, 'B', 3, NULL, &States[2]),
S_NORMAL1 (INVU, 'C', 3, NULL, &States[3]),
S_NORMAL1 (INVU, 'D', 3, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Torch artifact
IMPLEMENT_ACTOR (AArtiTorch, Raven, 33, 73)
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState AArtiTorch::States[] =
{
S_BRIGHT (TRCH, 'A', 3, NULL, &States[1]),
S_BRIGHT (TRCH, 'B', 3, NULL, &States[2]),
S_BRIGHT (TRCH, 'C', 3, NULL, &States[0])
};
------------------------------------------------------------------------
//========== Crystal vial
IMPLEMENT_ACTOR (ACrystalVial, Raven, 81, 23)
PROP_Flags (MF_SPECIAL)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
END_DEFAULTS
FState ACrystalVial::States[] =
{
S_NORMAL1 (PTN1, 'A', 3, NULL, &States[1]),
S_NORMAL1 (PTN1, 'B', 3, NULL, &States[2]),
S_NORMAL1 (PTN1, 'C', 3, NULL, &States[0])
};
------------------------------------------------------------------------