ZDaemon Actors particular to Doom only

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AArachnotron, Doom, 68, 6)
	PROP_SpawnHealth (500)
	PROP_RadiusFixed (64)
	PROP_HeightFixed (64)
	PROP_Mass (600)
	PROP_SpeedFixed (12)
	PROP_PainChance (128)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_BSPI_STND)
	PROP_SeeState (S_BSPI_SIGHT)
	PROP_PainState (S_BSPI_PAIN)
	PROP_MissileState (S_BSPI_ATK)
	PROP_DeathState (S_BSPI_DIE)
	PROP_RaiseState (S_BSPI_RAISE)
	PROP_SeeSound ("baby/sight")
	PROP_PainSound ("baby/pain")
	PROP_DeathSound ("baby/death")
	PROP_ActiveSound ("baby/active")
END_DEFAULTS

FState AArachnotron::States[] =
{
#define S_BSPI_STND 0
	S_NORMAL1 (BSPI, 'A',   10, A_Look                       , &States[S_BSPI_STND+1]),
	S_NORMAL1 (BSPI, 'B',   10, A_Look                       , &States[S_BSPI_STND]),

#define S_BSPI_SIGHT (S_BSPI_STND+2)
#define S_BSPI_RUN (S_BSPI_SIGHT+1)
	S_NORMAL1 (BSPI, 'A',   20, NULL                         , &States[S_BSPI_RUN+0]),

	S_NORMAL1 (BSPI, 'A',    3, A_BabyMetal                  , &States[S_BSPI_RUN+1]),
	S_NORMAL1 (BSPI, 'A',    3, A_Chase                      , &States[S_BSPI_RUN+2]),
	S_NORMAL1 (BSPI, 'B',    3, A_Chase                      , &States[S_BSPI_RUN+3]),
	S_NORMAL1 (BSPI, 'B',    3, A_Chase                      , &States[S_BSPI_RUN+4]),
	S_NORMAL1 (BSPI, 'C',    3, A_Chase                      , &States[S_BSPI_RUN+5]),
	S_NORMAL1 (BSPI, 'C',    3, A_Chase                      , &States[S_BSPI_RUN+6]),
	S_NORMAL1 (BSPI, 'D',    3, A_BabyMetal                  , &States[S_BSPI_RUN+7]),
	S_NORMAL1 (BSPI, 'D',    3, A_Chase                      , &States[S_BSPI_RUN+8]),
	S_NORMAL1 (BSPI, 'E',    3, A_Chase                      , &States[S_BSPI_RUN+9]),
	S_NORMAL1 (BSPI, 'E',    3, A_Chase                      , &States[S_BSPI_RUN+10]),
	S_NORMAL1 (BSPI, 'F',    3, A_Chase                      , &States[S_BSPI_RUN+11]),
	S_NORMAL1 (BSPI, 'F',    3, A_Chase                      , &States[S_BSPI_RUN+0]),

#define S_BSPI_ATK (S_BSPI_RUN+12)
	S_BRIGHT  (BSPI, 'A',   20, A_FaceTarget                 , &States[S_BSPI_ATK+1]),
	S_BRIGHT  (BSPI, 'G',    4, A_BspiAttack                 , &States[S_BSPI_ATK+2]),
	S_BRIGHT  (BSPI, 'H',    4, NULL                         , &States[S_BSPI_ATK+3]),
	S_BRIGHT  (BSPI, 'H',    1, A_SpidRefire                 , &States[S_BSPI_ATK+1]),

#define S_BSPI_PAIN (S_BSPI_ATK+4)
	S_NORMAL1 (BSPI, 'I',    3, NULL                         , &States[S_BSPI_PAIN+1]),
	S_NORMAL1 (BSPI, 'I',    3, A_Pain                       , &States[S_BSPI_RUN+0]),

#define S_BSPI_DIE (S_BSPI_PAIN+2)
	S_NORMAL1 (BSPI, 'J',   20, A_Scream                     , &States[S_BSPI_DIE+1]),
	S_NORMAL1 (BSPI, 'K',    7, A_NoBlocking                 , &States[S_BSPI_DIE+2]),
	S_NORMAL1 (BSPI, 'L',    7, NULL                         , &States[S_BSPI_DIE+3]),
	S_NORMAL1 (BSPI, 'M',    7, NULL                         , &States[S_BSPI_DIE+4]),
	S_NORMAL1 (BSPI, 'N',    7, NULL                         , &States[S_BSPI_DIE+5]),
	S_NORMAL1 (BSPI, 'O',    7, NULL                         , &States[S_BSPI_DIE+6]),
	S_NORMAL1 (BSPI, 'P',   -1, A_BossDeath                  , NULL),

#define S_BSPI_RAISE (S_BSPI_DIE+7)
	S_NORMAL1 (BSPI, 'P',    5, NULL                         , &States[S_BSPI_RAISE+1]),
	S_NORMAL1 (BSPI, 'O',    5, NULL                         , &States[S_BSPI_RAISE+2]),
	S_NORMAL1 (BSPI, 'N',    5, NULL                         , &States[S_BSPI_RAISE+3]),
	S_NORMAL1 (BSPI, 'M',    5, NULL                         , &States[S_BSPI_RAISE+4]),
	S_NORMAL1 (BSPI, 'L',    5, NULL                         , &States[S_BSPI_RAISE+5]),
	S_NORMAL1 (BSPI, 'K',    5, NULL                         , &States[S_BSPI_RAISE+6]),
	S_NORMAL1 (BSPI, 'J',    5, NULL                         , &States[S_BSPI_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthArachnotron, Doom, 9050, 117)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AArachnotronPlasma, Doom, -1, 129)
	PROP_RadiusFixed (13)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (25)
	PROP_Damage (5)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_ARACH_PLAZ)
	PROP_DeathState (S_ARACH_PLEX)
	PROP_SeeSound ("baby/attack")
	PROP_DeathSound ("baby/shotx")
END_DEFAULTS

FState AArachnotronPlasma::States[] =
{
#define S_ARACH_PLAZ 0
	S_BRIGHT (APLS, 'A',    5, NULL                         , &States[S_ARACH_PLAZ+1]),
	S_BRIGHT (APLS, 'B',    5, NULL                         , &States[S_ARACH_PLAZ]),

#define S_ARACH_PLEX (S_ARACH_PLAZ+2)
	S_BRIGHT (APBX, 'A',    5, NULL                         , &States[S_ARACH_PLEX+1]),
	S_BRIGHT (APBX, 'B',    5, NULL                         , &States[S_ARACH_PLEX+2]),
	S_BRIGHT (APBX, 'C',    5, NULL                         , &States[S_ARACH_PLEX+3]),
	S_BRIGHT (APBX, 'D',    5, NULL                         , &States[S_ARACH_PLEX+4]),
	S_BRIGHT (APBX, 'E',    5, NULL                         , NULL)
};
	
------------------------------------------------------------------------

IMPLEMENT_ACTOR (AArchvile, Doom, 64, 111)
	PROP_SpawnHealth (700)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (500)
	PROP_SpeedFixed (15)
	PROP_PainChance (10)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags3 (MF3_NOTARGET)
	PROP_Flags4 (MF4_QUICKTORETALIATE)
	PROP_SpawnState (S_VILE_STND)
	PROP_SeeState (S_VILE_RUN)
	PROP_PainState (S_VILE_PAIN)
	PROP_MissileState (S_VILE_ATK)
	PROP_DeathState (S_VILE_DIE)
	PROP_SeeSound ("vile/sight")
	PROP_PainSound ("vile/pain")
	PROP_DeathSound ("vile/death")
	PROP_ActiveSound ("vile/active")
END_DEFAULTS

FState AArchvile::States[] =
{
#define S_VILE_STND 0
	S_NORMAL1 (VILE, 'A',   10, A_Look                       , &States[S_VILE_STND+1]),
	S_NORMAL1 (VILE, 'B',   10, A_Look                       , &States[S_VILE_STND]),

#define S_VILE_RUN (S_VILE_STND+2)
	S_NORMAL1 (VILE, 'A',    2, A_VileChase                  , &States[S_VILE_RUN+1]),
	S_NORMAL1 (VILE, 'A',    2, A_VileChase                  , &States[S_VILE_RUN+2]),
	S_NORMAL1 (VILE, 'B',    2, A_VileChase                  , &States[S_VILE_RUN+3]),
	S_NORMAL1 (VILE, 'B',    2, A_VileChase                  , &States[S_VILE_RUN+4]),
	S_NORMAL1 (VILE, 'C',    2, A_VileChase                  , &States[S_VILE_RUN+5]),
	S_NORMAL1 (VILE, 'C',    2, A_VileChase                  , &States[S_VILE_RUN+6]),
	S_NORMAL1 (VILE, 'D',    2, A_VileChase                  , &States[S_VILE_RUN+7]),
	S_NORMAL1 (VILE, 'D',    2, A_VileChase                  , &States[S_VILE_RUN+8]),
	S_NORMAL1 (VILE, 'E',    2, A_VileChase                  , &States[S_VILE_RUN+9]),
	S_NORMAL1 (VILE, 'E',    2, A_VileChase                  , &States[S_VILE_RUN+10]),
	S_NORMAL1 (VILE, 'F',    2, A_VileChase                  , &States[S_VILE_RUN+11]),
	S_NORMAL1 (VILE, 'F',    2, A_VileChase                  , &States[S_VILE_RUN+0]),

#define S_VILE_ATK (S_VILE_RUN+12)
	S_BRIGHT  (VILE, 'G',    0, A_VileStart                  , &States[S_VILE_ATK+1]),
	S_BRIGHT  (VILE, 'G',   10, A_FaceTarget                 , &States[S_VILE_ATK+2]),
	S_BRIGHT  (VILE, 'H',    8, A_VileTarget                 , &States[S_VILE_ATK+3]),
	S_BRIGHT  (VILE, 'I',    8, A_FaceTarget                 , &States[S_VILE_ATK+4]),
	S_BRIGHT  (VILE, 'J',    8, A_FaceTarget                 , &States[S_VILE_ATK+5]),
	S_BRIGHT  (VILE, 'K',    8, A_FaceTarget                 , &States[S_VILE_ATK+6]),
	S_BRIGHT  (VILE, 'L',    8, A_FaceTarget                 , &States[S_VILE_ATK+7]),
	S_BRIGHT  (VILE, 'M',    8, A_FaceTarget                 , &States[S_VILE_ATK+8]),
	S_BRIGHT  (VILE, 'N',    8, A_FaceTarget                 , &States[S_VILE_ATK+9]),
	S_BRIGHT  (VILE, 'O',    8, A_VileAttack                 , &States[S_VILE_ATK+10]),
	S_BRIGHT  (VILE, 'P',   20, NULL                         , &States[S_VILE_RUN+0]),

#define S_VILE_HEAL (S_VILE_ATK+11)
	S_BRIGHT  (VILE, '[',   10, NULL                         , &States[S_VILE_HEAL+1]),
	S_BRIGHT  (VILE, '\\',  10, NULL                         , &States[S_VILE_HEAL+2]),
	S_BRIGHT  (VILE, ']',   10, NULL                         , &States[S_VILE_RUN+0]),

#define S_VILE_PAIN (S_VILE_HEAL+3)
	S_NORMAL1 (VILE, 'Q',    5, NULL                         , &States[S_VILE_PAIN+1]),
	S_NORMAL1 (VILE, 'Q',    5, A_Pain                       , &States[S_VILE_RUN+0]),

#define S_VILE_DIE (S_VILE_PAIN+2)
	S_NORMAL1 (VILE, 'Q',    7, NULL                         , &States[S_VILE_DIE+1]),
	S_NORMAL1 (VILE, 'R',    7, A_Scream                     , &States[S_VILE_DIE+2]),
	S_NORMAL1 (VILE, 'S',    7, A_NoBlocking                 , &States[S_VILE_DIE+3]),
	S_NORMAL1 (VILE, 'T',    7, NULL                         , &States[S_VILE_DIE+4]),
	S_NORMAL1 (VILE, 'U',    7, NULL                         , &States[S_VILE_DIE+5]),
	S_NORMAL1 (VILE, 'V',    7, NULL                         , &States[S_VILE_DIE+6]),
	S_NORMAL1 (VILE, 'W',    7, NULL                         , &States[S_VILE_DIE+7]),
	S_NORMAL1 (VILE, 'X',    5, NULL                         , &States[S_VILE_DIE+8]),
	S_NORMAL1 (VILE, 'Y',    5, NULL                         , &States[S_VILE_DIE+9]),
	S_NORMAL1 (VILE, 'Z',   -1, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthArchvile, Doom, 9051, 118)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AArchvileFire, Doom, -1, 98)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (0)
END_DEFAULTS

FState AArchvileFire::States[] =
{
	S_BRIGHT (FIRE, 'A',    2, A_StartFire                  , &States[1]),
	S_BRIGHT (FIRE, 'B',    2, A_Fire                       , &States[2]),
	S_BRIGHT (FIRE, 'A',    2, A_Fire                       , &States[3]),
	S_BRIGHT (FIRE, 'B',    2, A_Fire                       , &States[4]),
	S_BRIGHT (FIRE, 'C',    2, A_FireCrackle                , &States[5]),
	S_BRIGHT (FIRE, 'B',    2, A_Fire                       , &States[6]),
	S_BRIGHT (FIRE, 'C',    2, A_Fire                       , &States[7]),
	S_BRIGHT (FIRE, 'B',    2, A_Fire                       , &States[8]),
	S_BRIGHT (FIRE, 'C',    2, A_Fire                       , &States[9]),
	S_BRIGHT (FIRE, 'D',    2, A_Fire                       , &States[10]),
	S_BRIGHT (FIRE, 'C',    2, A_Fire                       , &States[11]),
	S_BRIGHT (FIRE, 'D',    2, A_Fire                       , &States[12]),
	S_BRIGHT (FIRE, 'C',    2, A_Fire                       , &States[13]),
	S_BRIGHT (FIRE, 'D',    2, A_Fire                       , &States[14]),
	S_BRIGHT (FIRE, 'E',    2, A_Fire                       , &States[15]),
	S_BRIGHT (FIRE, 'D',    2, A_Fire                       , &States[16]),
	S_BRIGHT (FIRE, 'E',    2, A_Fire                       , &States[17]),
	S_BRIGHT (FIRE, 'D',    2, A_Fire                       , &States[18]),
	S_BRIGHT (FIRE, 'E',    2, A_FireCrackle                , &States[19]),
	S_BRIGHT (FIRE, 'F',    2, A_Fire                       , &States[20]),
	S_BRIGHT (FIRE, 'E',    2, A_Fire                       , &States[21]),
	S_BRIGHT (FIRE, 'F',    2, A_Fire                       , &States[22]),
	S_BRIGHT (FIRE, 'E',    2, A_Fire                       , &States[23]),
	S_BRIGHT (FIRE, 'F',    2, A_Fire                       , &States[24]),
	S_BRIGHT (FIRE, 'G',    2, A_Fire                       , &States[25]),
	S_BRIGHT (FIRE, 'H',    2, A_Fire                       , &States[26]),
	S_BRIGHT (FIRE, 'G',    2, A_Fire                       , &States[27]),
	S_BRIGHT (FIRE, 'H',    2, A_Fire                       , &States[28]),
	S_BRIGHT (FIRE, 'G',    2, A_Fire                       , &States[29]),
	S_BRIGHT (FIRE, 'H',    2, A_Fire                       , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABossBrain, Doom, 88, 0)
	PROP_SpawnHealth (250)
	PROP_MassLong (10000000)
	PROP_PainChance (255)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE)
	PROP_SpawnState (S_BRAIN)
	PROP_PainState (S_BRAIN_PAIN)
	PROP_DeathState (S_BRAIN_DIE)
	PROP_PainSound ("brain/pain")
	PROP_DeathSound ("brain/death")
END_DEFAULTS

FState ABossBrain::States[] =
{
#define S_BRAINEXPLODE 0
	S_BRIGHT  (MISL, 'B',   10, NULL             , &States[S_BRAINEXPLODE+1]),
	S_BRIGHT  (MISL, 'C',   10, NULL             , &States[S_BRAINEXPLODE+2]),
	S_BRIGHT  (MISL, 'D',   10, A_BrainExplode   , NULL),

#define S_BRAIN (S_BRAINEXPLODE+3)
	S_NORMAL1 (BBRN, 'A',   -1, NULL             , NULL),

#define S_BRAIN_PAIN (S_BRAIN+1)
	S_NORMAL1 (BBRN, 'B',   36, A_BrainPain      , &States[S_BRAIN]),

#define S_BRAIN_DIE (S_BRAIN_PAIN+1)
	S_NORMAL1 (BBRN, 'A',  100, A_BrainScream    , &States[S_BRAIN_DIE+1]),
	S_NORMAL1 (BBRN, 'A',   10, NULL             , &States[S_BRAIN_DIE+2]),
	S_NORMAL1 (BBRN, 'A',   10, NULL             , &States[S_BRAIN_DIE+3]),
	S_NORMAL1 (BBRN, 'A',   -1, A_BrainDie       , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABossEye, Doom, 89, 0)
	PROP_HeightFixed (32)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
	PROP_SpawnState (S_BRAINEYE)
	PROP_SeeState (S_BRAINEYESEE)
END_DEFAULTS

FState ABossEye::States[] =
{
#define S_BRAINEYE 0
	S_NORMAL1 (SSWV, 'A',   10, A_Look        , &States[S_BRAINEYE]),

#define S_BRAINEYESEE (S_BRAINEYE+1)
	S_NORMAL1 (SSWV, 'A',  181, A_BrainAwake  , &States[S_BRAINEYESEE+1]),
	S_NORMAL1 (SSWV, 'A',  150, A_BrainSpit   , &States[S_BRAINEYESEE+1])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ABossTarget, Doom, 87, 0)
	PROP_HeightFixed (32)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ASpawnShot, Doom, -1, 0)
	PROP_RadiusFixed (6)
	PROP_HeightFixed (32)
	PROP_SpeedFixed (10)
	PROP_Damage (3)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOCLIP)
	PROP_Flags2 (MF2_NOTELEPORT)
	PROP_SpawnState (0)
	PROP_SeeSound ("brain/spit")
	PROP_DeathSound ("brain/spawn")
END_DEFAULTS

FState ASpawnShot::States[] =
{
	S_BRIGHT (BOSF, 'A',    3, A_SpawnSound                 , &States[1]),
	S_BRIGHT (BOSF, 'B',    3, A_SpawnFly                   , &States[2]),
	S_BRIGHT (BOSF, 'C',    3, A_SpawnFly                   , &States[3]),
	S_BRIGHT (BOSF, 'D',    3, A_SpawnFly                   , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ASpawnFire, Doom, -1, 0)
	PROP_HeightFixed (78)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (0)
END_DEFAULTS

FState ASpawnFire::States[] =
{
	S_BRIGHT (FIRE, 'A',    4, A_Fire                       , &States[1]),
	S_BRIGHT (FIRE, 'B',    4, A_Fire                       , &States[2]),
	S_BRIGHT (FIRE, 'C',    4, A_Fire                       , &States[3]),
	S_BRIGHT (FIRE, 'D',    4, A_Fire                       , &States[4]),
	S_BRIGHT (FIRE, 'E',    4, A_Fire                       , &States[5]),
	S_BRIGHT (FIRE, 'F',    4, A_Fire                       , &States[6]),
	S_BRIGHT (FIRE, 'G',    4, A_Fire                       , &States[7]),
	S_BRIGHT (FIRE, 'H',    4, A_Fire                       , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABaronOfHell, Doom, 3003, 3)
	PROP_SpawnHealth (1000)
	PROP_RadiusFixed (24)
	PROP_HeightFixed (64)
	PROP_Mass (1000)
	PROP_SpeedFixed (8)
	PROP_PainChance (50)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_BOSS_STND)
	PROP_SeeState (S_BOSS_RUN)
	PROP_PainState (S_BOSS_PAIN)
	PROP_MeleeState (S_BOSS_ATK)
	PROP_MissileState (S_BOSS_ATK)
	PROP_DeathState (S_BOSS_DIE)
	PROP_RaiseState (S_BOSS_RAISE)
	PROP_SeeSound ("baron/sight")
	PROP_PainSound ("baron/pain")
	PROP_DeathSound ("baron/death")
	PROP_ActiveSound ("baron/active")
END_DEFAULTS

FState ABaronOfHell::States[] =
{
#define S_BOSS_STND 0
	S_NORMAL1 (BOSS, 'A',   10, A_Look                       , &States[S_BOSS_STND+1]),
	S_NORMAL1 (BOSS, 'B',   10, A_Look                       , &States[S_BOSS_STND]),

#define S_BOSS_RUN (S_BOSS_STND+2)
	S_NORMAL1 (BOSS, 'A',    3, A_Chase                      , &States[S_BOSS_RUN+1]),
	S_NORMAL1 (BOSS, 'A',    3, A_Chase                      , &States[S_BOSS_RUN+2]),
	S_NORMAL1 (BOSS, 'B',    3, A_Chase                      , &States[S_BOSS_RUN+3]),
	S_NORMAL1 (BOSS, 'B',    3, A_Chase                      , &States[S_BOSS_RUN+4]),
	S_NORMAL1 (BOSS, 'C',    3, A_Chase                      , &States[S_BOSS_RUN+5]),
	S_NORMAL1 (BOSS, 'C',    3, A_Chase                      , &States[S_BOSS_RUN+6]),
	S_NORMAL1 (BOSS, 'D',    3, A_Chase                      , &States[S_BOSS_RUN+7]),
	S_NORMAL1 (BOSS, 'D',    3, A_Chase                      , &States[S_BOSS_RUN+0]),

#define S_BOSS_ATK (S_BOSS_RUN+8)
	S_NORMAL1 (BOSS, 'E',    8, A_FaceTarget                 , &States[S_BOSS_ATK+1]),
	S_NORMAL1 (BOSS, 'F',    8, A_FaceTarget                 , &States[S_BOSS_ATK+2]),
	S_NORMAL1 (BOSS, 'G',    8, A_BruisAttack                , &States[S_BOSS_RUN+0]),

#define S_BOSS_PAIN (S_BOSS_ATK+3)
	S_NORMAL1 (BOSS, 'H',    2, NULL                         , &States[S_BOSS_PAIN+1]),
	S_NORMAL1 (BOSS, 'H',    2, A_Pain                       , &States[S_BOSS_RUN+0]),

#define S_BOSS_DIE (S_BOSS_PAIN+2)
	S_NORMAL1 (BOSS, 'I',    8, NULL                         , &States[S_BOSS_DIE+1]),
	S_NORMAL1 (BOSS, 'J',    8, A_Scream                     , &States[S_BOSS_DIE+2]),
	S_NORMAL1 (BOSS, 'K',    8, NULL                         , &States[S_BOSS_DIE+3]),
	S_NORMAL1 (BOSS, 'L',    8, A_NoBlocking                 , &States[S_BOSS_DIE+4]),
	S_NORMAL1 (BOSS, 'M',    8, NULL                         , &States[S_BOSS_DIE+5]),
	S_NORMAL1 (BOSS, 'N',    8, NULL                         , &States[S_BOSS_DIE+6]),
	S_NORMAL1 (BOSS, 'O',   -1, A_BossDeath                  , NULL),

#define S_BOSS_RAISE (S_BOSS_DIE+7)
	S_NORMAL1 (BOSS, 'O',    8, NULL                         , &States[S_BOSS_RAISE+1]),
	S_NORMAL1 (BOSS, 'N',    8, NULL                         , &States[S_BOSS_RAISE+2]),
	S_NORMAL1 (BOSS, 'M',    8, NULL                         , &States[S_BOSS_RAISE+3]),
	S_NORMAL1 (BOSS, 'L',    8, NULL                         , &States[S_BOSS_RAISE+4]),
	S_NORMAL1 (BOSS, 'K',    8, NULL                         , &States[S_BOSS_RAISE+5]),
	S_NORMAL1 (BOSS, 'J',    8, NULL                         , &States[S_BOSS_RAISE+6]),
	S_NORMAL1 (BOSS, 'I',    8, NULL                         , &States[S_BOSS_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthBaron, Doom, 9052, 100)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABaronBall, Doom, -1, 154)
	PROP_RadiusFixed (6)
	PROP_HeightFixed (16)
	PROP_SpeedFixed (15)
	PROP_Damage (8)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_BRBALL)
	PROP_DeathState (S_BRBALLX)
	PROP_SeeSound ("baron/attack")
	PROP_DeathSound ("baron/shotx")
END_DEFAULTS

FState ABaronBall::States[] =
{
#define S_BRBALL 0
	S_BRIGHT (BAL7, 'A',    4, NULL                         , &States[S_BRBALL+1]),
	S_BRIGHT (BAL7, 'B',    4, NULL                         , &States[S_BRBALL+0]),

#define S_BRBALLX (S_BRBALL+2)
	S_BRIGHT (BAL7, 'C',    6, NULL                         , &States[S_BRBALLX+1]),
	S_BRIGHT (BAL7, 'D',    6, NULL                         , &States[S_BRBALLX+2]),
	S_BRIGHT (BAL7, 'E',    6, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AHellKnight, Doom, 69, 113)
	PROP_SpawnHealth (500)
	PROP_RadiusFixed (24)
	PROP_HeightFixed (64)
	PROP_Mass (1000)
	PROP_SpeedFixed (8)
	PROP_PainChance (50)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_BOS2_STND)
	PROP_SeeState (S_BOS2_RUN)
	PROP_PainState (S_BOS2_PAIN)
	PROP_MeleeState (S_BOS2_ATK)
	PROP_MissileState (S_BOS2_ATK)
	PROP_DeathState (S_BOS2_DIE)
	PROP_RaiseState (S_BOS2_RAISE)
	PROP_SeeSound ("knight/sight")
	PROP_PainSound ("knight/pain")
	PROP_DeathSound ("knight/death")
	PROP_ActiveSound ("knight/active")
END_DEFAULTS

FState AHellKnight::States[] =
{
#define S_BOS2_STND 0
	S_NORMAL1 (BOS2, 'A',   10, A_Look                       , &States[S_BOS2_STND+1]),
	S_NORMAL1 (BOS2, 'B',   10, A_Look                       , &States[S_BOS2_STND]),

#define S_BOS2_RUN (S_BOS2_STND+2)
	S_NORMAL1 (BOS2, 'A',    3, A_Chase                      , &States[S_BOS2_RUN+1]),
	S_NORMAL1 (BOS2, 'A',    3, A_Chase                      , &States[S_BOS2_RUN+2]),
	S_NORMAL1 (BOS2, 'B',    3, A_Chase                      , &States[S_BOS2_RUN+3]),
	S_NORMAL1 (BOS2, 'B',    3, A_Chase                      , &States[S_BOS2_RUN+4]),
	S_NORMAL1 (BOS2, 'C',    3, A_Chase                      , &States[S_BOS2_RUN+5]),
	S_NORMAL1 (BOS2, 'C',    3, A_Chase                      , &States[S_BOS2_RUN+6]),
	S_NORMAL1 (BOS2, 'D',    3, A_Chase                      , &States[S_BOS2_RUN+7]),
	S_NORMAL1 (BOS2, 'D',    3, A_Chase                      , &States[S_BOS2_RUN+0]),

#define S_BOS2_ATK (S_BOS2_RUN+8)
	S_NORMAL1 (BOS2, 'E',    8, A_FaceTarget                 , &States[S_BOS2_ATK+1]),
	S_NORMAL1 (BOS2, 'F',    8, A_FaceTarget                 , &States[S_BOS2_ATK+2]),
	S_NORMAL1 (BOS2, 'G',    8, A_BruisAttack                , &States[S_BOS2_RUN+0]),

#define S_BOS2_PAIN (S_BOS2_ATK+3)
	S_NORMAL1 (BOS2, 'H',    2, NULL                         , &States[S_BOS2_PAIN+1]),
	S_NORMAL1 (BOS2, 'H',    2, A_Pain                       , &States[S_BOS2_RUN+0]),

#define S_BOS2_DIE (S_BOS2_PAIN+2)
	S_NORMAL1 (BOS2, 'I',    8, NULL                         , &States[S_BOS2_DIE+1]),
	S_NORMAL1 (BOS2, 'J',    8, A_Scream                     , &States[S_BOS2_DIE+2]),
	S_NORMAL1 (BOS2, 'K',    8, NULL                         , &States[S_BOS2_DIE+3]),
	S_NORMAL1 (BOS2, 'L',    8, A_NoBlocking                     , &States[S_BOS2_DIE+4]),
	S_NORMAL1 (BOS2, 'M',    8, NULL                         , &States[S_BOS2_DIE+5]),
	S_NORMAL1 (BOS2, 'N',    8, NULL                         , &States[S_BOS2_DIE+6]),
	S_NORMAL1 (BOS2, 'O',   -1, NULL                         , NULL),

#define S_BOS2_RAISE (S_BOS2_DIE+7)
	S_NORMAL1 (BOS2, 'O',    8, NULL                         , &States[S_BOS2_RAISE+1]),
	S_NORMAL1 (BOS2, 'N',    8, NULL                         , &States[S_BOS2_RAISE+2]),
	S_NORMAL1 (BOS2, 'M',    8, NULL                         , &States[S_BOS2_RAISE+3]),
	S_NORMAL1 (BOS2, 'L',    8, NULL                         , &States[S_BOS2_RAISE+4]),
	S_NORMAL1 (BOS2, 'K',    8, NULL                         , &States[S_BOS2_RAISE+5]),
	S_NORMAL1 (BOS2, 'J',    8, NULL                         , &States[S_BOS2_RAISE+6]),
	S_NORMAL1 (BOS2, 'I',    8, NULL                         , &States[S_BOS2_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthHellKnight, Doom, 9056, 101)
	PROP_FlagsSet (MF_STEALTH)
	PROP_Alpha (0)
	PROP_RenderStyle (STYLE_Translucent)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACacodemon, Doom, 3005, 19)
	PROP_SpawnHealth (400)
	PROP_RadiusFixed (31)
	PROP_HeightFixed (56)
	PROP_Mass (400)
	PROP_SpeedFixed (8)
	PROP_PainChance (128)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL)
	PROP_SpawnState (S_HEAD_STND)
	PROP_SeeState (S_HEAD_RUN)
	PROP_PainState (S_HEAD_PAIN)
	PROP_MissileState (S_HEAD_ATK)
	PROP_DeathState (S_HEAD_DIE)
	PROP_RaiseState (S_HEAD_RAISE)
	PROP_SeeSound ("caco/sight")
	PROP_PainSound ("caco/pain")
	PROP_DeathSound ("caco/death")
	PROP_ActiveSound ("caco/active")
	PROP_AttackSound ("caco/melee")
END_DEFAULTS

FState ACacodemon::States[] =
{
#define S_HEAD_STND 0
	S_NORMAL1 (HEAD, 'A',   10, A_Look                       , &States[S_HEAD_STND]),

#define S_HEAD_RUN (S_HEAD_STND+1)
	S_NORMAL1 (HEAD, 'A',    3, A_Chase                      , &States[S_HEAD_RUN+0]),

#define S_HEAD_ATK (S_HEAD_RUN+1)
	S_NORMAL1 (HEAD, 'B',    5, A_FaceTarget                 , &States[S_HEAD_ATK+1]),
	S_NORMAL1 (HEAD, 'C',    5, A_FaceTarget                 , &States[S_HEAD_ATK+2]),
	S_BRIGHT  (HEAD, 'D',    5, A_HeadAttack                 , &States[S_HEAD_RUN+0]),

#define S_HEAD_PAIN (S_HEAD_ATK+3)
	S_NORMAL1 (HEAD, 'E',    3, NULL                         , &States[S_HEAD_PAIN+1]),
	S_NORMAL1 (HEAD, 'E',    3, A_Pain                       , &States[S_HEAD_PAIN+2]),
	S_NORMAL1 (HEAD, 'F',    6, NULL                         , &States[S_HEAD_RUN+0]),

#define S_HEAD_DIE (S_HEAD_PAIN+3)
	S_NORMAL1 (HEAD, 'G',    8, NULL                         , &States[S_HEAD_DIE+1]),
	S_NORMAL1 (HEAD, 'H',    8, A_Scream                     , &States[S_HEAD_DIE+2]),
	S_NORMAL1 (HEAD, 'I',    8, NULL                         , &States[S_HEAD_DIE+3]),
	S_NORMAL1 (HEAD, 'J',    8, NULL                         , &States[S_HEAD_DIE+4]),
	S_NORMAL1 (HEAD, 'K',    8, A_NoBlocking                 , &States[S_HEAD_DIE+5]),
	S_NORMAL1 (HEAD, 'L',   -1, NULL                         , NULL),

#define S_HEAD_RAISE (S_HEAD_DIE+6)
	S_NORMAL1 (HEAD, 'L',    8, NULL                         , &States[S_HEAD_RAISE+1]),
	S_NORMAL1 (HEAD, 'K',    8, NULL                         , &States[S_HEAD_RAISE+2]),
	S_NORMAL1 (HEAD, 'J',    8, NULL                         , &States[S_HEAD_RAISE+3]),
	S_NORMAL1 (HEAD, 'I',    8, NULL                         , &States[S_HEAD_RAISE+4]),
	S_NORMAL1 (HEAD, 'H',    8, NULL                         , &States[S_HEAD_RAISE+5]),
	S_NORMAL1 (HEAD, 'G',    8, NULL                         , &States[S_HEAD_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthCacodemon, Doom, 9053, 119)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACacodemonBall, Doom, -1, 126)
	PROP_RadiusFixed (6)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (10)
	PROP_Damage (5)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_RBALL)
	PROP_DeathState (S_RBALLX)
	PROP_SeeSound ("caco/attack")
	PROP_DeathSound ("caco/shotx")
END_DEFAULTS

FState ACacodemonBall::States[] =
{
#define S_RBALL 0
	S_BRIGHT (BAL2, 'A',    4, NULL                         , &States[S_RBALL+1]),
	S_BRIGHT (BAL2, 'B',    4, NULL                         , &States[S_RBALL+0]),

#define S_RBALLX (S_RBALL+2)
	S_BRIGHT (BAL2, 'C',    6, NULL                         , &States[S_RBALLX+1]),
	S_BRIGHT (BAL2, 'D',    6, NULL                         , &States[S_RBALLX+2]),
	S_BRIGHT (BAL2, 'E',    6, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadCacodemon, Doom, 22, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_HEAD_DIE+5)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACyberdemon, Doom, 16, 114)
	PROP_SpawnHealth (4000)
	PROP_RadiusFixed (40)
	PROP_HeightFixed (110)
	PROP_Mass (1000)
	PROP_SpeedFixed (16)
	PROP_PainChance (20)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_BOSS|MF2_FLOORCLIP)
	PROP_Flags3 (MF3_NORADIUSDMG|MF3_DONTMORPH)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_CYBER_STND)
	PROP_SeeState (S_CYBER_RUN)
	PROP_PainState (S_CYBER_PAIN)
	PROP_MissileState (S_CYBER_ATK)
	PROP_DeathState (S_CYBER_DIE)
	PROP_SeeSound ("cyber/sight")
	PROP_PainSound ("cyber/pain")
	PROP_DeathSound ("cyber/death")
	PROP_ActiveSound ("cyber/active")
END_DEFAULTS

FState ACyberdemon::States[] =
{
#define S_CYBER_STND 0
	S_NORMAL1 (CYBR, 'A',   10, A_Look                       , &States[S_CYBER_STND+1]),
	S_NORMAL1 (CYBR, 'B',   10, A_Look                       , &States[S_CYBER_STND]),

#define S_CYBER_RUN (S_CYBER_STND+2)
	S_NORMAL1 (CYBR, 'A',    3, A_Hoof                       , &States[S_CYBER_RUN+1]),
	S_NORMAL1 (CYBR, 'A',    3, A_Chase                      , &States[S_CYBER_RUN+2]),
	S_NORMAL1 (CYBR, 'B',    3, A_Chase                      , &States[S_CYBER_RUN+3]),
	S_NORMAL1 (CYBR, 'B',    3, A_Chase                      , &States[S_CYBER_RUN+4]),
	S_NORMAL1 (CYBR, 'C',    3, A_Chase                      , &States[S_CYBER_RUN+5]),
	S_NORMAL1 (CYBR, 'C',    3, A_Chase                      , &States[S_CYBER_RUN+6]),
	S_NORMAL1 (CYBR, 'D',    3, A_Metal                      , &States[S_CYBER_RUN+7]),
	S_NORMAL1 (CYBR, 'D',    3, A_Chase                      , &States[S_CYBER_RUN+0]),

#define S_CYBER_ATK (S_CYBER_RUN+8)
	S_NORMAL1 (CYBR, 'E',    6, A_FaceTarget                 , &States[S_CYBER_ATK+1]),
	S_NORMAL1 (CYBR, 'F',   12, A_CyberAttack                , &States[S_CYBER_ATK+2]),
	S_NORMAL1 (CYBR, 'E',   12, A_FaceTarget                 , &States[S_CYBER_ATK+3]),
	S_NORMAL1 (CYBR, 'F',   12, A_CyberAttack                , &States[S_CYBER_ATK+4]),
	S_NORMAL1 (CYBR, 'E',   12, A_FaceTarget                 , &States[S_CYBER_ATK+5]),
	S_NORMAL1 (CYBR, 'F',   12, A_CyberAttack                , &States[S_CYBER_RUN+0]),

#define S_CYBER_PAIN (S_CYBER_ATK+6)
	S_NORMAL1 (CYBR, 'G',   10, A_Pain                       , &States[S_CYBER_RUN+0]),

#define S_CYBER_DIE (S_CYBER_PAIN+1)
	S_NORMAL1 (CYBR, 'H',   10, NULL                         , &States[S_CYBER_DIE+1]),
	S_NORMAL1 (CYBR, 'I',   10, A_Scream                     , &States[S_CYBER_DIE+2]),
	S_NORMAL1 (CYBR, 'J',   10, NULL                         , &States[S_CYBER_DIE+3]),
	S_NORMAL1 (CYBR, 'K',   10, NULL                         , &States[S_CYBER_DIE+4]),
	S_NORMAL1 (CYBR, 'L',   10, NULL                         , &States[S_CYBER_DIE+5]),
	S_NORMAL1 (CYBR, 'M',   10, A_NoBlocking                 , &States[S_CYBER_DIE+6]),
	S_NORMAL1 (CYBR, 'N',   10, NULL                         , &States[S_CYBER_DIE+7]),
	S_NORMAL1 (CYBR, 'O',   10, NULL                         , &States[S_CYBER_DIE+8]),
	S_NORMAL1 (CYBR, 'P',   30, NULL                         , &States[S_CYBER_DIE+9]),
	S_NORMAL1 (CYBR, 'P',   -1, A_BossDeath                  , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ADemon, Doom, 3002, 8)
	PROP_SpawnHealth (150)
	PROP_PainChance (180)
	PROP_SpeedFixed (10)
	PROP_RadiusFixed (30)
	PROP_HeightFixed (56)
	PROP_Mass (400)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_SARG_STND)
	PROP_SeeState (S_SARG_RUN)
	PROP_PainState (S_SARG_PAIN)
	PROP_MeleeState (S_SARG_ATK)
	PROP_DeathState (S_SARG_DIE)
	PROP_RaiseState (S_SARG_RAISE)
	PROP_SeeSound ("demon/sight")
	PROP_AttackSound ("demon/melee")
	PROP_PainSound ("demon/pain")
	PROP_DeathSound ("demon/death")
	PROP_ActiveSound ("demon/active")
END_DEFAULTS

FState ADemon::States[] =
{
#define S_SARG_STND 0
	S_NORMAL1 (SARG, 'A',   10, A_Look                       , &States[S_SARG_STND+1]),
	S_NORMAL1 (SARG, 'B',   10, A_Look                       , &States[S_SARG_STND]),

#define S_SARG_RUN (S_SARG_STND+2)
	S_NORMAL1 (SARG, 'A',    2, A_Chase                      , &States[S_SARG_RUN+1]),
	S_NORMAL1 (SARG, 'A',    2, A_Chase                      , &States[S_SARG_RUN+2]),
	S_NORMAL1 (SARG, 'B',    2, A_Chase                      , &States[S_SARG_RUN+3]),
	S_NORMAL1 (SARG, 'B',    2, A_Chase                      , &States[S_SARG_RUN+4]),
	S_NORMAL1 (SARG, 'C',    2, A_Chase                      , &States[S_SARG_RUN+5]),
	S_NORMAL1 (SARG, 'C',    2, A_Chase                      , &States[S_SARG_RUN+6]),
	S_NORMAL1 (SARG, 'D',    2, A_Chase                      , &States[S_SARG_RUN+7]),
	S_NORMAL1 (SARG, 'D',    2, A_Chase                      , &States[S_SARG_RUN+0]),

#define S_SARG_ATK (S_SARG_RUN+8)
	S_NORMAL1 (SARG, 'E',    8, A_FaceTarget                 , &States[S_SARG_ATK+1]),
	S_NORMAL1 (SARG, 'F',    8, A_FaceTarget                 , &States[S_SARG_ATK+2]),
	S_NORMAL1 (SARG, 'G',    8, A_SargAttack                 , &States[S_SARG_RUN+0]),

#define S_SARG_PAIN (S_SARG_ATK+3)
	S_NORMAL1 (SARG, 'H',    2, NULL                         , &States[S_SARG_PAIN+1]),
	S_NORMAL1 (SARG, 'H',    2, A_Pain                       , &States[S_SARG_RUN+0]),

#define S_SARG_DIE (S_SARG_PAIN+2)
	S_NORMAL1 (SARG, 'I',    8, NULL                         , &States[S_SARG_DIE+1]),
	S_NORMAL1 (SARG, 'J',    8, A_Scream                     , &States[S_SARG_DIE+2]),
	S_NORMAL1 (SARG, 'K',    4, NULL                         , &States[S_SARG_DIE+3]),
	S_NORMAL1 (SARG, 'L',    4, A_NoBlocking                 , &States[S_SARG_DIE+4]),
	S_NORMAL1 (SARG, 'M',    4, NULL                         , &States[S_SARG_DIE+5]),
	S_NORMAL1 (SARG, 'N',   -1, NULL                         , NULL),

#define S_SARG_RAISE (S_SARG_DIE+6)
	S_NORMAL1 (SARG, 'N',    5, NULL                         , &States[S_SARG_RAISE+1]),
	S_NORMAL1 (SARG, 'M',    5, NULL                         , &States[S_SARG_RAISE+2]),
	S_NORMAL1 (SARG, 'L',    5, NULL                         , &States[S_SARG_RAISE+3]),
	S_NORMAL1 (SARG, 'K',    5, NULL                         , &States[S_SARG_RAISE+4]),
	S_NORMAL1 (SARG, 'J',    5, NULL                         , &States[S_SARG_RAISE+5]),
	S_NORMAL1 (SARG, 'I',    5, NULL                         , &States[S_SARG_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthDemon, Doom, 9055, 121)
	PROP_FlagsSet (MF_STEALTH)
	PROP_Alpha (0)
	PROP_RenderStyle (STYLE_Translucent)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ASpectre, Doom, 58, 9)
	PROP_FlagsSet (MF_SHADOW)
	PROP_RenderStyle (STYLE_Fuzzy)
	PROP_Alpha (FRACUNIT/5)
	PROP_SeeSound ("spectre/sight")
	PROP_AttackSound ("spectre/melee")
	PROP_PainSound ("spectre/pain")
	PROP_DeathSound ("spectre/death")
	PROP_ActiveSound ("spectre/active")
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadDemon, Doom, 21, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_SARG_DIE+5)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AArmorBonus, Doom, 2015, 22)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState AArmorBonus::States[] =
{
	S_NORMAL1 (BON2, 'A',    6, NULL                 , &States[1]),
	S_NORMAL1 (BON2, 'B',    6, NULL                 , &States[2]),
	S_NORMAL1 (BON2, 'C',    6, NULL                 , &States[3]),
	S_NORMAL1 (BON2, 'D',    6, NULL                 , &States[4]),
	S_NORMAL1 (BON2, 'C',    6, NULL                 , &States[5]),
	S_NORMAL1 (BON2, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AGreenArmor, Doom, 2018, 68)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AGreenArmor::States[] =
{
	S_NORMAL1(ARM1, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (ARM1, 'B',    7, NULL                 , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABlueArmor, Doom, 2019, 69)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABlueArmor::States[] =
{
	S_NORMAL1(ARM2, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (ARM2, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Invulnerability Sphere

IMPLEMENT_ACTOR (AInvulnerabilitySphere, Doom, 2022, 133)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState AInvulnerabilitySphere::States[] =
{
	S_BRIGHT (PINV, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (PINV, 'B',    6, NULL                 , &States[2]),
	S_BRIGHT (PINV, 'C',    6, NULL                 , &States[3]),
	S_BRIGHT (PINV, 'D',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Soulsphere

IMPLEMENT_ACTOR (ASoulsphere, Doom, 2013, 25)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState ASoulsphere::States[] =
{
	S_BRIGHT (SOUL, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (SOUL, 'B',    6, NULL                 , &States[2]),
	S_BRIGHT (SOUL, 'C',    6, NULL                 , &States[3]),
	S_BRIGHT (SOUL, 'D',    6, NULL                 , &States[4]),
	S_BRIGHT (SOUL, 'C',    6, NULL                 , &States[5]),
	S_BRIGHT (SOUL, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Mega sphere

IMPLEMENT_ACTOR (AMegasphere, Doom, 83, 132)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState AMegasphere::States[] =
{
	S_BRIGHT (MEGA, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (MEGA, 'B',    6, NULL                 , &States[2]),
	S_BRIGHT (MEGA, 'C',    6, NULL                 , &States[3]),
	S_BRIGHT (MEGA, 'D',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Berserk

IMPLEMENT_ACTOR (ABerserk, Doom, 2023, 134)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABerserk::States[] =
{
	S_BRIGHT (PSTR, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

// Invisibility
IMPLEMENT_ACTOR (ABlurSphere, Doom, 2024, 135)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABlurSphere::States[] =
{
	S_BRIGHT (PINS, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (PINS, 'B',    6, NULL                 , &States[2]),
	S_BRIGHT (PINS, 'C',    6, NULL                 , &States[3]),
	S_BRIGHT (PINS, 'D',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Radiation suit (aka iron feet)

IMPLEMENT_ACTOR (ARadSuit, Doom, 2025, 136)
	PROP_HeightFixed (46)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ARadSuit::States[] =
{
	S_BRIGHT (SUIT, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

// infrared

IMPLEMENT_ACTOR (AInfrared, Doom, 2045, 138)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState AInfrared::States[] =
{
	S_BRIGHT  (PVIS, 'A',    6, NULL                 , &States[1]),
	S_NORMAL1 (PVIS, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Allmap

IMPLEMENT_ACTOR (AAllmap, Doom, 2026, 137)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
	PROP_PickupSound ("misc/p_pkup")
END_DEFAULTS

FState AAllmap::States[] =
{
	S_BRIGHT (PMAP, 'A',    6, NULL                 , &States[1]),
	S_BRIGHT (PMAP, 'B',    6, NULL                 , &States[2]),
	S_BRIGHT (PMAP, 'C',    6, NULL                 , &States[3]),
	S_BRIGHT (PMAP, 'D',    6, NULL                 , &States[4]),
	S_BRIGHT (PMAP, 'C',    6, NULL                 , &States[5]),
	S_BRIGHT (PMAP, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Backpack

IMPLEMENT_ACTOR (ABackpack, Doom, 8, 144)
	PROP_HeightFixed (26)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABackpack::States[] =
{
	S_NORMAL1 (BPAK, 'A',   -1, NULL                         , NULL)
};

------------------------------------------------------------------------

// Evil sceptre (Doom beta)

FState AEvilSceptre::States[] =
{
	S_NORMAL1 (BON3, 'A',    6, NULL                 , &States[0]),
};

IMPLEMENT_ACTOR (AEvilSceptre, Doom, 2016, 0)
	PROP_HeightFixed(10)
	PROP_Flags(MF_SPECIAL|MF_COUNTITEM)
	PROP_Inventory_Amount(1)
	PROP_Inventory_FlagsSet(IF_ALWAYSPICKUP)
	PROP_SpawnState(0)
END_DEFAULTS

-------------------------------------------------------------

// Unholy Bible (Doom beta)

FState AUnholyBible::States[] =
{
	S_NORMAL1 (BON4, 'A',    6, NULL                 , &States[0]),
};

IMPLEMENT_ACTOR (AUnholyBible, Doom, 2017, 0)
	PROP_HeightFixed(10)
	PROP_Flags(MF_SPECIAL|MF_COUNTITEM)
	PROP_Inventory_Amount(1)
	PROP_Inventory_FlagsSet(IF_ALWAYSPICKUP)
	PROP_SpawnState(0)
END_DEFAULTS

------------------------------------------------------------------------

// Health bonus

IMPLEMENT_ACTOR (AHealthBonus, Doom, 2014, 152)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
	PROP_SpawnState (0)
END_DEFAULTS

FState AHealthBonus::States[] =
{
	S_NORMAL1 (BON1, 'A',    6, NULL                 , &States[1]),
	S_NORMAL1 (BON1, 'B',    6, NULL                 , &States[2]),
	S_NORMAL1 (BON1, 'C',    6, NULL                 , &States[3]),
	S_NORMAL1 (BON1, 'D',    6, NULL                 , &States[4]),
	S_NORMAL1 (BON1, 'C',    6, NULL                 , &States[5]),
	S_NORMAL1 (BON1, 'B',    6, NULL                 , &States[0])
};

------------------------------------------------------------------------

// Stimpack

IMPLEMENT_ACTOR (AStimpack, Doom, 2011, 23)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AStimpack::States[] =
{
	S_NORMAL1 (STIM, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

// Medikit

IMPLEMENT_ACTOR (AMedikit, Doom, 2012, 24)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AMedikit::States[] =
{
	S_NORMAL1 (MEDI, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ADoomImp, Doom, 3001, 5)
	PROP_SpawnHealth (60)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (200)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_TROO_STND)
	PROP_SeeState (S_TROO_RUN)
	PROP_PainState (S_TROO_PAIN)
	PROP_MeleeState (S_TROO_ATK)
	PROP_MissileState (S_TROO_ATK)
	PROP_DeathState (S_TROO_DIE)
	PROP_XDeathState (S_TROO_XDIE)
	PROP_RaiseState (S_TROO_RAISE)
	PROP_SeeSound ("imp/sight")
	PROP_PainSound ("imp/pain")
	PROP_DeathSound ("imp/death")
	PROP_ActiveSound ("imp/active")
END_DEFAULTS

FState ADoomImp::States[] =
{
#define S_TROO_STND 0
	S_NORMAL1 (TROO, 'A',   10, A_Look                       , &States[S_TROO_STND+1]),
	S_NORMAL1 (TROO, 'B',   10, A_Look                       , &States[S_TROO_STND]),

#define S_TROO_RUN (S_TROO_STND+2)
	S_NORMAL1 (TROO, 'A',    3, A_Chase                      , &States[S_TROO_RUN+1]),
	S_NORMAL1 (TROO, 'A',    3, A_Chase                      , &States[S_TROO_RUN+2]),
	S_NORMAL1 (TROO, 'B',    3, A_Chase                      , &States[S_TROO_RUN+3]),
	S_NORMAL1 (TROO, 'B',    3, A_Chase                      , &States[S_TROO_RUN+4]),
	S_NORMAL1 (TROO, 'C',    3, A_Chase                      , &States[S_TROO_RUN+5]),
	S_NORMAL1 (TROO, 'C',    3, A_Chase                      , &States[S_TROO_RUN+6]),
	S_NORMAL1 (TROO, 'D',    3, A_Chase                      , &States[S_TROO_RUN+7]),
	S_NORMAL1 (TROO, 'D',    3, A_Chase                      , &States[S_TROO_RUN+0]),

#define S_TROO_ATK (S_TROO_RUN+8)
	S_NORMAL1 (TROO, 'E',    8, A_FaceTarget                 , &States[S_TROO_ATK+1]),
	S_NORMAL1 (TROO, 'F',    8, A_FaceTarget                 , &States[S_TROO_ATK+2]),
	S_NORMAL1 (TROO, 'G',    6, A_TroopAttack                , &States[S_TROO_RUN+0]),

#define S_TROO_PAIN (S_TROO_ATK+3)
	S_NORMAL1 (TROO, 'H',    2, NULL                         , &States[S_TROO_PAIN+1]),
	S_NORMAL1 (TROO, 'H',    2, A_Pain                       , &States[S_TROO_RUN+0]),

#define S_TROO_DIE (S_TROO_PAIN+2)
	S_NORMAL1 (TROO, 'I',    8, NULL                         , &States[S_TROO_DIE+1]),
	S_NORMAL1 (TROO, 'J',    8, A_Scream                     , &States[S_TROO_DIE+2]),
	S_NORMAL1 (TROO, 'K',    6, NULL                         , &States[S_TROO_DIE+3]),
	S_NORMAL1 (TROO, 'L',    6, A_NoBlocking                 , &States[S_TROO_DIE+4]),
	S_NORMAL1 (TROO, 'M',   -1, NULL                         , NULL),

#define S_TROO_XDIE (S_TROO_DIE+5)
	S_NORMAL1 (TROO, 'N',    5, NULL                         , &States[S_TROO_XDIE+1]),
	S_NORMAL1 (TROO, 'O',    5, A_XScream                    , &States[S_TROO_XDIE+2]),
	S_NORMAL1 (TROO, 'P',    5, NULL                         , &States[S_TROO_XDIE+3]),
	S_NORMAL1 (TROO, 'Q',    5, A_NoBlocking                 , &States[S_TROO_XDIE+4]),
	S_NORMAL1 (TROO, 'R',    5, NULL                         , &States[S_TROO_XDIE+5]),
	S_NORMAL1 (TROO, 'S',    5, NULL                         , &States[S_TROO_XDIE+6]),
	S_NORMAL1 (TROO, 'T',    5, NULL                         , &States[S_TROO_XDIE+7]),
	S_NORMAL1 (TROO, 'U',   -1, NULL                         , NULL),

#define S_TROO_RAISE (S_TROO_XDIE+8)
	S_NORMAL1 (TROO, 'M',    8, NULL                         , &States[S_TROO_RAISE+1]),
	S_NORMAL1 (TROO, 'L',    8, NULL                         , &States[S_TROO_RAISE+2]),
	S_NORMAL1 (TROO, 'K',    6, NULL                         , &States[S_TROO_RAISE+3]),
	S_NORMAL1 (TROO, 'J',    6, NULL                         , &States[S_TROO_RAISE+4]),
	S_NORMAL1 (TROO, 'I',    6, NULL                         , &States[S_TROO_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthDoomImp, Doom, 9057, 122)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ADoomImpBall, Doom, -1, 10)
	PROP_RadiusFixed (6)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (10)
	PROP_Damage (3)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_TBALL)
	PROP_DeathState (S_TBALLX)
	PROP_SeeSound ("imp/attack")
	PROP_DeathSound ("imp/shotx")
END_DEFAULTS

FState ADoomImpBall::States[] =
{
#define S_TBALL 0
	S_BRIGHT (BAL1, 'A',    4, NULL                         , &States[S_TBALL+1]),
	S_BRIGHT (BAL1, 'B',    4, NULL                         , &States[S_TBALL+0]),

#define S_TBALLX (S_TBALL+2)
	S_BRIGHT (BAL1, 'C',    6, NULL                         , &States[S_TBALLX+1]),
	S_BRIGHT (BAL1, 'D',    6, NULL                         , &States[S_TBALLX+2]),
	S_BRIGHT (BAL1, 'E',    6, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadDoomImp, Doom, 20, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_TROO_DIE+4)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABlueCard, Doom, 5, 85)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (S_CARDB)
	PROP_SeeState (S_CFB)
	PROP_PainState (S_CFB2)
END_DEFAULTS

FState ABlueCard::States[] =
{
#define S_CARDB 0
	S_NORMAL1 (BKEY, 'A',   10, NULL     , &States[S_CARDB+1]),
	S_BRIGHT  (BKEY, 'B',   10, NULL     , &States[S_CARDB]),

#if __CTF__
#define S_CFB (S_CARDB+2)
	S_NORMAL1 (BFLA, 'A',   5, NULL      , &States[S_CFB+1]),
	S_NORMAL1 (BFLA, 'B',   5, NULL      , &States[S_CFB+2]),
	S_NORMAL1 (BFLA, 'C',   5, NULL      , &States[S_CFB+3]),
	S_NORMAL1 (BFLA, 'D',   5, NULL      , &States[S_CFB+4]),
	S_NORMAL1 (BFLA, 'E',   5, NULL      , &States[S_CFB+5]),
	S_NORMAL1 (BFLA, 'F',   5, NULL      , &States[S_CFB+6]),
	S_NORMAL1 (BFLA, 'G',   5, NULL      , &States[S_CFB+7]),
	S_NORMAL1 (BFLA, 'H',   5, NULL      , &States[S_CFB+8]),
	S_NORMAL1 (BFLA, 'I',   5, NULL      , &States[S_CFB+9]),
	S_NORMAL1 (BFLA, 'J',   5, NULL      , &States[S_CFB+10]),
	S_NORMAL1 (BFLA, 'K',   5, NULL      , &States[S_CFB+11]),
	S_NORMAL1 (BFLA, 'L',   5, NULL      , &States[S_CFB+12]),
	S_NORMAL1 (BFLA, 'M',   5, NULL      , &States[S_CFB+13]),
	S_NORMAL1 (BFLA, 'N',   5, NULL      , &States[S_CFB+14]),
	S_NORMAL1 (BFLA, 'O',   5, NULL      , &States[S_CFB+15]),
	S_NORMAL1 (BFLA, 'P',   5, NULL      , &States[S_CFB]),
#define S_CFB2 (S_CFB+16)
	S_NORMAL1 (BFRN, 'A',   4, NULL      ,&States[S_CFB2+0])
#endif
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARedCard, Doom, 13, 86)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (S_CARDR)
	PROP_SeeState (S_CFR)
	PROP_PainState (S_CFR2)
END_DEFAULTS

FState ARedCard::States[] =
{
#define S_CARDR 0
	S_NORMAL1 (RKEY, 'A',   10, NULL     , &States[S_CARDR+1]),
	S_BRIGHT  (RKEY, 'B',   10, NULL     , &States[S_CARDR]),
#if __CTF__
#define S_CFR (S_CARDR+2)
	S_NORMAL1 (RFLA, 'A',   5, NULL  , &States[S_CFR+1]),
	S_NORMAL1 (RFLA, 'B',   5, NULL  , &States[S_CFR+2]),
	S_NORMAL1 (RFLA, 'C',   5, NULL  , &States[S_CFR+3]),
	S_NORMAL1 (RFLA, 'D',   5, NULL  , &States[S_CFR+4]),
	S_NORMAL1 (RFLA, 'E',   5, NULL  , &States[S_CFR+5]),
	S_NORMAL1 (RFLA, 'F',   5, NULL  , &States[S_CFR+6]),
	S_NORMAL1 (RFLA, 'G',   5, NULL  , &States[S_CFR+7]),
	S_NORMAL1 (RFLA, 'H',   5, NULL  , &States[S_CFR+8]),
	S_NORMAL1 (RFLA, 'I',   5, NULL  , &States[S_CFR+9]),
	S_NORMAL1 (RFLA, 'J',   5, NULL  , &States[S_CFR+10]),
	S_NORMAL1 (RFLA, 'K',   5, NULL  , &States[S_CFR+11]),
	S_NORMAL1 (RFLA, 'L',   5, NULL  , &States[S_CFR+12]),
	S_NORMAL1 (RFLA, 'M',   5, NULL  , &States[S_CFR+13]),
	S_NORMAL1 (RFLA, 'N',   5, NULL  , &States[S_CFR+14]),
	S_NORMAL1 (RFLA, 'O',   5, NULL  , &States[S_CFR+15]),
	S_NORMAL1 (RFLA, 'P',   5, NULL  , &States[S_CFR]),
#define S_CFR2 (S_CFR+16)
	S_NORMAL1 (RFRN, 'A',   4, NULL  ,&States[S_CFR2+0])
#endif
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AYellowCard, Doom, 6, 87)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (0)
END_DEFAULTS

FState AYellowCard::States[] =
{
	S_NORMAL1 (YKEY, 'A',   10, NULL                 , &States[1]),
	S_BRIGHT  (YKEY, 'B',   10, NULL                 , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABlueSkull, Doom, 40, 90)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABlueSkull::States[] =
{
	S_NORMAL1 (BSKU, 'A',   10, NULL                 , &States[1]),
	S_BRIGHT  (BSKU, 'B',   10, NULL                 , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AYellowSkull, Doom, 39, 88)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (0)
END_DEFAULTS

FState AYellowSkull::States[] =
{
	S_NORMAL1 (YSKU, 'A',   10, NULL                 , &States[1]),
	S_BRIGHT  (YSKU, 'B',   10, NULL                 , &States[0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARedSkull, Doom, 38, 89)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_SpawnState (0)
END_DEFAULTS

FState ARedSkull::States[] =
{
	S_NORMAL1 (RSKU, 'A',   10, NULL                 , &States[1]),
	S_BRIGHT  (RSKU, 'B',   10, NULL                 , &States[0])
};

------------------------------------------------------------------------

// The barrel of green goop

IMPLEMENT_ACTOR (AExplosiveBarrel, Doom, 2035, 125)
	PROP_SpawnHealth (20)
	PROP_RadiusFixed (10)
	PROP_HeightFixed (42)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD)
	PROP_Flags2 (MF2_MCROSS)
	PROP_SpawnState (S_BAR)
	PROP_DeathState (S_BEXP)
	PROP_DeathSound ("world/barrelx")
END_DEFAULTS

FState AExplosiveBarrel::States[] =
{
#define S_BAR 0
	S_NORMAL1 (BAR1, 'A',    6, NULL                         , &States[S_BAR+1]),
	S_NORMAL1 (BAR1, 'B',    6, NULL                         , &States[S_BAR+0]),

#define S_BEXP (S_BAR+2)
	S_BRIGHT (BEXP, 'A',    5, NULL                         , &States[S_BEXP+1]),
	S_BRIGHT (BEXP, 'B',    5, A_Scream                     , &States[S_BEXP+2]),
	S_BRIGHT (BEXP, 'C',    5, NULL                         , &States[S_BEXP+3]),
	S_BRIGHT (BEXP, 'D',   10, A_Explode                    , &States[S_BEXP+4]),
	S_BRIGHT (BEXP, 'E',   10, NULL                         , &States[S_BEXP+5]),
	S_BRIGHT (BEXP, 'E', 1050, A_BarrelDestroy              , &States[S_BEXP+6]),
	S_BRIGHT (BEXP, 'E',    5, A_BarrelRespawn              , &States[S_BEXP+6])
};

------------------------------------------------------------------------

// Bullet puff

IMPLEMENT_ACTOR (ABulletPuff, Doom, -1, 131)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_Flags4 (MF4_NONETSPAWN)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC50)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABulletPuff::States[] =
{
	S_BRIGHT (PUFF, 'A',    4, NULL                         , &States[1]),
	S_NORMAL1 (PUFF, 'B',    4, NULL                         , &States[2]),
	S_NORMAL1 (PUFF, 'C',    4, NULL                         , &States[3]),
	S_NORMAL1 (PUFF, 'D',    4, NULL                         , NULL)
};

------------------------------------------------------------------------

// This is the definition for the new AStalagmite entry.
// It contains only one state. (Previously the first state
// on ADoomUnusedFrames - though remaining for deprecated
// compatibility)
//
// DoomEdNum: 5050
//
DEC (AStalagmite, 5050)
{
	S_NORMAL1 (SMT2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Container for an unused state
IMPLEMENT_ACTOR (ADoomUnusedStates, Doom, -1, 0)
	PROP_DeathState (S_DEADTORSO)
END_DEFAULTS

FState ADoomUnusedStates::States[] =
{
#define S_STALAGDUMMY 0
	S_NORMAL1 (SMT2, 'A',   -1, NULL             , NULL),

#define S_DEADTORSO (S_STALAGDUMMY+1)
	S_NORMAL1 (PLAY, 'N',   -1, NULL             , NULL),

#define S_DEADBOTTOM (S_DEADTORSO+1)
	S_NORMAL1 (PLAY, 'S',   -1, NULL             , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ADoomPlayer, Doom, -1, 0)
	PROP_SpawnHealth (100)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (56)
	PROP_SpeedFixed (1)
	PROP_Mass (100)
	PROP_PainChance (255)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH|MF_FRIENDLY)
	PROP_Flags2 (MF2_SLIDE|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags3 (MF3_NOBLOCKMONST)
	PROP_SpawnState (S_PLAY)
	PROP_SeeState (S_PLAY_RUN)
	PROP_PainState (S_PLAY_PAIN)
	PROP_MissileState (S_PLAY_ATK)
	PROP_DeathState (S_PLAY_DIE)
	PROP_XDeathState (S_PLAY_XDIE)
END_DEFAULTS

FState ADoomPlayer::States[] =
{
#define S_PLAY 0
	S_NORMAL1 (PLAY, 'A',   -1, NULL                         , NULL),

#define S_PLAY_RUN (S_PLAY+1)
	S_NORMAL1 (PLAY, 'A',    4, NULL                         , &States[S_PLAY_RUN+1]),
	S_NORMAL1 (PLAY, 'B',    4, NULL                         , &States[S_PLAY_RUN+2]),
	S_NORMAL1 (PLAY, 'C',    4, NULL                         , &States[S_PLAY_RUN+3]),
	S_NORMAL1 (PLAY, 'D',    4, NULL                         , &States[S_PLAY_RUN+0]),

#define S_PLAY_ATK (S_PLAY_RUN+4)
	S_NORMAL1 (PLAY, 'E',   12, NULL                         , &States[S_PLAY]),
	S_BRIGHT (PLAY, 'F',    6, NULL                         , &States[S_PLAY_ATK+0]),

#define S_PLAY_PAIN (S_PLAY_ATK+2)
	S_NORMAL1 (PLAY, 'G',    4, NULL                         , &States[S_PLAY_PAIN+1]),
	S_NORMAL1 (PLAY, 'G',    4, A_Pain                       , &States[S_PLAY]),

#define S_PLAY_DIE (S_PLAY_PAIN+2)
	S_NORMAL1 (PLAY, 'H',   10, NULL                         , &States[S_PLAY_DIE+1]),
	S_NORMAL1 (PLAY, 'I',   10, A_PlayerScream               , &States[S_PLAY_DIE+2]),
	S_NORMAL1 (PLAY, 'J',   10, A_NoBlocking                 , &States[S_PLAY_DIE+3]),
	S_NORMAL1 (PLAY, 'K',   10, NULL                         , &States[S_PLAY_DIE+4]),
	S_NORMAL1 (PLAY, 'L',   10, NULL                         , &States[S_PLAY_DIE+5]),
	S_NORMAL1 (PLAY, 'M',   10, NULL                         , &States[S_PLAY_DIE+6]),
	S_NORMAL1 (PLAY, 'N',   -1, NULL                         , NULL),

#define S_PLAY_XDIE (S_PLAY_DIE+7)
	S_NORMAL1 (PLAY, 'O',    5, NULL                         , &States[S_PLAY_XDIE+1]),
	S_NORMAL1 (PLAY, 'P',    5, A_XScream                    , &States[S_PLAY_XDIE+2]),
	S_NORMAL1 (PLAY, 'Q',    5, A_NoBlocking                 , &States[S_PLAY_XDIE+3]),
	S_NORMAL1 (PLAY, 'R',    5, NULL                         , &States[S_PLAY_XDIE+4]),
	S_NORMAL1 (PLAY, 'S',    5, NULL                         , &States[S_PLAY_XDIE+5]),
	S_NORMAL1 (PLAY, 'T',    5, NULL                         , &States[S_PLAY_XDIE+6]),
	S_NORMAL1 (PLAY, 'U',    5, NULL                         , &States[S_PLAY_XDIE+7]),
	S_NORMAL1 (PLAY, 'V',    5, NULL                         , &States[S_PLAY_XDIE+8]),
	S_NORMAL1 (PLAY, 'W',   -1, NULL                         , NULL)
};

------------------------------------------------------------------------

// Dead marine

IMPLEMENT_STATELESS_ACTOR (ADeadMarine, Doom, 15, 0)
	PROP_STATE_BASE (ADoomPlayer)
	PROP_SpawnState (S_PLAY_DIE+6)
END_DEFAULTS

------------------------------------------------------------------------

// Gibbed marine

IMPLEMENT_STATELESS_ACTOR (AGibbedMarine, Doom, 10, 145)
	PROP_STATE_BASE (ADoomPlayer)
	PROP_SpawnState (S_PLAY_XDIE+8)
END_DEFAULTS

------------------------------------------------------------------------

// Gibbed marine (extra copy)

IMPLEMENT_STATELESS_ACTOR (AGibbedMarineExtra, Doom, 12, 0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AFatso, Doom, 67, 112)
	PROP_SpawnHealth (600)
	PROP_RadiusFixed (48)
	PROP_HeightFixed (64)
	PROP_Mass (1000)
	PROP_SpeedFixed (8)
	PROP_PainChance (80)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_FATT_STND)
	PROP_SeeState (S_FATT_RUN)
	PROP_PainState (S_FATT_PAIN)
	PROP_MissileState (S_FATT_ATK)
	PROP_DeathState (S_FATT_DIE)
	PROP_RaiseState (S_FATT_RAISE)
	PROP_SeeSound ("fatso/sight")
	PROP_PainSound ("fatso/pain")
	PROP_DeathSound ("fatso/death")
	PROP_ActiveSound ("fatso/active")
END_DEFAULTS

FState AFatso::States[] =
{
#define S_FATT_STND 0
	S_NORMAL1 (FATT, 'A',   15, A_Look                       , &States[S_FATT_STND+1]),
	S_NORMAL1 (FATT, 'B',   15, A_Look                       , &States[S_FATT_STND]),

#define S_FATT_RUN (S_FATT_STND+2)
	S_NORMAL1 (FATT, 'A',    4, A_Chase                      , &States[S_FATT_RUN+1]),
	S_NORMAL1 (FATT, 'A',    4, A_Chase                      , &States[S_FATT_RUN+2]),
	S_NORMAL1 (FATT, 'B',    4, A_Chase                      , &States[S_FATT_RUN+3]),
	S_NORMAL1 (FATT, 'B',    4, A_Chase                      , &States[S_FATT_RUN+4]),
	S_NORMAL1 (FATT, 'C',    4, A_Chase                      , &States[S_FATT_RUN+5]),
	S_NORMAL1 (FATT, 'C',    4, A_Chase                      , &States[S_FATT_RUN+6]),
	S_NORMAL1 (FATT, 'D',    4, A_Chase                      , &States[S_FATT_RUN+7]),
	S_NORMAL1 (FATT, 'D',    4, A_Chase                      , &States[S_FATT_RUN+8]),
	S_NORMAL1 (FATT, 'E',    4, A_Chase                      , &States[S_FATT_RUN+9]),
	S_NORMAL1 (FATT, 'E',    4, A_Chase                      , &States[S_FATT_RUN+10]),
	S_NORMAL1 (FATT, 'F',    4, A_Chase                      , &States[S_FATT_RUN+11]),
	S_NORMAL1 (FATT, 'F',    4, A_Chase                      , &States[S_FATT_RUN+0]),

#define S_FATT_ATK (S_FATT_RUN+12)
	S_NORMAL1 (FATT, 'G',   20, A_FatRaise                   , &States[S_FATT_ATK+1]),
	S_BRIGHT  (FATT, 'H',   10, A_FatAttack1                 , &States[S_FATT_ATK+2]),
	S_NORMAL1 (FATT, 'I',    5, A_FaceTarget                 , &States[S_FATT_ATK+3]),
	S_NORMAL1 (FATT, 'G',    5, A_FaceTarget                 , &States[S_FATT_ATK+4]),
	S_BRIGHT  (FATT, 'H',   10, A_FatAttack2                 , &States[S_FATT_ATK+5]),
	S_NORMAL1 (FATT, 'I',    5, A_FaceTarget                 , &States[S_FATT_ATK+6]),
	S_NORMAL1 (FATT, 'G',    5, A_FaceTarget                 , &States[S_FATT_ATK+7]),
	S_BRIGHT  (FATT, 'H',   10, A_FatAttack3                 , &States[S_FATT_ATK+8]),
	S_NORMAL1 (FATT, 'I',    5, A_FaceTarget                 , &States[S_FATT_ATK+9]),
	S_NORMAL1 (FATT, 'G',    5, A_FaceTarget                 , &States[S_FATT_RUN+0]),

#define S_FATT_PAIN (S_FATT_ATK+10)
	S_NORMAL1 (FATT, 'J',    3, NULL                         , &States[S_FATT_PAIN+1]),
	S_NORMAL1 (FATT, 'J',    3, A_Pain                       , &States[S_FATT_RUN+0]),

#define S_FATT_DIE (S_FATT_PAIN+2)
	S_NORMAL1 (FATT, 'K',    6, NULL                         , &States[S_FATT_DIE+1]),
	S_NORMAL1 (FATT, 'L',    6, A_Scream                     , &States[S_FATT_DIE+2]),
	S_NORMAL1 (FATT, 'M',    6, A_NoBlocking                 , &States[S_FATT_DIE+3]),
	S_NORMAL1 (FATT, 'N',    6, NULL                         , &States[S_FATT_DIE+4]),
	S_NORMAL1 (FATT, 'O',    6, NULL                         , &States[S_FATT_DIE+5]),
	S_NORMAL1 (FATT, 'P',    6, NULL                         , &States[S_FATT_DIE+6]),
	S_NORMAL1 (FATT, 'Q',    6, NULL                         , &States[S_FATT_DIE+7]),
	S_NORMAL1 (FATT, 'R',    6, NULL                         , &States[S_FATT_DIE+8]),
	S_NORMAL1 (FATT, 'S',    6, NULL                         , &States[S_FATT_DIE+9]),
	S_NORMAL1 (FATT, 'T',   -1, A_BossDeath                  , NULL),

#define S_FATT_RAISE (S_FATT_DIE+10)
	S_NORMAL1 (FATT, 'R',    5, NULL                         , &States[S_FATT_RAISE+1]),
	S_NORMAL1 (FATT, 'Q',    5, NULL                         , &States[S_FATT_RAISE+2]),
	S_NORMAL1 (FATT, 'P',    5, NULL                         , &States[S_FATT_RAISE+3]),
	S_NORMAL1 (FATT, 'O',    5, NULL                         , &States[S_FATT_RAISE+4]),
	S_NORMAL1 (FATT, 'N',    5, NULL                         , &States[S_FATT_RAISE+5]),
	S_NORMAL1 (FATT, 'M',    5, NULL                         , &States[S_FATT_RAISE+6]),
	S_NORMAL1 (FATT, 'L',    5, NULL                         , &States[S_FATT_RAISE+7]),
	S_NORMAL1 (FATT, 'K',    5, NULL                         , &States[S_FATT_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthFatso, Doom, 9058, 123)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AFatShot, Doom, -1, 153)
	PROP_RadiusFixed (6)
	PROP_HeightFixed (32)
	PROP_SpeedFixed (20)
	PROP_Damage (8)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_FATSHOT)
	PROP_DeathState (S_FATSHOTX)
	PROP_SeeSound ("fatso/attack")
	PROP_DeathSound ("fatso/shotx")
END_DEFAULTS

FState AFatShot::States[] =
{
#define S_FATSHOT 0
	S_BRIGHT (MANF, 'A',    4, NULL                         , &States[S_FATSHOT+1]),
	S_BRIGHT (MANF, 'B',    4, NULL                         , &States[S_FATSHOT+0]),

#define S_FATSHOTX (S_FATSHOT+2)
	S_BRIGHT (MISL, 'B',    8, NULL                         , &States[S_FATSHOTX+1]),
	S_BRIGHT (MISL, 'C',    6, NULL                         , &States[S_FATSHOTX+2]),
	S_BRIGHT (MISL, 'D',    4, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACommanderKeen, Doom, 72, 0)
	PROP_SpawnHealth (100)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (72)
	PROP_MassLong (10000000)
	PROP_MaxPainChance
	PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags4 (MF4_NOICEDEATH)
	PROP_SpawnState (S_KEENSTND)
	PROP_PainState (S_KEENPAIN)
	PROP_DeathState (S_COMMKEEN)
	PROP_PainSound ("keen/pain")
	PROP_DeathSound ("keen/death")
END_DEFAULTS

FState ACommanderKeen::States[] =
{
#define S_KEENSTND 0
	S_NORMAL1 (KEEN, 'A',   -1, NULL                         , &States[S_KEENSTND]),

#define S_COMMKEEN (S_KEENSTND+1)
	S_NORMAL1 (KEEN, 'A',    6, NULL                         , &States[S_COMMKEEN+1]),
	S_NORMAL1 (KEEN, 'B',    6, NULL                         , &States[S_COMMKEEN+2]),
	S_NORMAL1 (KEEN, 'C',    6, A_Scream                     , &States[S_COMMKEEN+3]),
	S_NORMAL1 (KEEN, 'D',    6, NULL                         , &States[S_COMMKEEN+4]),
	S_NORMAL1 (KEEN, 'E',    6, NULL                         , &States[S_COMMKEEN+5]),
	S_NORMAL1 (KEEN, 'F',    6, NULL                         , &States[S_COMMKEEN+6]),
	S_NORMAL1 (KEEN, 'G',    6, NULL                         , &States[S_COMMKEEN+7]),
	S_NORMAL1 (KEEN, 'H',    6, NULL                         , &States[S_COMMKEEN+8]),
	S_NORMAL1 (KEEN, 'I',    6, NULL                         , &States[S_COMMKEEN+9]),
	S_NORMAL1 (KEEN, 'J',    6, NULL                         , &States[S_COMMKEEN+10]),
	S_NORMAL1 (KEEN, 'K',    6, A_KeenDie                    , &States[S_COMMKEEN+11]),
	S_NORMAL1 (KEEN, 'L',   -1, NULL                         , NULL),

#define S_KEENPAIN (S_COMMKEEN+12)
	S_NORMAL1 (KEEN, 'M',    4, NULL                         , &States[S_KEENPAIN+1]),
	S_NORMAL1 (KEEN, 'M',    8, A_Pain                       , &States[S_KEENSTND])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABFG9000, Doom, 2006, 31)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (20)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_BFUG)
END_DEFAULTS

FState ABFG9000::States[] =
{
#define S_BFG 0
	S_NORMAL1 (BFGG, 'A',    1, A_WeaponReady        , &States[S_BFG]),

#define S_BFGDOWN (S_BFG+1)
	S_NORMAL1 (BFGG, 'A',    1, A_Lower              , &States[S_BFGDOWN]),

#define S_BFGUP (S_BFGDOWN+1)
	S_NORMAL1 (BFGG, 'A',    1, A_Raise              , &States[S_BFGUP]),

#define S_BFG1 (S_BFGUP+1)
	S_NORMAL1 (BFGG, 'A',   20, A_BFGsound           , &States[S_BFG1+1]),
	S_NORMAL1 (BFGG, 'B',   10, A_GunFlash           , &States[S_BFG1+2]),
	S_NORMAL1 (BFGG, 'B',   10, A_FireBFG            , &States[S_BFG1+3]),
	S_NORMAL1 (BFGG, 'B',   20, A_ReFire             , &States[S_BFG]),

#define S_BFGFLASH (S_BFG1+4)
	S_BRIGHT (BFGF, 'A',   11, A_Light1             , &States[S_BFGFLASH+1]),
	S_BRIGHT (BFGF, 'B',    6, A_Light2             , &AWeapon::States[S_LIGHTDONE]),

#define S_BFUG (S_BFGFLASH+2)
	S_NORMAL1 (BFUG, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ALostSoul, Doom, 3006, 110)
	PROP_SpawnHealth (100)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (56)
	PROP_Mass (50)
	PROP_SpeedFixed (8)
	PROP_Damage (3)
	PROP_MaxPainChance
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY)
	PROP_Flags2 (MF2_MCROSS|MF2_PUSHWALL|MF2_PASSMOBJ)
	PROP_Flags3 (MF3_ISMONSTER)
	PROP_Flags4 (MF4_NOICEDEATH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_SKULL_STND)
	PROP_SeeState (S_SKULL_RUN)
	PROP_PainState (S_SKULL_PAIN)
	PROP_MissileState (S_SKULL_ATK)
	PROP_DeathState (S_SKULL_DIE)
	PROP_AttackSound ("skull/melee")
	PROP_PainSound ("skull/pain")
	PROP_DeathSound ("skull/death")
	PROP_ActiveSound ("skull/active")
END_DEFAULTS

FState ALostSoul::States[] =
{
#define S_SKULL_STND 0
	S_BRIGHT  (SKUL, 'A',   10, A_Look                       , &States[S_SKULL_STND+1]),
	S_BRIGHT  (SKUL, 'B',   10, A_Look                       , &States[S_SKULL_STND]),

#define S_SKULL_RUN (S_SKULL_STND+2)
	S_BRIGHT  (SKUL, 'A',    6, A_Chase                      , &States[S_SKULL_RUN+1]),
	S_BRIGHT  (SKUL, 'B',    6, A_Chase                      , &States[S_SKULL_RUN+0]),

#define S_SKULL_ATK (S_SKULL_RUN+2)
	S_BRIGHT  (SKUL, 'C',   10, A_FaceTarget                 , &States[S_SKULL_ATK+1]),
	S_BRIGHT  (SKUL, 'D',    4, A_SkullAttack                , &States[S_SKULL_ATK+2]),
	S_BRIGHT  (SKUL, 'C',    4, NULL                         , &States[S_SKULL_ATK+3]),
	S_BRIGHT  (SKUL, 'D',    4, NULL                         , &States[S_SKULL_ATK+2]),

#define S_SKULL_PAIN (S_SKULL_ATK+4)
	S_BRIGHT  (SKUL, 'E',    3, NULL                         , &States[S_SKULL_PAIN+1]),
	S_BRIGHT  (SKUL, 'E',    3, A_Pain                       , &States[S_SKULL_RUN+0]),

#define S_SKULL_DIE (S_SKULL_PAIN+2)
	S_BRIGHT  (SKUL, 'F',    6, NULL                         , &States[S_SKULL_DIE+1]),
	S_BRIGHT  (SKUL, 'G',    6, A_Scream                     , &States[S_SKULL_DIE+2]),
	S_BRIGHT  (SKUL, 'H',    6, NULL                         , &States[S_SKULL_DIE+3]),
	S_BRIGHT  (SKUL, 'I',    6, A_NoBlocking                 , &States[S_SKULL_DIE+4]),
	S_NORMAL1 (SKUL, 'J',    6, NULL                         , &States[S_SKULL_DIE+5]),
	S_NORMAL1 (SKUL, 'K',    6, NULL                         , NULL)
};

------------------------------------------------------------------------

// Lost Soul (Doom beta)

IMPLEMENT_ACTOR (ABetaSkull, Doom, 9037, 0)
	PROP_SpawnHealth (100)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (56)
	PROP_Mass (50)
	PROP_SpeedFixed (8)
	PROP_Damage (3)
	PROP_MaxPainChance
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY)
	PROP_Flags2 (MF2_MCROSS|MF2_PUSHWALL|MF2_PASSMOBJ)
	PROP_Flags3 (MF3_ISMONSTER)
	PROP_Flags4 (MF4_NOICEDEATH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_BETASKULL_STND)
	PROP_SeeState (S_BETASKULL_RUN)
	PROP_PainState (S_BETASKULL_PAIN)
	PROP_MissileState (S_BETASKULL_ATK)
	PROP_DeathState (S_BETASKULL_DIE)
	PROP_AttackSound ("skull/melee")
	PROP_PainSound ("skull/pain")
	PROP_DeathSound ("skull/death")
	PROP_ActiveSound ("skull/active")
END_DEFAULTS

FState ABetaSkull::States[] =
{
#define S_BETASKULL_STND 0
	S_BRIGHT  (SKUB, 'A',   10, A_Look                       , &States[S_BETASKULL_STND]),

#define S_BETASKULL_RUN (S_BETASKULL_STND+1)
	S_BRIGHT  (SKUB, 'B',    5, A_Chase                      , &States[S_BETASKULL_RUN+1]),
	S_BRIGHT  (SKUB, 'C',    5, A_Chase                      , &States[S_BETASKULL_RUN+2]),
	S_BRIGHT  (SKUB, 'D',    5, A_Chase                      , &States[S_BETASKULL_RUN+3]),
	S_BRIGHT  (SKUB, 'A',    5, A_Chase                      , &States[S_BETASKULL_RUN+0]),

#define S_BETASKULL_ATK (S_BETASKULL_RUN+4)
	S_BRIGHT  (SKUB, 'E',    4, A_FaceTarget                 , &States[S_BETASKULL_ATK+1]),
	S_BRIGHT  (SKUB, 'F',    5, A_BetaSkullAttack            , &States[S_BETASKULL_ATK+2]),
	S_BRIGHT  (SKUB, 'F',    4, NULL                         , &States[S_BETASKULL_RUN]),

#define S_BETASKULL_PAIN (S_BETASKULL_ATK+3)
	S_BRIGHT  (SKUB, 'G',    4, NULL                         , &States[S_BETASKULL_PAIN+1]),
	S_BRIGHT  (SKUB, 'H',    2, A_Pain                       , &States[S_BETASKULL_RUN]),
	S_BRIGHT  (SKUB, 'I',    4, NULL                         , &States[S_BETASKULL_RUN]),

#define S_BETASKULL_DIE (S_BETASKULL_PAIN+3)
	S_BRIGHT  (SKUB, 'J',    5, NULL                         , &States[S_BETASKULL_DIE+1]),
	S_BRIGHT  (SKUB, 'K',    5, NULL                         , &States[S_BETASKULL_DIE+2]),
	S_BRIGHT  (SKUB, 'L',    5, NULL                         , &States[S_BETASKULL_DIE+3]),
	S_BRIGHT  (SKUB, 'M',    5, NULL                         , &States[S_BETASKULL_DIE+4]),
	S_BRIGHT  (SKUB, 'N',    5, A_Scream                     , &States[S_BETASKULL_DIE+5]),
	S_BRIGHT  (SKUB, 'O',    5, NULL                         , &States[S_BETASKULL_DIE+6]),
	S_BRIGHT  (SKUB, 'P',    5, A_NoBlocking                 , &States[S_BETASKULL_DIE+7]),
	S_NORMAL1 (SKUB, 'Q',    5, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadLostSoul, Doom, 23, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_SKULL_DIE+5)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (APainElemental, Doom, 71, 115)
	PROP_SpawnHealth (400)
	PROP_RadiusFixed (31)
	PROP_HeightFixed (56)
	PROP_Mass (400)
	PROP_SpeedFixed (8)
	PROP_PainChance (128)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL)
	PROP_SpawnState (S_PAIN_STND)
	PROP_SeeState (S_PAIN_RUN)
	PROP_PainState (S_PAIN_PAIN)
	PROP_MissileState (S_PAIN_ATK)
	PROP_DeathState (S_PAIN_DIE)
	PROP_RaiseState (S_PAIN_RAISE)
	PROP_SeeSound ("pain/sight")
	PROP_PainSound ("pain/pain")
	PROP_DeathSound ("pain/death")
	PROP_ActiveSound ("pain/active")
END_DEFAULTS


FState APainElemental::States[] =
{
#define S_PAIN_STND 0
	S_NORMAL1 (PAIN, 'A',   10, A_Look                       , &States[S_PAIN_STND]),

#define S_PAIN_RUN (S_PAIN_STND+1)
	S_NORMAL1 (PAIN, 'A',    3, A_Chase                      , &States[S_PAIN_RUN+1]),
	S_NORMAL1 (PAIN, 'A',    3, A_Chase                      , &States[S_PAIN_RUN+2]),
 	S_NORMAL1 (PAIN, 'B',    3, A_Chase                      , &States[S_PAIN_RUN+3]),
	S_NORMAL1 (PAIN, 'B',    3, A_Chase                      , &States[S_PAIN_RUN+4]),
	S_NORMAL1 (PAIN, 'C',    3, A_Chase                      , &States[S_PAIN_RUN+5]),
	S_NORMAL1 (PAIN, 'C',    3, A_Chase                      , &States[S_PAIN_RUN+0]),

#define S_PAIN_ATK (S_PAIN_RUN+6)
	S_NORMAL1 (PAIN, 'D',    5, A_FaceTarget                 , &States[S_PAIN_ATK+1]),
	S_NORMAL1 (PAIN, 'E',    5, A_FaceTarget                 , &States[S_PAIN_ATK+2]),
	S_BRIGHT  (PAIN, 'F',    5, A_FaceTarget                 , &States[S_PAIN_ATK+3]),
	S_BRIGHT  (PAIN, 'F',    0, A_PainAttack                 , &States[S_PAIN_RUN+0]),

#define S_PAIN_PAIN (S_PAIN_ATK+4)
	S_NORMAL1 (PAIN, 'G',    6, NULL                         , &States[S_PAIN_PAIN+1]),
	S_NORMAL1 (PAIN, 'G',    6, A_Pain                       , &States[S_PAIN_RUN+0]),

#define S_PAIN_DIE (S_PAIN_PAIN+2)
	S_BRIGHT  (PAIN, 'H',    8, NULL                         , &States[S_PAIN_DIE+1]),
	S_BRIGHT  (PAIN, 'I',    8, A_Scream                     , &States[S_PAIN_DIE+2]),
	S_BRIGHT  (PAIN, 'J',    8, NULL                         , &States[S_PAIN_DIE+3]),
	S_BRIGHT  (PAIN, 'K',    8, NULL                         , &States[S_PAIN_DIE+4]),
	S_BRIGHT  (PAIN, 'L',    8, A_PainDie                    , &States[S_PAIN_DIE+5]),
	S_BRIGHT  (PAIN, 'M',    8, NULL                         , NULL),

#define S_PAIN_RAISE (S_PAIN_DIE+6)
	S_NORMAL1 (PAIN, 'M',    8, NULL                         , &States[S_PAIN_RAISE+1]),
	S_NORMAL1 (PAIN, 'L',    8, NULL                         , &States[S_PAIN_RAISE+2]),
	S_NORMAL1 (PAIN, 'K',    8, NULL                         , &States[S_PAIN_RAISE+3]),
	S_NORMAL1 (PAIN, 'J',    8, NULL                         , &States[S_PAIN_RAISE+4]),
	S_NORMAL1 (PAIN, 'I',    8, NULL                         , &States[S_PAIN_RAISE+5]),
	S_NORMAL1 (PAIN, 'H',    8, NULL                         , &States[S_PAIN_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AZombieMan, Doom, 3004, 4)
	PROP_SpawnHealth (20)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (200)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_POSS_STND)
	PROP_SeeState (S_POSS_RUN)
	PROP_PainState (S_POSS_PAIN)
	PROP_MissileState (S_POSS_ATK)
	PROP_DeathState (S_POSS_DIE)
	PROP_XDeathState (S_POSS_XDIE)
	PROP_RaiseState (S_POSS_RAISE)
	PROP_SeeSound ("grunt/sight")
	PROP_AttackSound ("grunt/attack")
	PROP_PainSound ("grunt/pain")
	PROP_DeathSound ("grunt/death")
	PROP_ActiveSound ("grunt/active")
END_DEFAULTS

FState AZombieMan::States[] =
{
#define S_POSS_STND 0
	S_NORMAL1 (POSS, 'A',   10, A_Look                       , &States[S_POSS_STND+1]),
	S_NORMAL1 (POSS, 'B',   10, A_Look                       , &States[S_POSS_STND]),

#define S_POSS_RUN (S_POSS_STND+2)
	S_NORMAL1 (POSS, 'A',    4, A_Chase                      , &States[S_POSS_RUN+1]),
	S_NORMAL1 (POSS, 'A',    4, A_Chase                      , &States[S_POSS_RUN+2]),
	S_NORMAL1 (POSS, 'B',    4, A_Chase                      , &States[S_POSS_RUN+3]),
	S_NORMAL1 (POSS, 'B',    4, A_Chase                      , &States[S_POSS_RUN+4]),
	S_NORMAL1 (POSS, 'C',    4, A_Chase                      , &States[S_POSS_RUN+5]),
	S_NORMAL1 (POSS, 'C',    4, A_Chase                      , &States[S_POSS_RUN+6]),
	S_NORMAL1 (POSS, 'D',    4, A_Chase                      , &States[S_POSS_RUN+7]),
	S_NORMAL1 (POSS, 'D',    4, A_Chase                      , &States[S_POSS_RUN+0]),

#define S_POSS_ATK (S_POSS_RUN+8)
	S_NORMAL1 (POSS, 'E',   10, A_FaceTarget                 , &States[S_POSS_ATK+1]),
	S_NORMAL1 (POSS, 'F',    8, A_PosAttack                  , &States[S_POSS_ATK+2]),
	S_NORMAL1 (POSS, 'E',    8, NULL                         , &States[S_POSS_RUN+0]),

#define S_POSS_PAIN (S_POSS_ATK+3)
	S_NORMAL1 (POSS, 'G',    3, NULL                         , &States[S_POSS_PAIN+1]),
	S_NORMAL1 (POSS, 'G',    3, A_Pain                       , &States[S_POSS_RUN+0]),

#define S_POSS_DIE (S_POSS_PAIN+2)
	S_NORMAL1 (POSS, 'H',    5, NULL                         , &States[S_POSS_DIE+1]),
	S_NORMAL1 (POSS, 'I',    5, A_Scream                     , &States[S_POSS_DIE+2]),
	S_NORMAL1 (POSS, 'J',    5, A_NoBlocking                 , &States[S_POSS_DIE+3]),
	S_NORMAL1 (POSS, 'K',    5, NULL                         , &States[S_POSS_DIE+4]),
	S_NORMAL1 (POSS, 'L',   -1, NULL                         , NULL),

#define S_POSS_XDIE (S_POSS_DIE+5)
	S_NORMAL1 (POSS, 'M',    5, NULL                         , &States[S_POSS_XDIE+1]),
	S_NORMAL1 (POSS, 'N',    5, A_XScream                    , &States[S_POSS_XDIE+2]),
	S_NORMAL1 (POSS, 'O',    5, A_NoBlocking                 , &States[S_POSS_XDIE+3]),
	S_NORMAL1 (POSS, 'P',    5, NULL                         , &States[S_POSS_XDIE+4]),
	S_NORMAL1 (POSS, 'Q',    5, NULL                         , &States[S_POSS_XDIE+5]),
	S_NORMAL1 (POSS, 'R',    5, NULL                         , &States[S_POSS_XDIE+6]),
	S_NORMAL1 (POSS, 'S',    5, NULL                         , &States[S_POSS_XDIE+7]),
	S_NORMAL1 (POSS, 'T',    5, NULL                         , &States[S_POSS_XDIE+8]),
	S_NORMAL1 (POSS, 'U',   -1, NULL                         , NULL),

#define S_POSS_RAISE (S_POSS_XDIE+9)
	S_NORMAL1 (POSS, 'K',    5, NULL                         , &States[S_POSS_RAISE+1]),
	S_NORMAL1 (POSS, 'J',    5, NULL                         , &States[S_POSS_RAISE+2]),
	S_NORMAL1 (POSS, 'I',    5, NULL                         , &States[S_POSS_RAISE+3]),
	S_NORMAL1 (POSS, 'H',    5, NULL                         , &States[S_POSS_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthZombieMan, Doom, 9061, 102)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadZombieMan, Doom, 18, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_POSS_DIE+4)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AShotgunGuy, Doom, 9, 1)
	PROP_SpawnHealth (30)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (170)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_SPOS_STND)
	PROP_SeeState (S_SPOS_RUN)
	PROP_PainState (S_SPOS_PAIN)
	PROP_MissileState (S_SPOS_ATK)
	PROP_DeathState (S_SPOS_DIE)
	PROP_XDeathState (S_SPOS_XDIE)
	PROP_RaiseState (S_SPOS_RAISE)
	PROP_SeeSound ("shotguy/sight")
	PROP_AttackSound ("shotguy/attack")
	PROP_PainSound ("shotguy/pain")
	PROP_DeathSound ("shotguy/death")
	PROP_ActiveSound ("shotguy/active")
END_DEFAULTS

FState AShotgunGuy::States[] =
{

#define S_SPOS_STND 0
	S_NORMAL1 (SPOS, 'A',   10, A_Look                       , &States[S_SPOS_STND+1]),
	S_NORMAL1 (SPOS, 'B',   10, A_Look                       , &States[S_SPOS_STND]),

#define S_SPOS_RUN (S_SPOS_STND+2)
	S_NORMAL1 (SPOS, 'A',    3, A_Chase                      , &States[S_SPOS_RUN+1]),
	S_NORMAL1 (SPOS, 'A',    3, A_Chase                      , &States[S_SPOS_RUN+2]),
	S_NORMAL1 (SPOS, 'B',    3, A_Chase                      , &States[S_SPOS_RUN+3]),
	S_NORMAL1 (SPOS, 'B',    3, A_Chase                      , &States[S_SPOS_RUN+4]),
	S_NORMAL1 (SPOS, 'C',    3, A_Chase                      , &States[S_SPOS_RUN+5]),
	S_NORMAL1 (SPOS, 'C',    3, A_Chase                      , &States[S_SPOS_RUN+6]),
	S_NORMAL1 (SPOS, 'D',    3, A_Chase                      , &States[S_SPOS_RUN+7]),
	S_NORMAL1 (SPOS, 'D',    3, A_Chase                      , &States[S_SPOS_RUN+0]),

#define S_SPOS_ATK (S_SPOS_RUN+8)
	S_NORMAL1 (SPOS, 'E',   10, A_FaceTarget                 , &States[S_SPOS_ATK+1]),
	S_BRIGHT  (SPOS, 'F',   10, A_SPosAttackUseAtkSound      , &States[S_SPOS_ATK+2]),
	S_NORMAL1 (SPOS, 'E',   10, NULL                         , &States[S_SPOS_RUN+0]),

#define S_SPOS_PAIN (S_SPOS_ATK+3)
	S_NORMAL1 (SPOS, 'G',    3, NULL                         , &States[S_SPOS_PAIN+1]),
	S_NORMAL1 (SPOS, 'G',    3, A_Pain                       , &States[S_SPOS_RUN+0]),

#define S_SPOS_DIE (S_SPOS_PAIN+2)
	S_NORMAL1 (SPOS, 'H',    5, NULL                         , &States[S_SPOS_DIE+1]),
	S_NORMAL1 (SPOS, 'I',    5, A_Scream                     , &States[S_SPOS_DIE+2]),
	S_NORMAL1 (SPOS, 'J',    5, A_NoBlocking                 , &States[S_SPOS_DIE+3]),
	S_NORMAL1 (SPOS, 'K',    5, NULL                         , &States[S_SPOS_DIE+4]),
	S_NORMAL1 (SPOS, 'L',   -1, NULL                         , NULL),

#define S_SPOS_XDIE (S_SPOS_DIE+5)
	S_NORMAL1 (SPOS, 'M',    5, NULL                         , &States[S_SPOS_XDIE+1]),
	S_NORMAL1 (SPOS, 'N',    5, A_XScream                    , &States[S_SPOS_XDIE+2]),
	S_NORMAL1 (SPOS, 'O',    5, A_NoBlocking                 , &States[S_SPOS_XDIE+3]),
	S_NORMAL1 (SPOS, 'P',    5, NULL                         , &States[S_SPOS_XDIE+4]),
	S_NORMAL1 (SPOS, 'Q',    5, NULL                         , &States[S_SPOS_XDIE+5]),
	S_NORMAL1 (SPOS, 'R',    5, NULL                         , &States[S_SPOS_XDIE+6]),
	S_NORMAL1 (SPOS, 'S',    5, NULL                         , &States[S_SPOS_XDIE+7]),
	S_NORMAL1 (SPOS, 'T',    5, NULL                         , &States[S_SPOS_XDIE+8]),
	S_NORMAL1 (SPOS, 'U',   -1, NULL                         , NULL),

#define S_SPOS_RAISE (S_SPOS_XDIE+9)
	S_NORMAL1 (SPOS, 'L',    5, NULL                         , &States[S_SPOS_RAISE+1]),
	S_NORMAL1 (SPOS, 'K',    5, NULL                         , &States[S_SPOS_RAISE+2]),
	S_NORMAL1 (SPOS, 'J',    5, NULL                         , &States[S_SPOS_RAISE+3]),
	S_NORMAL1 (SPOS, 'I',    5, NULL                         , &States[S_SPOS_RAISE+4]),
	S_NORMAL1 (SPOS, 'H',    5, NULL                         , &States[S_SPOS_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthShotgunGuy, Doom, 9060, 103)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (ADeadShotgunGuy, Doom, 19, 0)
	PROP_SKIP_SUPER
	PROP_SpawnState (S_SPOS_DIE+4)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AChaingunGuy, Doom, 65, 2)
	PROP_SpawnHealth (70)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (170)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_CPOS_STND)
	PROP_SeeState (S_CPOS_RUN)
	PROP_PainState (S_CPOS_PAIN)
	PROP_MissileState (S_CPOS_ATK)
	PROP_DeathState (S_CPOS_DIE)
	PROP_XDeathState (S_CPOS_XDIE)
	PROP_RaiseState (S_CPOS_RAISE)
	PROP_SeeSound ("chainguy/sight")
	PROP_PainSound ("chainguy/pain")
	PROP_DeathSound ("chainguy/death")
	PROP_ActiveSound ("chainguy/active")
	PROP_AttackSound ("chainguy/attack")
END_DEFAULTS

FState AChaingunGuy::States[] =
{
#define S_CPOS_STND 0
	S_NORMAL1 (CPOS, 'A',   10, A_Look                       , &States[S_CPOS_STND+1]),
	S_NORMAL1 (CPOS, 'B',   10, A_Look                       , &States[S_CPOS_STND]),

#define S_CPOS_RUN (S_CPOS_STND+2)
	S_NORMAL1 (CPOS, 'A',    3, A_Chase                      , &States[S_CPOS_RUN+1]),
	S_NORMAL1 (CPOS, 'A',    3, A_Chase                      , &States[S_CPOS_RUN+2]),
	S_NORMAL1 (CPOS, 'B',    3, A_Chase                      , &States[S_CPOS_RUN+3]),
	S_NORMAL1 (CPOS, 'B',    3, A_Chase                      , &States[S_CPOS_RUN+4]),
	S_NORMAL1 (CPOS, 'C',    3, A_Chase                      , &States[S_CPOS_RUN+5]),
	S_NORMAL1 (CPOS, 'C',    3, A_Chase                      , &States[S_CPOS_RUN+6]),
	S_NORMAL1 (CPOS, 'D',    3, A_Chase                      , &States[S_CPOS_RUN+7]),
	S_NORMAL1 (CPOS, 'D',    3, A_Chase                      , &States[S_CPOS_RUN+0]),

#define S_CPOS_ATK (S_CPOS_RUN+8)
	S_NORMAL1 (CPOS, 'E',   10, A_FaceTarget                 , &States[S_CPOS_ATK+1]),
	S_BRIGHT  (CPOS, 'F',    4, A_CPosAttack                 , &States[S_CPOS_ATK+2]),
	S_BRIGHT  (CPOS, 'E',    4, A_CPosAttack                 , &States[S_CPOS_ATK+3]),
	S_NORMAL1 (CPOS, 'F',    1, A_CPosRefire                 , &States[S_CPOS_ATK+1]),

#define S_CPOS_PAIN (S_CPOS_ATK+4)
	S_NORMAL1 (CPOS, 'G',    3, NULL                         , &States[S_CPOS_PAIN+1]),
	S_NORMAL1 (CPOS, 'G',    3, A_Pain                       , &States[S_CPOS_RUN+0]),

#define S_CPOS_DIE (S_CPOS_PAIN+2)
	S_NORMAL1 (CPOS, 'H',    5, NULL                         , &States[S_CPOS_DIE+1]),
	S_NORMAL1 (CPOS, 'I',    5, A_Scream                     , &States[S_CPOS_DIE+2]),
	S_NORMAL1 (CPOS, 'J',    5, A_NoBlocking                 , &States[S_CPOS_DIE+3]),
	S_NORMAL1 (CPOS, 'K',    5, NULL                         , &States[S_CPOS_DIE+4]),
	S_NORMAL1 (CPOS, 'L',    5, NULL                         , &States[S_CPOS_DIE+5]),
	S_NORMAL1 (CPOS, 'M',    5, NULL                         , &States[S_CPOS_DIE+6]),
	S_NORMAL1 (CPOS, 'N',   -1, NULL                         , NULL),

#define S_CPOS_XDIE (S_CPOS_DIE+7)
	S_NORMAL1 (CPOS, 'O',    5, NULL                         , &States[S_CPOS_XDIE+1]),
	S_NORMAL1 (CPOS, 'P',    5, A_XScream                    , &States[S_CPOS_XDIE+2]),
	S_NORMAL1 (CPOS, 'Q',    5, A_NoBlocking                 , &States[S_CPOS_XDIE+3]),
	S_NORMAL1 (CPOS, 'R',    5, NULL                         , &States[S_CPOS_XDIE+4]),
	S_NORMAL1 (CPOS, 'S',    5, NULL                         , &States[S_CPOS_XDIE+5]),
	S_NORMAL1 (CPOS, 'T',   -1, NULL                         , NULL),

#define S_CPOS_RAISE (S_CPOS_XDIE+6)
	S_NORMAL1 (CPOS, 'N',    5, NULL                         , &States[S_CPOS_RAISE+1]),
	S_NORMAL1 (CPOS, 'M',    5, NULL                         , &States[S_CPOS_RAISE+2]),
	S_NORMAL1 (CPOS, 'L',    5, NULL                         , &States[S_CPOS_RAISE+3]),
	S_NORMAL1 (CPOS, 'K',    5, NULL                         , &States[S_CPOS_RAISE+4]),
	S_NORMAL1 (CPOS, 'J',    5, NULL                         , &States[S_CPOS_RAISE+5]),
	S_NORMAL1 (CPOS, 'I',    5, NULL                         , &States[S_CPOS_RAISE+6]),
	S_NORMAL1 (CPOS, 'H',    5, NULL                         , &States[S_CPOS_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthChaingunGuy, Doom, 9054, 120)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AWolfensteinSS, Doom, 84, 116)
	PROP_SpawnHealth (50)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (170)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_SSWV_STND)
	PROP_SeeState (S_SSWV_RUN)
	PROP_PainState (S_SSWV_PAIN)
	PROP_MissileState (S_SSWV_ATK)
	PROP_DeathState (S_SSWV_DIE)
	PROP_XDeathState (S_SSWV_XDIE)
	PROP_RaiseState (S_SSWV_RAISE)
	PROP_SeeSound ("wolfss/sight")
	PROP_PainSound ("wolfss/pain")
	PROP_DeathSound ("wolfss/death")
	PROP_ActiveSound ("wolfss/active")
	PROP_AttackSound ("wolfss/attack")
END_DEFAULTS

FState AWolfensteinSS::States[] =
{
#define S_SSWV_STND 0
	S_NORMAL1 (SSWV, 'A',   10, A_Look                       , &States[S_SSWV_STND+1]),
	S_NORMAL1 (SSWV, 'B',   10, A_Look                       , &States[S_SSWV_STND]),

#define S_SSWV_RUN (S_SSWV_STND+2)
	S_NORMAL1 (SSWV, 'A',    3, A_Chase                      , &States[S_SSWV_RUN+1]),
	S_NORMAL1 (SSWV, 'A',    3, A_Chase                      , &States[S_SSWV_RUN+2]),
	S_NORMAL1 (SSWV, 'B',    3, A_Chase                      , &States[S_SSWV_RUN+3]),
	S_NORMAL1 (SSWV, 'B',    3, A_Chase                      , &States[S_SSWV_RUN+4]),
	S_NORMAL1 (SSWV, 'C',    3, A_Chase                      , &States[S_SSWV_RUN+5]),
	S_NORMAL1 (SSWV, 'C',    3, A_Chase                      , &States[S_SSWV_RUN+6]),
	S_NORMAL1 (SSWV, 'D',    3, A_Chase                      , &States[S_SSWV_RUN+7]),
	S_NORMAL1 (SSWV, 'D',    3, A_Chase                      , &States[S_SSWV_RUN+0]),

#define S_SSWV_ATK (S_SSWV_RUN+8)
	S_NORMAL1 (SSWV, 'E',   10, A_FaceTarget                 , &States[S_SSWV_ATK+1]),
	S_NORMAL1 (SSWV, 'F',   10, A_FaceTarget                 , &States[S_SSWV_ATK+2]),
	S_BRIGHT  (SSWV, 'G',    4, A_CPosAttack                 , &States[S_SSWV_ATK+3]),
	S_NORMAL1 (SSWV, 'F',    6, A_FaceTarget                 , &States[S_SSWV_ATK+4]),
	S_BRIGHT  (SSWV, 'G',    4, A_CPosAttack                 , &States[S_SSWV_ATK+5]),
	S_NORMAL1 (SSWV, 'F',    1, A_CPosRefire                 , &States[S_SSWV_ATK+1]),

#define S_SSWV_PAIN (S_SSWV_ATK+6)
	S_NORMAL1 (SSWV, 'H',    3, NULL                         , &States[S_SSWV_PAIN+1]),
	S_NORMAL1 (SSWV, 'H',    3, A_Pain                       , &States[S_SSWV_RUN+0]),

#define S_SSWV_DIE (S_SSWV_PAIN+2)
	S_NORMAL1 (SSWV, 'I',    5, NULL                         , &States[S_SSWV_DIE+1]),
	S_NORMAL1 (SSWV, 'J',    5, A_Scream                     , &States[S_SSWV_DIE+2]),
	S_NORMAL1 (SSWV, 'K',    5, A_NoBlocking                 , &States[S_SSWV_DIE+3]),
	S_NORMAL1 (SSWV, 'L',    5, NULL                         , &States[S_SSWV_DIE+4]),
	S_NORMAL1 (SSWV, 'M',   -1, NULL                         , NULL),

#define S_SSWV_XDIE (S_SSWV_DIE+5)
	S_NORMAL1 (SSWV, 'N',    5, NULL                         , &States[S_SSWV_XDIE+1]),
	S_NORMAL1 (SSWV, 'O',    5, A_XScream                    , &States[S_SSWV_XDIE+2]),
	S_NORMAL1 (SSWV, 'P',    5, A_NoBlocking                 , &States[S_SSWV_XDIE+3]),
	S_NORMAL1 (SSWV, 'Q',    5, NULL                         , &States[S_SSWV_XDIE+4]),
	S_NORMAL1 (SSWV, 'R',    5, NULL                         , &States[S_SSWV_XDIE+5]),
	S_NORMAL1 (SSWV, 'S',    5, NULL                         , &States[S_SSWV_XDIE+6]),
	S_NORMAL1 (SSWV, 'T',    5, NULL                         , &States[S_SSWV_XDIE+7]),
	S_NORMAL1 (SSWV, 'U',    5, NULL                         , &States[S_SSWV_XDIE+8]),
	S_NORMAL1 (SSWV, 'V',   -1, NULL                         , NULL),

#define S_SSWV_RAISE (S_SSWV_XDIE+9)
	S_NORMAL1 (SSWV, 'M',    5, NULL                         , &States[S_SSWV_RAISE+1]),
	S_NORMAL1 (SSWV, 'L',    5, NULL                         , &States[S_SSWV_RAISE+2]),
	S_NORMAL1 (SSWV, 'K',    5, NULL                         , &States[S_SSWV_RAISE+3]),
	S_NORMAL1 (SSWV, 'J',    5, NULL                         , &States[S_SSWV_RAISE+4]),
	S_NORMAL1 (SSWV, 'I',    5, NULL                         , &States[S_SSWV_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARevenant, Doom, 66, 20)
	PROP_SpawnHealth (300)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (56)
	PROP_Mass (500)
	PROP_SpeedFixed (10)
	PROP_PainChance (100)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_SKEL_STND)
	PROP_SeeState (S_SKEL_RUN)
	PROP_PainState (S_SKEL_PAIN)
	PROP_MeleeState (S_SKEL_FIST)
	PROP_MissileState (S_SKEL_MISS)
	PROP_DeathState (S_SKEL_DIE)
	PROP_RaiseState (S_SKEL_RAISE)
	PROP_SeeSound ("skeleton/sight")
	PROP_PainSound ("skeleton/pain")
	PROP_DeathSound ("skeleton/death")
	PROP_ActiveSound ("skeleton/active")
END_DEFAULTS

FState ARevenant::States[] =
{
#define S_SKEL_STND 0
	S_NORMAL1 (SKEL, 'A',   10, A_Look                       , &States[S_SKEL_STND+1]),
	S_NORMAL1 (SKEL, 'B',   10, A_Look                       , &States[S_SKEL_STND]),

#define S_SKEL_RUN (S_SKEL_STND+2)
	S_NORMAL1 (SKEL, 'A',    2, A_Chase                      , &States[S_SKEL_RUN+1]),
	S_NORMAL1 (SKEL, 'A',    2, A_Chase                      , &States[S_SKEL_RUN+2]),
	S_NORMAL1 (SKEL, 'B',    2, A_Chase                      , &States[S_SKEL_RUN+3]),
	S_NORMAL1 (SKEL, 'B',    2, A_Chase                      , &States[S_SKEL_RUN+4]),
	S_NORMAL1 (SKEL, 'C',    2, A_Chase                      , &States[S_SKEL_RUN+5]),
	S_NORMAL1 (SKEL, 'C',    2, A_Chase                      , &States[S_SKEL_RUN+6]),
	S_NORMAL1 (SKEL, 'D',    2, A_Chase                      , &States[S_SKEL_RUN+7]),
	S_NORMAL1 (SKEL, 'D',    2, A_Chase                      , &States[S_SKEL_RUN+8]),
	S_NORMAL1 (SKEL, 'E',    2, A_Chase                      , &States[S_SKEL_RUN+9]),
	S_NORMAL1 (SKEL, 'E',    2, A_Chase                      , &States[S_SKEL_RUN+10]),
	S_NORMAL1 (SKEL, 'F',    2, A_Chase                      , &States[S_SKEL_RUN+11]),
	S_NORMAL1 (SKEL, 'F',    2, A_Chase                      , &States[S_SKEL_RUN+0]),

#define S_SKEL_FIST (S_SKEL_RUN+12)
	S_NORMAL1 (SKEL, 'G',    0, A_FaceTarget                 , &States[S_SKEL_FIST+1]),
	S_NORMAL1 (SKEL, 'G',    6, A_SkelWhoosh                 , &States[S_SKEL_FIST+2]),
	S_NORMAL1 (SKEL, 'H',    6, A_FaceTarget                 , &States[S_SKEL_FIST+3]),
	S_NORMAL1 (SKEL, 'I',    6, A_SkelFist                   , &States[S_SKEL_RUN+0]),

#define S_SKEL_MISS (S_SKEL_FIST+4)
	S_BRIGHT  (SKEL, 'J',    0, A_FaceTarget                 , &States[S_SKEL_MISS+1]),
	S_BRIGHT  (SKEL, 'J',   10, A_FaceTarget                 , &States[S_SKEL_MISS+2]),
	S_NORMAL1 (SKEL, 'K',   10, A_SkelMissile                , &States[S_SKEL_MISS+3]),
	S_NORMAL1 (SKEL, 'K',   10, A_FaceTarget                 , &States[S_SKEL_RUN+0]),

#define S_SKEL_PAIN (S_SKEL_MISS+4)
	S_NORMAL1 (SKEL, 'L',    5, NULL                         , &States[S_SKEL_PAIN+1]),
	S_NORMAL1 (SKEL, 'L',    5, A_Pain                       , &States[S_SKEL_RUN+0]),

#define S_SKEL_DIE (S_SKEL_PAIN+2)
	S_NORMAL1 (SKEL, 'L',    7, NULL                         , &States[S_SKEL_DIE+1]),
	S_NORMAL1 (SKEL, 'M',    7, NULL                         , &States[S_SKEL_DIE+2]),
	S_NORMAL1 (SKEL, 'N',    7, A_Scream                     , &States[S_SKEL_DIE+3]),
	S_NORMAL1 (SKEL, 'O',    7, A_NoBlocking                 , &States[S_SKEL_DIE+4]),
	S_NORMAL1 (SKEL, 'P',    7, NULL                         , &States[S_SKEL_DIE+5]),
	S_NORMAL1 (SKEL, 'Q',   -1, NULL                         , NULL),

#define S_SKEL_RAISE (S_SKEL_DIE+6)
	S_NORMAL1 (SKEL, 'Q',    5, NULL                         , &States[S_SKEL_RAISE+1]),
	S_NORMAL1 (SKEL, 'P',    5, NULL                         , &States[S_SKEL_RAISE+2]),
	S_NORMAL1 (SKEL, 'O',    5, NULL                         , &States[S_SKEL_RAISE+3]),
	S_NORMAL1 (SKEL, 'N',    5, NULL                         , &States[S_SKEL_RAISE+4]),
	S_NORMAL1 (SKEL, 'M',    5, NULL                         , &States[S_SKEL_RAISE+5]),
	S_NORMAL1 (SKEL, 'L',    5, NULL                         , &States[S_SKEL_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR (AStealthRevenant, Doom, 9059, 124)
	PROP_FlagsSet (MF_STEALTH)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (0)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARevenantTracer, Doom, -1, 53)
	PROP_RadiusFixed (11)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (10)
	PROP_Damage (10)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_SpawnState (S_TRACER)
	PROP_DeathState (S_TRACEEXP)
	PROP_SeeSound ("skeleton/attack")
	PROP_DeathSound ("skeleton/tracex")
END_DEFAULTS

FState ARevenantTracer::States[] =
{
#define S_TRACER 0
	S_BRIGHT (FATB, 'A',    2, A_Tracer                     , &States[S_TRACER+1]),
	S_BRIGHT (FATB, 'B',    2, A_Tracer                     , &States[S_TRACER]),

#define S_TRACEEXP (S_TRACER+2)
	S_BRIGHT (FBXP, 'A',    8, NULL                         , &States[S_TRACEEXP+1]),
	S_BRIGHT (FBXP, 'B',    6, NULL                         , &States[S_TRACEEXP+2]),
	S_BRIGHT (FBXP, 'C',    4, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARevenantTracerSmoke, Doom, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC50)
	PROP_SpawnState (0)
END_DEFAULTS

FState ARevenantTracerSmoke::States[] =
{
	S_NORMAL1 (PUFF, 'B',    4, NULL                         , &States[1]),
	S_NORMAL1 (PUFF, 'C',    4, NULL                         , &States[2]),
	S_NORMAL1 (PUFF, 'B',    4, NULL                         , &States[3]),
	S_NORMAL1 (PUFF, 'C',    4, NULL                         , &States[4]),
	S_NORMAL1 (PUFF, 'D',    4, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ASpiderMastermind, Doom, 7, 7)
	PROP_SpawnHealth (3000)
	PROP_RadiusFixed (128)
	PROP_HeightFixed (100)
	PROP_Mass (1000)
	PROP_SpeedFixed (12)
	PROP_PainChance (40)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_BOSS|MF2_FLOORCLIP)
	PROP_Flags3 (MF3_NORADIUSDMG|MF3_DONTMORPH)
	PROP_Flags4 (MF4_BOSSDEATH)
	PROP_SpawnState (S_SPID_STND)
	PROP_SeeState (S_SPID_RUN)
	PROP_PainState (S_SPID_PAIN)
	PROP_MissileState (S_SPID_ATK)
	PROP_DeathState (S_SPID_DIE)
	PROP_SeeSound ("spider/sight")
	PROP_AttackSound ("spider/attack")
	PROP_PainSound ("spider/pain")
	PROP_DeathSound ("spider/death")
	PROP_ActiveSound ("spider/active")
END_DEFAULTS

FState ASpiderMastermind::States[] =
{
#define S_SPID_STND 0
	S_NORMAL1 (SPID, 'A',   10, A_Look                       , &States[S_SPID_STND+1]),
	S_NORMAL1 (SPID, 'B',   10, A_Look                       , &States[S_SPID_STND]),

#define S_SPID_RUN (S_SPID_STND+2)
	S_NORMAL1 (SPID, 'A',    3, A_Metal                      , &States[S_SPID_RUN+1]),
	S_NORMAL1 (SPID, 'A',    3, A_Chase                      , &States[S_SPID_RUN+2]),
	S_NORMAL1 (SPID, 'B',    3, A_Chase                      , &States[S_SPID_RUN+3]),
	S_NORMAL1 (SPID, 'B',    3, A_Chase                      , &States[S_SPID_RUN+4]),
	S_NORMAL1 (SPID, 'C',    3, A_Metal                      , &States[S_SPID_RUN+5]),
	S_NORMAL1 (SPID, 'C',    3, A_Chase                      , &States[S_SPID_RUN+6]),
	S_NORMAL1 (SPID, 'D',    3, A_Chase                      , &States[S_SPID_RUN+7]),
	S_NORMAL1 (SPID, 'D',    3, A_Chase                      , &States[S_SPID_RUN+8]),
	S_NORMAL1 (SPID, 'E',    3, A_Metal                      , &States[S_SPID_RUN+9]),
	S_NORMAL1 (SPID, 'E',    3, A_Chase                      , &States[S_SPID_RUN+10]),
	S_NORMAL1 (SPID, 'F',    3, A_Chase                      , &States[S_SPID_RUN+11]),
	S_NORMAL1 (SPID, 'F',    3, A_Chase                      , &States[S_SPID_RUN+0]),

#define S_SPID_ATK (S_SPID_RUN+12)
	S_BRIGHT  (SPID, 'A',   20, A_FaceTarget                 , &States[S_SPID_ATK+1]),
	S_BRIGHT  (SPID, 'G',    4, A_SPosAttackUseAtkSound      , &States[S_SPID_ATK+2]),
	S_BRIGHT  (SPID, 'H',    4, A_SPosAttackUseAtkSound      , &States[S_SPID_ATK+3]),
	S_BRIGHT  (SPID, 'H',    1, A_SpidRefire                 , &States[S_SPID_ATK+1]),

#define S_SPID_PAIN (S_SPID_ATK+4)
	S_NORMAL1 (SPID, 'I',    3, NULL                         , &States[S_SPID_PAIN+1]),
	S_NORMAL1 (SPID, 'I',    3, A_Pain                       , &States[S_SPID_RUN+0]),

#define S_SPID_DIE (S_SPID_PAIN+2)
	S_NORMAL1 (SPID, 'J',   20, A_Scream                     , &States[S_SPID_DIE+1]),
	S_NORMAL1 (SPID, 'K',   10, A_NoBlocking                 , &States[S_SPID_DIE+2]),
	S_NORMAL1 (SPID, 'L',   10, NULL                         , &States[S_SPID_DIE+3]),
	S_NORMAL1 (SPID, 'M',   10, NULL                         , &States[S_SPID_DIE+4]),
	S_NORMAL1 (SPID, 'N',   10, NULL                         , &States[S_SPID_DIE+5]),
	S_NORMAL1 (SPID, 'O',   10, NULL                         , &States[S_SPID_DIE+6]),
	S_NORMAL1 (SPID, 'P',   10, NULL                         , &States[S_SPID_DIE+7]),
	S_NORMAL1 (SPID, 'Q',   10, NULL                         , &States[S_SPID_DIE+8]),
	S_NORMAL1 (SPID, 'R',   10, NULL                         , &States[S_SPID_DIE+9]),
	S_NORMAL1 (SPID, 'S',   30, NULL                         , &States[S_SPID_DIE+10]),
	S_NORMAL1 (SPID, 'S',   -1, A_BossDeath                  , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AScriptedMarine, Doom, 9100, 151)
	PROP_SpawnHealth (100)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (56)
	PROP_Mass (100)
	PROP_SpeedFixed (8)
	PROP_PainChance (MARINE_PAIN_CHANCE)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_Flags3 (MF3_ISMONSTER)
	PROP_Translation (TRANSLATION_Standard,0)   // Scripted marines wear gray
	PROP_Damage (100)
	PROP_SpawnState (S_MPLAYSTILL)
	PROP_SeeState (S_MPLAY_RUN)
	PROP_PainState (S_MPLAY_PAIN)
	PROP_MissileState (S_MPLAY_ATK)
	PROP_DeathState (S_MPLAY_DIE)
	PROP_XDeathState (S_MPLAY_XDIE)
	PROP_RaiseState (S_MPLAY_RAISE)
	PROP_DeathSound ("*death")
	PROP_PainSound ("*pain50")
END_DEFAULTS

FState AScriptedMarine::States[] =
{
#define S_MPLAYSTILL 0
	S_NORMAL1(PLAY, 'A',    4, A_MarineLook                , &States[S_MPLAYSTILL+1]),
	S_NORMAL1(PLAY, 'A',    4, A_MarineNoise               , &States[S_MPLAYSTILL]),

#define S_MPLAY (S_MPLAYSTILL+2)
	S_NORMAL1(PLAY, 'A',   4, A_MarineLook                 , &States[S_MPLAY+1]),
	S_NORMAL1(PLAY, 'A',   4, A_MarineNoise                , &States[S_MPLAY+2]),
	S_NORMAL1(PLAY, 'A',   4, A_MarineLook                 , &States[S_MPLAY+3]),
	S_NORMAL1(PLAY, 'B',   4, A_MarineNoise                , &States[S_MPLAY+4]),
	S_NORMAL1(PLAY, 'B',   4, A_MarineLook                 , &States[S_MPLAY+5]),
	S_NORMAL1(PLAY, 'B',   4, A_MarineNoise                , &States[S_MPLAY]),

#define S_MPLAY_RUN (S_MPLAY+6)
	S_NORMAL1(PLAY, 'A',   4, A_MarineChase                , &States[S_MPLAY_RUN+1]),
	S_NORMAL1(PLAY, 'B',   4, A_MarineChase                , &States[S_MPLAY_RUN+2]),
	S_NORMAL1(PLAY, 'C',   4, A_MarineChase                , &States[S_MPLAY_RUN+3]),
	S_NORMAL1(PLAY, 'D',   4, A_MarineChase                , &States[S_MPLAY_RUN+0]),

#define S_MPLAY_ATK (S_MPLAY_RUN+4)
	S_NORMAL1(PLAY, 'E',  12, A_FaceTarget                 , &States[S_MPLAY]),
	S_BRIGHT (PLAY, 'F',   6, NULL                         , &States[S_MPLAY_ATK+0]),

#define S_MPLAY_PAIN (S_MPLAY_ATK+2)
	S_NORMAL1(PLAY, 'G',   4, NULL                         , &States[S_MPLAY_PAIN+1]),
	S_NORMAL1(PLAY, 'G',   4, A_Pain                       , &States[S_MPLAY]),

#define S_MPLAY_DIE (S_MPLAY_PAIN+2)
	S_NORMAL1(PLAY, 'H',  10, NULL                         , &States[S_MPLAY_DIE+1]),
	S_NORMAL1(PLAY, 'I',  10, A_Scream                     , &States[S_MPLAY_DIE+2]),
	S_NORMAL1(PLAY, 'J',  10, A_NoBlocking                 , &States[S_MPLAY_DIE+3]),
	S_NORMAL1(PLAY, 'K',  10, NULL                         , &States[S_MPLAY_DIE+4]),
	S_NORMAL1(PLAY, 'L',  10, NULL                         , &States[S_MPLAY_DIE+5]),
	S_NORMAL1(PLAY, 'M',  10, NULL                         , &States[S_MPLAY_DIE+6]),
	S_NORMAL1(PLAY, 'N',  -1, NULL                         , NULL),

#define S_MPLAY_XDIE (S_MPLAY_DIE+7)
	S_NORMAL1(PLAY, 'O',   5, NULL                         , &States[S_MPLAY_XDIE+1]),
	S_NORMAL1(PLAY, 'P',   5, A_XScream                    , &States[S_MPLAY_XDIE+2]),
	S_NORMAL1(PLAY, 'Q',   5, A_NoBlocking                 , &States[S_MPLAY_XDIE+3]),
	S_NORMAL1(PLAY, 'R',   5, NULL                         , &States[S_MPLAY_XDIE+4]),
	S_NORMAL1(PLAY, 'S',   5, NULL                         , &States[S_MPLAY_XDIE+5]),
	S_NORMAL1(PLAY, 'T',   5, NULL                         , &States[S_MPLAY_XDIE+6]),
	S_NORMAL1(PLAY, 'U',   5, NULL                         , &States[S_MPLAY_XDIE+7]),
	S_NORMAL1(PLAY, 'V',   5, NULL                         , &States[S_MPLAY_XDIE+8]),
	S_NORMAL1(PLAY, 'W',  -1, NULL                         , NULL),

#define S_MPLAY_RAISE (S_MPLAY_XDIE+9)
	S_NORMAL1(PLAY, 'M',   5, NULL                         , &States[S_MPLAY_RAISE+1]),
	S_NORMAL1(PLAY, 'L',   5, NULL                         , &States[S_MPLAY_RAISE+2]),
	S_NORMAL1(PLAY, 'K',   5, NULL                         , &States[S_MPLAY_RAISE+3]),
	S_NORMAL1(PLAY, 'J',   5, NULL                         , &States[S_MPLAY_RAISE+4]),
	S_NORMAL1(PLAY, 'I',   5, NULL                         , &States[S_MPLAY_RAISE+5]),
	S_NORMAL1(PLAY, 'H',   5, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_CHAINSAW (S_MPLAY_RAISE+6)
	S_NORMAL1(PLAY, 'E',   4, A_MarineNoise                , &States[S_MPLAY_ATK_CHAINSAW+1]),
	S_BRIGHT (PLAY, 'F',   4, A_M_Saw                      , &States[S_MPLAY_ATK_CHAINSAW+2]),
	S_BRIGHT (PLAY, 'F',   0, A_M_SawRefire                , &States[S_MPLAY_ATK_CHAINSAW+1]),
	S_NORMAL1(PLAY, 'A',   0, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_FIST (S_MPLAY_ATK_CHAINSAW+4)
	S_NORMAL1(PLAY, 'E',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_FIST+1]),
	S_NORMAL1(PLAY, 'F',   4, A_M_Punch                    , &States[S_MPLAY_ATK_FIST+2]),	// Purposefully not BRIGHT
	S_NORMAL1(PLAY, 'A',   9, NULL                         , &States[S_MPLAY_ATK_FIST+3]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_FIST]),
	S_NORMAL1(PLAY, 'A',   5, A_FaceTarget                 , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_BERSERK (S_MPLAY_ATK_FIST+5)
	S_NORMAL1(PLAY, 'E',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_BERSERK+1]),
	S_NORMAL1(PLAY, 'F',   4, A_M_BerserkPunch             , &States[S_MPLAY_ATK_BERSERK+2]),	// Purposefully not BRIGHT
	S_NORMAL1(PLAY, 'A',   9, NULL                         , &States[S_MPLAY_ATK_BERSERK+3]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_BERSERK]),
	S_NORMAL1(PLAY, 'A',   5, A_FaceTarget                 , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_PISTOL (S_MPLAY_ATK_BERSERK+5)
	S_NORMAL1(PLAY, 'E',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_PISTOL+1]),
	S_BRIGHT (PLAY, 'F',   6, A_M_FirePistol               , &States[S_MPLAY_ATK_PISTOL+2]),
	S_NORMAL1(PLAY, 'A',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_PISTOL+3]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_PISTOL+5]),
	S_NORMAL1(PLAY, 'A',   5, NULL                         , &States[S_MPLAY_RUN]),
	S_BRIGHT (PLAY, 'F',   6, A_M_FirePistolInaccurate     , &States[S_MPLAY_ATK_PISTOL+6]),
	S_NORMAL1(PLAY, 'A',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_PISTOL+7]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_PISTOL+5]),
	S_NORMAL1(PLAY, 'A',   5, A_FaceTarget                 , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_SHOTGUN (S_MPLAY_ATK_PISTOL+9)
	S_NORMAL1(PLAY, 'E',   3, A_M_CheckAttack              , &States[S_MPLAY_ATK_SHOTGUN+1]),
	S_BRIGHT (PLAY, 'F',   7, A_M_FireShotgun              , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_DSHOTGUN (S_MPLAY_ATK_SHOTGUN+2)
	S_NORMAL1(PLAY, 'E',   3, A_M_CheckAttack              , &States[S_MPLAY_ATK_DSHOTGUN+1]),
	S_BRIGHT (PLAY, 'F',   7, A_M_FireShotgun2             , &States[S_MPLAY_RUN]),
#define S_MPLAY_SKIP_ATTACK (S_MPLAY_ATK_DSHOTGUN+2)
	S_NORMAL1(PLAY, 'A',   1, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_CHAINGUN (S_MPLAY_SKIP_ATTACK+1)
	S_NORMAL1(PLAY, 'E',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_CHAINGUN+1]),
	S_BRIGHT (PLAY, 'F',   4, A_M_FireCGunAccurate         , &States[S_MPLAY_ATK_CHAINGUN+2]),
	S_BRIGHT (PLAY, 'F',   4, A_M_FireCGunAccurate         , &States[S_MPLAY_ATK_CHAINGUN+3]),
	S_BRIGHT (PLAY, 'F',   4, A_M_FireCGun                 , &States[S_MPLAY_ATK_CHAINGUN+4]),
	S_BRIGHT (PLAY, 'F',   4, A_M_FireCGun                 , &States[S_MPLAY_ATK_CHAINGUN+5]),
	S_NORMAL1(PLAY,	'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_CHAINGUN+3]),
	S_NORMAL1(PLAY, 'A',   0, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_ROCKET (S_MPLAY_ATK_CHAINGUN+7)
	S_NORMAL1(PLAY, 'E',   8, A_FaceTarget                 , &States[S_MPLAY_ATK_ROCKET+1]),
	S_BRIGHT (PLAY, 'F',   6, A_M_FireMissile              , &States[S_MPLAY_ATK_ROCKET+2]),
	S_NORMAL1(PLAY,	'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_ROCKET]),
	S_NORMAL1(PLAY, 'A',   0, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_RAILGUN (S_MPLAY_ATK_ROCKET+4)
	S_NORMAL1(PLAY, 'E',   4, A_M_CheckAttack              , &States[S_MPLAY_ATK_RAILGUN+1]),
	S_BRIGHT (PLAY, 'F',   6, A_M_FireRailgun              , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_PLASMA (S_MPLAY_ATK_RAILGUN+2)
	S_NORMAL1(PLAY, 'E',   2, A_FaceTarget                 , &States[S_MPLAY_ATK_PLASMA+1]),
	S_BRIGHT (PLAY, 'F',   3, A_M_FirePlasma               , &States[S_MPLAY_ATK_PLASMA+2]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_PLASMA+1]),
	S_NORMAL1(PLAY, 'A',   0, NULL                         , &States[S_MPLAY_RUN]),

#define S_MPLAY_ATK_BFG (S_MPLAY_ATK_PLASMA+4)
	S_NORMAL1(PLAY, 'E',   5, A_M_BFGsound                 , &States[S_MPLAY_ATK_BFG+1]),
	S_NORMAL1(PLAY, 'E',   5, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+2]),
	S_NORMAL1(PLAY, 'E',   5, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+3]),
	S_NORMAL1(PLAY, 'E',   5, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+4]),
	S_NORMAL1(PLAY, 'E',   5, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+5]),
	S_NORMAL1(PLAY, 'E',   5, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+6]),
	S_BRIGHT (PLAY, 'F',   6, A_M_FireBFG                  , &States[S_MPLAY_ATK_BFG+7]),
	S_NORMAL1(PLAY, 'A',   4, A_FaceTarget                 , &States[S_MPLAY_ATK_BFG+8]),
	S_NORMAL1(PLAY, 'A',   0, A_M_Refire                   , &States[S_MPLAY_ATK_BFG]),
	S_NORMAL1(PLAY, 'A',   0, NULL                         , &States[S_MPLAY_RUN]),
};

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineFist, Doom, 9101, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(S_MPLAY_ATK_FIST)
	PROP_MissileState(255)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineBerserk, Doom, 9102, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(S_MPLAY_ATK_BERSERK)
	PROP_MissileState(255)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineChainsaw, Doom, 9103, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(S_MPLAY_ATK_CHAINSAW)
	PROP_MissileState(255)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarinePistol, Doom, 9104, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_PISTOL)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineShotgun, Doom, 9105, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_SHOTGUN)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineSSG, Doom, 9106, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_DSHOTGUN)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineChaingun, Doom, 9107, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_CHAINGUN)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineRocket, Doom, 9108, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_ROCKET)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarinePlasma, Doom, 9109, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_PLASMA)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineRailgun, Doom, 9110, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_RAILGUN)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_STATELESS_ACTOR(AMarineBFG, Doom, 9111, 0)
	PROP_SpawnState(S_MPLAYSTILL)
	PROP_MeleeState(255)
	PROP_MissileState(S_MPLAY_ATK_BFG)
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AMBFHelperDog, Doom, 888, 0)
	PROP_SpawnHealth (500)
	PROP_PainChance (180)
	PROP_SpeedFixed (10)
	PROP_RadiusFixed (12)
	PROP_HeightFixed (28)
	PROP_Mass (100)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
	PROP_Flags2 (MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_FLOORCLIP)
	PROP_SpawnState (S_DOGS_STND)
	PROP_SeeState (S_DOGS_RUN)
	PROP_PainState (S_DOGS_PAIN)
	PROP_MeleeState (S_DOGS_ATK)
	PROP_DeathState (S_DOGS_DIE)
	PROP_RaiseState (S_DOGS_RAISE)
	PROP_SeeSound ("dog/sight")
	PROP_AttackSound ("dog/attack")
	PROP_PainSound ("dog/pain")
	PROP_DeathSound ("dog/death")
	PROP_ActiveSound ("dog/active")
END_DEFAULTS

FState AMBFHelperDog::States[] =
{
#define S_DOGS_STND 0
	S_NORMAL1 (DOGS, 'A',   10, A_Look                       , &States[S_DOGS_STND+1]),
	S_NORMAL1 (DOGS, 'B',   10, A_Look                       , &States[S_DOGS_STND]),

#define S_DOGS_RUN (S_DOGS_STND+2)
	S_NORMAL1 (DOGS, 'A',    2, A_Chase                      , &States[S_DOGS_RUN+1]),
	S_NORMAL1 (DOGS, 'A',    2, A_Chase                      , &States[S_DOGS_RUN+2]),
	S_NORMAL1 (DOGS, 'B',    2, A_Chase                      , &States[S_DOGS_RUN+3]),
	S_NORMAL1 (DOGS, 'B',    2, A_Chase                      , &States[S_DOGS_RUN+4]),
	S_NORMAL1 (DOGS, 'C',    2, A_Chase                      , &States[S_DOGS_RUN+5]),
	S_NORMAL1 (DOGS, 'C',    2, A_Chase                      , &States[S_DOGS_RUN+6]),
	S_NORMAL1 (DOGS, 'D',    2, A_Chase                      , &States[S_DOGS_RUN+7]),
	S_NORMAL1 (DOGS, 'D',    2, A_Chase                      , &States[S_DOGS_RUN+0]),

#define S_DOGS_ATK (S_DOGS_RUN+8)
	S_NORMAL1 (DOGS, 'E',    8, A_FaceTarget                 , &States[S_DOGS_ATK+1]),
	S_NORMAL1 (DOGS, 'F',    8, A_FaceTarget                 , &States[S_DOGS_ATK+2]),
	S_NORMAL1 (DOGS, 'G',    8, A_SargAttack                 , &States[S_DOGS_RUN+0]),

#define S_DOGS_PAIN (S_DOGS_ATK+3)
	S_NORMAL1 (DOGS, 'H',    2, NULL                         , &States[S_DOGS_PAIN+1]),
	S_NORMAL1 (DOGS, 'H',    2, A_Pain                       , &States[S_DOGS_RUN+0]),

#define S_DOGS_DIE (S_DOGS_PAIN+2)
	S_NORMAL1 (DOGS, 'I',    8, NULL                         , &States[S_DOGS_DIE+1]),
	S_NORMAL1 (DOGS, 'J',    8, A_Scream                     , &States[S_DOGS_DIE+2]),
	S_NORMAL1 (DOGS, 'K',    4, NULL                         , &States[S_DOGS_DIE+3]),
	S_NORMAL1 (DOGS, 'L',    4, A_NoBlocking                 , &States[S_DOGS_DIE+4]),
	S_NORMAL1 (DOGS, 'M',    4, NULL                         , &States[S_DOGS_DIE+5]),
	S_NORMAL1 (DOGS, 'N',   -1, NULL                         , NULL),

#define S_DOGS_RAISE (S_SARG_DIE+6)
	S_NORMAL1 (DOGS, 'N',    5, NULL                         , &States[S_DOGS_RAISE+1]),
	S_NORMAL1 (DOGS, 'M',    5, NULL                         , &States[S_DOGS_RAISE+2]),
	S_NORMAL1 (DOGS, 'L',    5, NULL                         , &States[S_DOGS_RAISE+3]),
	S_NORMAL1 (DOGS, 'K',    5, NULL                         , &States[S_DOGS_RAISE+4]),
	S_NORMAL1 (DOGS, 'J',    5, NULL                         , &States[S_DOGS_RAISE+5]),
	S_NORMAL1 (DOGS, 'I',    5, NULL                         , &States[S_DOGS_RUN+0])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AClip, Doom, 2007, 11)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AClip::States[] =
{
	S_NORMAL1 (CLIP, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AClipBox, Doom, 2048, 139)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AClipBox::States[] =
{
	S_NORMAL1 (AMMO, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARocketAmmo, Doom, 2010, 140)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (26)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ARocketAmmo::States[] =
{
	S_NORMAL1 (ROCK, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARocketBox, Doom, 2046, 141)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ARocketBox::States[] =
{
	S_NORMAL1 (BROK, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACell, Doom, 2047, 75)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (10)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ACell::States[] =
{
	S_NORMAL1 (CELL, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ACellPack, Doom, 17, 142)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (18)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState ACellPack::States[] =
{
	S_NORMAL1 (CELP, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AShell, Doom, 2008, 12)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (8)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AShell::States[] =
{
	S_NORMAL1 (SHEL, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AShellBox, Doom, 2049, 143)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (10)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (0)
END_DEFAULTS

FState AShellBox::States[] =
{
	S_NORMAL1 (SBOX, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AFist, Doom, -1, 0)
END_DEFAULTS

FState AFist::States[] =
{
#define S_PUNCH 0
	S_NORMAL1 (PUNG, 'A',    1, A_WeaponReady        , &States[S_PUNCH]),

#define S_PUNCHDOWN (S_PUNCH+1)
	S_NORMAL1 (PUNG, 'A',    1, A_Lower              , &States[S_PUNCHDOWN]),

#define S_PUNCHUP (S_PUNCHDOWN+1)
	S_NORMAL1 (PUNG, 'A',    1, A_Raise              , &States[S_PUNCHUP]),

#define S_PUNCH1 (S_PUNCHUP+1)
	S_NORMAL1 (PUNG, 'B',    4, NULL                 , &States[S_PUNCH1+1]),
	S_NORMAL1 (PUNG, 'C',    4, A_Punch              , &States[S_PUNCH1+2]),
	S_NORMAL1 (PUNG, 'D',    5, NULL                 , &States[S_PUNCH1+3]),
	S_NORMAL1 (PUNG, 'C',    4, NULL                 , &States[S_PUNCH1+4]),
	S_NORMAL1 (PUNG, 'B',    5, A_ReFire             , &States[S_PUNCH])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (APistol, Doom, -1, 0)
END_DEFAULTS

FState APistol::States[] =
{
#define S_PISTOL 0
	S_NORMAL1 (PISG, 'A',    1, A_WeaponReady        , &States[S_PISTOL]),

#define S_PISTOLDOWN (S_PISTOL+1)
	S_NORMAL1 (PISG, 'A',    1, A_Lower              , &States[S_PISTOLDOWN]),

#define S_PISTOLUP (S_PISTOLDOWN+1)
	S_NORMAL1 (PISG, 'A',    1, A_Raise              , &States[S_PISTOLUP]),

#define S_PISTOL1 (S_PISTOLUP+1)
	S_NORMAL1 (PISG, 'A',    4, NULL                 , &States[S_PISTOL1+1]),
	S_NORMAL1 (PISG, 'B',    6, A_FirePistol         , &States[S_PISTOL1+2]),
	S_NORMAL1 (PISG, 'C',    4, NULL                 , &States[S_PISTOL1+3]),
	S_NORMAL1 (PISG, 'B',    5, A_ReFire             , &States[S_PISTOL]),

#define S_PISTOLFLASH (S_PISTOL1+4)
	S_BRIGHT (PISF, 'A',    7, A_Light1             , &AWeapon::States[S_LIGHTDONE])
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AChainsaw, Doom, 2005, 32)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_CSAW)
END_DEFAULTS

FState AChainsaw::States[] =
{
#define S_SAW 0
	S_NORMAL1 (SAWG, 'C',    4, A_WeaponReady        , &States[S_SAW+1]),
	S_NORMAL1 (SAWG, 'D',    4, A_WeaponReady        , &States[S_SAW+0]),

#define S_SAWDOWN (S_SAW+2)
	S_NORMAL1 (SAWG, 'C',    1, A_Lower              , &States[S_SAWDOWN]),

#define S_SAWUP (S_SAWDOWN+1)
	S_NORMAL1 (SAWG, 'C',    1, A_Raise              , &States[S_SAWUP]),

#define S_SAW1 (S_SAWUP+1)
	S_NORMAL1 (SAWG, 'A',    4, A_Saw                , &States[S_SAW1+1]),
	S_NORMAL1 (SAWG, 'B',    4, A_Saw                , &States[S_SAW1+2]),
	S_NORMAL1 (SAWG, 'B',    0, A_ReFire             , &States[S_SAW]),

#define S_CSAW (S_SAW1+3)
	S_NORMAL1 (CSAW, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AShotgun, Doom, 2001, 27)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_SHOT)
END_DEFAULTS

FState AShotgun::States[] =
{
#define S_SGUN 0
	S_NORMAL1 (SHTG, 'A',    1, A_WeaponReady        , &States[S_SGUN]),

#define S_SGUNDOWN (S_SGUN+1)
	S_NORMAL1 (SHTG, 'A',    1, A_Lower              , &States[S_SGUNDOWN]),

#define S_SGUNUP (S_SGUNDOWN+1)
	S_NORMAL1 (SHTG, 'A',    1, A_Raise              , &States[S_SGUNUP]),

#define S_SGUN1 (S_SGUNUP+1)
	S_NORMAL1 (SHTG, 'A',    3, NULL                 , &States[S_SGUN1+1]),
	S_NORMAL1 (SHTG, 'A',    7, A_FireShotgun        , &States[S_SGUN1+2]),
	S_NORMAL1 (SHTG, 'B',    5, NULL                 , &States[S_SGUN1+3]),
	S_NORMAL1 (SHTG, 'C',    5, NULL                 , &States[S_SGUN1+4]),
	S_NORMAL1 (SHTG, 'D',    4, NULL                 , &States[S_SGUN1+5]),
	S_NORMAL1 (SHTG, 'C',    5, NULL                 , &States[S_SGUN1+6]),
	S_NORMAL1 (SHTG, 'B',    5, NULL                 , &States[S_SGUN1+7]),
	S_NORMAL1 (SHTG, 'A',    3, NULL                 , &States[S_SGUN1+8]),
	S_NORMAL1 (SHTG, 'A',    7, A_ReFire             , &States[S_SGUN]),

#define S_SGUNFLASH (S_SGUN1+9)
	S_BRIGHT (SHTF, 'A',    4, A_Light1             , &States[S_SGUNFLASH+1]),
	S_BRIGHT (SHTF, 'B',    3, A_Light2             , &AWeapon::States[S_LIGHTDONE]),

#define S_SHOT (S_SGUNFLASH+2)
	S_NORMAL1 (SHOT, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ASuperShotgun, Doom, 82, 33)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_SHOT2)
END_DEFAULTS

FState ASuperShotgun::States[] =
{
#define S_DSGUN 0
	S_NORMAL1 (SHT2, 'A',    1, A_WeaponReady        , &States[S_DSGUN]),

#define S_DSGUNDOWN (S_DSGUN+1)
	S_NORMAL1 (SHT2, 'A',    1, A_Lower              , &States[S_DSGUNDOWN]),

#define S_DSGUNUP (S_DSGUNDOWN+1)
	S_NORMAL1 (SHT2, 'A',    1, A_Raise              , &States[S_DSGUNUP]),

#define S_DSGUN1 (S_DSGUNUP+1)
	S_NORMAL1 (SHT2, 'A',    3, NULL                 , &States[S_DSGUN1+1]),
	S_NORMAL1 (SHT2, 'A',    7, A_FireShotgun2       , &States[S_DSGUN1+2]),
	S_NORMAL1 (SHT2, 'B',    7, NULL                 , &States[S_DSGUN1+3]),
	S_NORMAL1 (SHT2, 'C',    7, A_CheckReload        , &States[S_DSGUN1+4]),
	S_NORMAL1 (SHT2, 'D',    7, A_OpenShotgun2       , &States[S_DSGUN1+5]),
	S_NORMAL1 (SHT2, 'E',    7, NULL                 , &States[S_DSGUN1+6]),
	S_NORMAL1 (SHT2, 'F',    7, A_LoadShotgun2       , &States[S_DSGUN1+7]),
	S_NORMAL1 (SHT2, 'G',    6, NULL                 , &States[S_DSGUN1+8]),
	S_NORMAL1 (SHT2, 'H',    6, A_CloseShotgun2      , &States[S_DSGUN1+9]),
	S_NORMAL1 (SHT2, 'A',    5, A_ReFire             , &States[S_DSGUN]),

#define S_DSNR (S_DSGUN1+10)
	S_NORMAL1 (SHT2, 'B',    7, NULL                 , &States[S_DSNR+1]),
	S_NORMAL1 (SHT2, 'A',    3, NULL                 , &States[S_DSGUNDOWN]),

#define S_DSGUNFLASH (S_DSNR+2)
	S_BRIGHT  (SHT2, 'I',    4, A_Light1             , &States[S_DSGUNFLASH+1]),
	S_BRIGHT  (SHT2, 'J',    3, A_Light2             , &AWeapon::States[S_LIGHTDONE]),

#define S_SHOT2 (S_DSGUNFLASH+2)
	S_NORMAL1 (SGN2, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (AChaingun, Doom, 2002, 28)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_MGUN)
END_DEFAULTS

FState AChaingun::States[] =
{
#define S_CHAIN 0
	S_NORMAL1 (CHGG, 'A',    1, A_WeaponReady        , &States[S_CHAIN]),

#define S_CHAINDOWN (S_CHAIN+1)
	S_NORMAL1 (CHGG, 'A',    1, A_Lower              , &States[S_CHAINDOWN]),

#define S_CHAINUP (S_CHAINDOWN+1)
	S_NORMAL1 (CHGG, 'A',    1, A_Raise              , &States[S_CHAINUP]),

#define S_CHAIN1 (S_CHAINUP+1)
	S_NORMAL1 (CHGG, 'A',    4, A_FireCGun           , &States[S_CHAIN1+1]),
	S_NORMAL1 (CHGG, 'B',    4, A_FireCGun           , &States[S_CHAIN1+2]),
	S_NORMAL1 (CHGG, 'B',    0, A_ReFire             , &States[S_CHAIN]),

#define S_CHAINFLASH (S_CHAIN1+3)
	S_BRIGHT  (CHGF, 'A',    5, A_Light1             , &AWeapon::States[S_LIGHTDONE]),
	S_BRIGHT  (CHGF, 'B',    5, A_Light2             , &AWeapon::States[S_LIGHTDONE]),

#define S_MGUN (S_CHAINFLASH+2)
	S_NORMAL1 (MGUN, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARocketLauncher, Doom, 2003, 29)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_LAUN)
END_DEFAULTS

FState ARocketLauncher::States[] =
{
#define S_MISSILE 0
	S_NORMAL1 (MISG, 'A',    1, A_WeaponReady        , &States[S_MISSILE]),

#define S_MISSILEDOWN (S_MISSILE+1)
	S_NORMAL1 (MISG, 'A',    1, A_Lower              , &States[S_MISSILEDOWN]),

#define S_MISSILEUP (S_MISSILEDOWN+1)
	S_NORMAL1 (MISG, 'A',    1, A_Raise              , &States[S_MISSILEUP]),

#define S_MISSILE1 (S_MISSILEUP+1)
	S_NORMAL1 (MISG, 'B',    8, A_GunFlash           , &States[S_MISSILE1+1]),
	S_NORMAL1 (MISG, 'B',   12, A_FireMissile        , &States[S_MISSILE1+2]),
	S_NORMAL1 (MISG, 'B',    0, A_ReFire             , &States[S_MISSILE]),

#define S_MISSILEFLASH (S_MISSILE1+3)
	S_BRIGHT (MISF, 'A',    3, A_Light1             , &States[S_MISSILEFLASH+1]),
	S_BRIGHT (MISF, 'B',    4, NULL                 , &States[S_MISSILEFLASH+2]),
	S_BRIGHT (MISF, 'C',    4, A_Light2             , &States[S_MISSILEFLASH+3]),
	S_BRIGHT (MISF, 'D',    4, A_Light2             , &AWeapon::States[S_LIGHTDONE]),

#define S_LAUN (S_MISSILEFLASH+4)
	S_NORMAL1 (LAUN, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ARocket, Doom, -1, 127)
	PROP_RadiusFixed (11)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (20)
	PROP_Damage (20)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_SpawnState (S_ROCKET)
	PROP_DeathState (S_EXPLODE)
	PROP_SeeSound ("weapons/rocklf")
	PROP_DeathSound ("weapons/rocklx")
END_DEFAULTS

FState ARocket::States[] =
{
#define S_ROCKET 0
	S_BRIGHT (MISL, 'A',    1, NULL                         , &States[S_ROCKET]),

#define S_EXPLODE (S_ROCKET+1)
	S_BRIGHT (MISL, 'B',    8, A_Explode                    , &States[S_EXPLODE+1]),
	S_BRIGHT (MISL, 'C',    6, NULL                         , &States[S_EXPLODE+2]),
	S_BRIGHT (MISL, 'D',    4, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (APlasmaRifle, Doom, 2004, 30)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_PLAS)
END_DEFAULTS

FState APlasmaRifle::States[] =
{
#define S_PLASMA 0
	S_NORMAL1 (PLSG, 'A',    1, A_WeaponReady        , &States[S_PLASMA]),

#define S_PLASMADOWN (S_PLASMA+1)
	S_NORMAL1 (PLSG, 'A',    1, A_Lower              , &States[S_PLASMADOWN]),

#define S_PLASMAUP (S_PLASMADOWN+1)
	S_NORMAL1 (PLSG, 'A',    1, A_Raise              , &States[S_PLASMAUP]),

#define S_PLASMA1 (S_PLASMAUP+1)
	S_NORMAL1 (PLSG, 'A',    3, A_FirePlasma         , &States[S_PLASMA1+1]),
	S_NORMAL1 (PLSG, 'B',   20, A_ReFire             , &States[S_PLASMA]),

#define S_PLASMAFLASH (S_PLASMA1+2)
	S_BRIGHT  (PLSF, 'A',    4, A_Light1             , &AWeapon::States[S_LIGHTDONE]),
	S_BRIGHT  (PLSF, 'B',    4, A_Light1             , &AWeapon::States[S_LIGHTDONE]),

#define S_PLAS (S_PLASMAFLASH+2)
	S_NORMAL1 (PLAS, 'A',   -1, NULL                 , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (APlasmaBall, Doom, -1, 51)
	PROP_RadiusFixed (13)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (25)
	PROP_Damage (5)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_PLASBALL)
	PROP_DeathState (S_PLASEXP)
	PROP_SeeSound ("weapons/plasmaf")
	PROP_DeathSound ("weapons/plasmax")
END_DEFAULTS

FState APlasmaBall::States[] =
{
#define S_PLASBALL 0
	S_BRIGHT (PLSS, 'A',    6, NULL                         , &States[S_PLASBALL+1]),
	S_BRIGHT (PLSS, 'B',    6, NULL                         , &States[S_PLASBALL]),

#define S_PLASEXP (S_PLASBALL+2)
	S_BRIGHT (PLSE, 'A',    4, NULL                         , &States[S_PLASEXP+1]),
	S_BRIGHT (PLSE, 'B',    4, NULL                         , &States[S_PLASEXP+2]),
	S_BRIGHT (PLSE, 'C',    4, NULL                         , &States[S_PLASEXP+3]),
	S_BRIGHT (PLSE, 'D',    4, NULL                         , &States[S_PLASEXP+4]),
	S_BRIGHT (PLSE, 'E',    4, NULL                         , NULL)
};

-- Doom's Pre-Beta BFG -------------------------------------------------

FState APlasmaBall1::States[] =
{
#define S_PLASBALL1 0
	S_BRIGHT (PLS1, 'A',    6, NULL                         , &States[S_PLASBALL1+1]),
	S_BRIGHT (PLS1, 'B',    6, NULL                         , &States[S_PLASBALL1]),

#define S_PLASEXP1 (S_PLASBALL1+2)
	S_BRIGHT (PLS1, 'C',    4, NULL                         , &States[S_PLASEXP1+1]),
	S_BRIGHT (PLS1, 'D',    4, NULL                         , &States[S_PLASEXP1+2]),
	S_BRIGHT (PLS1, 'E',    4, NULL                         , &States[S_PLASEXP1+3]),
	S_BRIGHT (PLS1, 'F',    4, NULL                         , &States[S_PLASEXP1+4]),
	S_BRIGHT (PLS1, 'G',    4, NULL                         , NULL)
};

IMPLEMENT_ACTOR (APlasmaBall1, Doom, -1, 0)
	PROP_RadiusFixed (13)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (25)
	PROP_Damage (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_Flags4 (MF4_RANDOMIZE)
	PROP_Flags5 (MF5_OLDBFGBOUNCE)
	PROP_RenderStyle (STYLE_Add)
	PROP_Alpha (TRANSLUC75)

	PROP_SpawnState (S_PLASBALL)
	PROP_DeathState (S_PLASEXP)

	PROP_SeeSound ("weapons/plasmaf")
	PROP_DeathSound ("weapons/plasmax")
END_DEFAULTS

-- Doom's Pre-Beta BFG -------------------------------------------------

FState APlasmaBall2::States[] =
{
#define S_PLASBALL2 0
	S_BRIGHT (PLS2, 'A',    6, NULL                         , &States[S_PLASBALL2+1]),
	S_BRIGHT (PLS2, 'B',    6, NULL                         , &States[S_PLASBALL2]),

#define S_PLASEXP2 (S_PLASBALL+2)
	S_BRIGHT (PLS2, 'C',    4, NULL                         , &States[S_PLASEXP2+1]),
	S_BRIGHT (PLS2, 'D',    4, NULL                         , &States[S_PLASEXP2+2]),
	S_BRIGHT (PLS2, 'E',    4, NULL                         , NULL)
};

IMPLEMENT_ACTOR (APlasmaBall2, Doom, -1, 0)
	PROP_RadiusFixed (13)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (25)
	PROP_Damage (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_Flags4 (MF4_RANDOMIZE)
	PROP_Flags5 (MF5_OLDBFGBOUNCE)
	PROP_RenderStyle (STYLE_Add)
	PROP_Alpha (TRANSLUC75)

	PROP_SpawnState (S_PLASBALL)
	PROP_DeathState (S_PLASEXP)

	PROP_SeeSound ("weapons/plasmaf")
	PROP_DeathSound ("weapons/plasmax")
END_DEFAULTS

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABFGBall, Doom, -1, 128)
	PROP_RadiusFixed (13)
	PROP_HeightFixed (8)
	PROP_SpeedFixed (25)
	PROP_Damage (100)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY)
	PROP_Flags2 (MF2_PCROSS|MF2_IMPACT|MF2_NOTELEPORT)
	PROP_RenderStyle (STYLE_Add)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_BFGSHOT)
	PROP_DeathState (S_BFGLAND)
	PROP_DeathSound ("weapons/bfgx")
END_DEFAULTS

FState ABFGBall::States[] =
{
#define S_BFGSHOT 0
	S_BRIGHT (BFS1, 'A',    4, NULL                         , &States[S_BFGSHOT+1]),
	S_BRIGHT (BFS1, 'B',    4, NULL                         , &States[S_BFGSHOT]),

#define S_BFGLAND (S_BFGSHOT+2)
	S_BRIGHT (BFE1, 'A',    8, NULL                         , &States[S_BFGLAND+1]),
	S_BRIGHT (BFE1, 'B',    8, NULL                         , &States[S_BFGLAND+2]),
	S_BRIGHT (BFE1, 'C',    8, A_BFGSpray                   , &States[S_BFGLAND+3]),
	S_BRIGHT (BFE1, 'D',    8, NULL                         , &States[S_BFGLAND+4]),
	S_BRIGHT (BFE1, 'E',    8, NULL                         , &States[S_BFGLAND+5]),
	S_BRIGHT (BFE1, 'F',    8, NULL                         , NULL)
};

------------------------------------------------------------------------

IMPLEMENT_ACTOR (ABFGExtra, Doom, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_Add)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABFGExtra::States[] =
{
	S_BRIGHT (BFE2, 'A',    8, NULL                 , &States[1]),
	S_BRIGHT (BFE2, 'B',    8, NULL                 , &States[2]),
	S_BRIGHT (BFE2, 'C',    8, NULL                 , &States[3]),
	S_BRIGHT (BFE2, 'D',    8, NULL                 , NULL)
};

------------------------------------------------------------------------

// AItemFog, shown for respawning Doom items

IMPLEMENT_ACTOR (AItemFog, Doom, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_SpawnState (0)
END_DEFAULTS

FState AItemFog::States[] =
{
	S_BRIGHT (IFOG, 'A',    6, NULL                         , &States[1]),
	S_BRIGHT (IFOG, 'B',    6, NULL                         , &States[2]),
	S_BRIGHT (IFOG, 'A',    6, NULL                         , &States[3]),
	S_BRIGHT (IFOG, 'B',    6, NULL                         , &States[4]),
	S_BRIGHT (IFOG, 'C',    6, NULL                         , &States[5]),
	S_BRIGHT (IFOG, 'D',    6, NULL                         , &States[6]),
	S_BRIGHT (IFOG, 'E',    6, NULL                         , NULL)
};

------------------------------------------------------------------------

// Tech lamp

IMPLEMENT_ACTOR (ATechLamp, Doom, 85, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(80)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATechLamp::States[4] =
{
	S_BRIGHT (TLMP, 'A',  4, NULL, &States[1]),
	S_BRIGHT (TLMP, 'B',  4, NULL, &States[2]),
	S_BRIGHT (TLMP, 'C',  4, NULL, &States[3]),
	S_BRIGHT (TLMP, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Tech lamp 2

IMPLEMENT_ACTOR (ATechLamp2, Doom, 86, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(60)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATechLamp2::States[4] =
{
	S_BRIGHT (TLP2, 'A',  4, NULL, &States[1]),
	S_BRIGHT (TLP2, 'B',  4, NULL, &States[2]),
	S_BRIGHT (TLP2, 'C',  4, NULL, &States[3]),
	S_BRIGHT (TLP2, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Column

IMPLEMENT_ACTOR (AColumn, Doom, 2028, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(48)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AColumn::States[1] =
{
	S_BRIGHT (COLU, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Tall green column

IMPLEMENT_ACTOR (ATallGreenColumn, Doom, 30, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(52)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATallGreenColumn::States[1] =
{
	S_NORMAL1 (COL1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Short green column

IMPLEMENT_ACTOR (AShortGreenColumn, Doom, 31, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(40)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AShortGreenColumn::States[1] =
{
	S_NORMAL1 (COL2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Tall red column

IMPLEMENT_ACTOR (ATallRedColumn, Doom, 32, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(52)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATallRedColumn::States[1] =
{
	S_NORMAL1 (COL3, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Short red column

IMPLEMENT_ACTOR (AShortRedColumn, Doom, 33, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(40)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AShortRedColumn::States[1] =
{
	S_NORMAL1 (COL4, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Skull column

IMPLEMENT_ACTOR (ASkullColumn, Doom, 37, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(40)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ASkullColumn::States[1] =
{
	S_NORMAL1 (COL6, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Heart column

IMPLEMENT_ACTOR (AHeartColumn, Doom, 36, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(40)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AHeartColumn::States[2] =
{
	S_NORMAL1 (COL5, 'A', 14, NULL, &States[1]),
	S_NORMAL1 (COL5, 'B', 14, NULL, &States[0])
};

------------------------------------------------------------------------

// Evil eye

IMPLEMENT_ACTOR (AEvilEye, Doom, 41, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(54)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AEvilEye::States[4] =
{
	S_BRIGHT (CEYE, 'A',  6, NULL, &States[1]),
	S_BRIGHT (CEYE, 'B',  6, NULL, &States[2]),
	S_BRIGHT (CEYE, 'C',  6, NULL, &States[3]),
	S_BRIGHT (CEYE, 'B',  6, NULL, &States[0])
};

------------------------------------------------------------------------

// Floating skull

IMPLEMENT_ACTOR (AFloatingSkull, Doom, 42, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(26)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AFloatingSkull::States[3] =
{
	S_BRIGHT (FSKU, 'A',  6, NULL, &States[1]),
	S_BRIGHT (FSKU, 'B',  6, NULL, &States[2]),
	S_BRIGHT (FSKU, 'C',  6, NULL, &States[0])
};

------------------------------------------------------------------------

// Torch tree

IMPLEMENT_ACTOR (ATorchTree, Doom, 43, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(56)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATorchTree::States[1] =
{
	S_NORMAL1 (TRE1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Blue torch

IMPLEMENT_ACTOR (ABlueTorch, Doom, 44, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(68)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ABlueTorch::States[4] =
{
	S_BRIGHT (TBLU, 'A',  4, NULL, &States[1]),
	S_BRIGHT (TBLU, 'B',  4, NULL, &States[2]),
	S_BRIGHT (TBLU, 'C',  4, NULL, &States[3]),
	S_BRIGHT (TBLU, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Green torch

IMPLEMENT_ACTOR (AGreenTorch, Doom, 45, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(68)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AGreenTorch::States[4] =
{
	S_BRIGHT (TGRN, 'A',  4, NULL, &States[1]),
	S_BRIGHT (TGRN, 'B',  4, NULL, &States[2]),
	S_BRIGHT (TGRN, 'C',  4, NULL, &States[3]),
	S_BRIGHT (TGRN, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Red torch

IMPLEMENT_ACTOR (ARedTorch, Doom, 46, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(68)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ARedTorch::States[4] =
{
	S_BRIGHT (TRED, 'A',  4, NULL, &States[1]),
	S_BRIGHT (TRED, 'B',  4, NULL, &States[2]),
	S_BRIGHT (TRED, 'C',  4, NULL, &States[3]),
	S_BRIGHT (TRED, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Short blue torch

IMPLEMENT_ACTOR (AShortBlueTorch, Doom, 55, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(37)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AShortBlueTorch::States[4] =
{
	S_BRIGHT (SMBT, 'A',  4, NULL, &States[1]),
	S_BRIGHT (SMBT, 'B',  4, NULL, &States[2]),
	S_BRIGHT (SMBT, 'C',  4, NULL, &States[3]),
	S_BRIGHT (SMBT, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Short green torch

IMPLEMENT_ACTOR (AShortGreenTorch, Doom, 56, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(37)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AShortGreenTorch::States[4] =
{
	S_BRIGHT (SMGT, 'A',  4, NULL, &States[1]),
	S_BRIGHT (SMGT, 'B',  4, NULL, &States[2]),
	S_BRIGHT (SMGT, 'C',  4, NULL, &States[3]),
	S_BRIGHT (SMGT, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Short red torch

IMPLEMENT_ACTOR (AShortRedTorch, Doom, 57, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(37)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AShortRedTorch::States[4] =
{
	S_BRIGHT (SMRT, 'A',  4, NULL, &States[1]),
	S_BRIGHT (SMRT, 'B',  4, NULL, &States[2]),
	S_BRIGHT (SMRT, 'C',  4, NULL, &States[3]),
	S_BRIGHT (SMRT, 'D',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Stalagtite

IMPLEMENT_ACTOR (AStalagtite, Doom, 47, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(40)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AStalagtite::States[1] =
{
	S_NORMAL1 (SMIT, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Tech pillar

IMPLEMENT_ACTOR (ATechPillar, Doom, 48, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(128)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ATechPillar::States[1] =
{
	S_NORMAL1 (ELEC, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Candle stick

IMPLEMENT_ACTOR (ACandlestick, Doom, 34, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(14)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ACandlestick::States[1] =
{
	S_BRIGHT (CAND, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Candelabra

IMPLEMENT_ACTOR (ACandelabra, Doom, 35, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(60)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ACandelabra::States[1] =
{
	S_BRIGHT (CBRA, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Bloody twitch

IMPLEMENT_ACTOR (ABloodyTwitch, Doom, 49, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(68)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState ABloodyTwitch::States[4] =
{
	S_NORMAL1 (GOR1, 'A', 10, NULL, &States[1]),
	S_NORMAL1 (GOR1, 'B', 15, NULL, &States[2]),
	S_NORMAL1 (GOR1, 'C',  8, NULL, &States[3]),
	S_NORMAL1 (GOR1, 'B',  6, NULL, &States[0])
};

------------------------------------------------------------------------

// Meat 2

IMPLEMENT_ACTOR (AMeat2, Doom, 50, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(84)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AMeat2::States[1] =
{
	S_NORMAL1 (GOR2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Meat 3

IMPLEMENT_ACTOR (AMeat3, Doom, 51, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(84)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AMeat3::States[1] =
{
	S_NORMAL1 (GOR3, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Meat 4

IMPLEMENT_ACTOR (AMeat4, Doom, 52, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(68)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AMeat4::States[1] =
{
	S_NORMAL1 (GOR4, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Meat 5

IMPLEMENT_ACTOR (AMeat5, Doom, 53, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(52)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AMeat5::States[1] =
{
	S_NORMAL1 (GOR5, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Nonsolid meat

IMPLEMENT_STATELESS_ACTOR (ANonsolidMeat2, Doom, 59, 0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(84)
	PROP_FlagsClear(MF_SOLID)
END_DEFAULTS

------------------------------------------------------------------------

// Nonsolid meat

IMPLEMENT_STATELESS_ACTOR (ANonsolidMeat3, Doom, 61, 0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(52)
	PROP_FlagsClear(MF_SOLID)
END_DEFAULTS

------------------------------------------------------------------------

// Nonsolid meat

IMPLEMENT_STATELESS_ACTOR (ANonsolidMeat4, Doom, 60, 0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(68)
	PROP_FlagsClear(MF_SOLID)
END_DEFAULTS

------------------------------------------------------------------------

// Nonsolid meat

IMPLEMENT_STATELESS_ACTOR (ANonsolidMeat5, Doom, 62, 0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(52)
	PROP_FlagsClear(MF_SOLID)
END_DEFAULTS

------------------------------------------------------------------------

// Nonsolid bloody twitch

IMPLEMENT_STATELESS_ACTOR (ANonsolidTwitch, Doom, 63, 0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(68)
	PROP_FlagsClear(MF_SOLID)
END_DEFAULTS

------------------------------------------------------------------------

// Head on a stick

IMPLEMENT_ACTOR (AHeadOnAStick, Doom, 27, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(56)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AHeadOnAStick::States[1] =
{
	S_NORMAL1 (POL4, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Heads (plural!) on a stick

IMPLEMENT_ACTOR (AHeadsOnAStick, Doom, 28, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AHeadsOnAStick::States[1] =
{
	S_NORMAL1 (POL2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Head candles

IMPLEMENT_ACTOR (AHeadCandles, Doom, 29, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(42)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState AHeadCandles::States[2] =
{
	S_BRIGHT (POL3, 'A',  6, NULL, &States[1]),
	S_BRIGHT (POL3, 'B',  6, NULL, &States[0])
};

------------------------------------------------------------------------

// Dead on a stick

IMPLEMENT_ACTOR (ADeadStick, Doom, 25, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ADeadStick::States[1] =
{
	S_NORMAL1 (POL1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Still alive on a stick

IMPLEMENT_ACTOR (ALiveStick, Doom, 26, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ALiveStick::States[2] =
{
	S_NORMAL1 (POL6, 'A',  6, NULL, &States[1]),
	S_NORMAL1 (POL6, 'B',  8, NULL, &States[0])
};

------------------------------------------------------------------------

// Big tree

IMPLEMENT_ACTOR (ABigTree, Doom, 54, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(32)
	PROP_HeightFixed(108)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ABigTree::States[1] =
{
	S_NORMAL1 (TRE2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Burning barrel

IMPLEMENT_ACTOR (ABurningBarrel, Doom, 70, 149)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(32)
	PROP_Flags(MF_SOLID)
	PROP_ProjectilePassHeight(-16)
END_DEFAULTS

FState ABurningBarrel::States[3] =
{
	S_BRIGHT (FCAN, 'A',  4, NULL, &States[1]),
	S_BRIGHT (FCAN, 'B',  4, NULL, &States[2]),
	S_BRIGHT (FCAN, 'C',  4, NULL, &States[0])
};

------------------------------------------------------------------------

// Hanging with no guts

IMPLEMENT_ACTOR (AHangNoGuts, Doom, 73, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(88)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangNoGuts::States[1] =
{
	S_NORMAL1 (HDB1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Hanging from bottom with no brain

IMPLEMENT_ACTOR (AHangBNoBrain, Doom, 74, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(88)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangBNoBrain::States[1] =
{
	S_NORMAL1 (HDB2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Hanging from top, looking down

IMPLEMENT_ACTOR (AHangTLookingDown, Doom, 75, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangTLookingDown::States[1] =
{
	S_NORMAL1 (HDB3, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Hanging from top, looking up

IMPLEMENT_ACTOR (AHangTLookingUp, Doom, 77, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangTLookingUp::States[1] =
{
	S_NORMAL1 (HDB5, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Hanging from top, skully

IMPLEMENT_ACTOR (AHangTSkull, Doom, 76, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangTSkull::States[1] =
{
	S_NORMAL1 (HDB4, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Hanging from top without a brain

IMPLEMENT_ACTOR (AHangTNoBrain, Doom, 78, 0)
	PROP_SpawnState(0)
	PROP_RadiusFixed(16)
	PROP_HeightFixed(64)
	PROP_Flags(MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
END_DEFAULTS

FState AHangTNoBrain::States[1] =
{
	S_NORMAL1 (HDB6, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Colon gibs

IMPLEMENT_ACTOR (AColonGibs, Doom, 79, 147)
	PROP_SpawnState(0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(4)
	PROP_Flags(MF_NOBLOCKMAP)
END_DEFAULTS

FState AColonGibs::States[1] =
{
	S_NORMAL1 (POB1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// Small pool o' blood

IMPLEMENT_ACTOR (ASmallBloodPool, Doom, 80, 148)
	PROP_SpawnState(0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(1)
	PROP_Flags(MF_NOBLOCKMAP)
END_DEFAULTS

FState ASmallBloodPool::States[1] =
{
	S_NORMAL1 (POB2, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------

// brain stem lying on the ground

IMPLEMENT_ACTOR (ABrainStem, Doom, 81, 150)
	PROP_SpawnState(0)
	PROP_RadiusFixed(20)
	PROP_HeightFixed(4)
	PROP_Flags(MF_NOBLOCKMAP)
END_DEFAULTS

FState ABrainStem::States[1] =
{
	S_NORMAL1 (BRS1, 'A', -1, NULL, NULL)
};

------------------------------------------------------------------------