ZDaemon Actors common to all games

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

//========== Base class for all flags (ZDaemon)

IMPLEMENT_STATELESS_ACTOR (AFlag, Any, -1, 0)
	PROP_PickupSound ("misc/flag_pkup")
END_DEFAULTS

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

//========== Red flag (ZDaemon)

IMPLEMENT_ACTOR (ARedFlag, Any, 5131, 172)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (50)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_SpawnState (S_CFR)
	PROP_SeeState (S_CFR)
	PROP_PainState (S_CFR2)
END_DEFAULTS

FState ARedFlag::States[] =
{
#undef S_CFR
#define S_CFR 0
	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])
};

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

//========== Blue flag (ZDaemon)

IMPLEMENT_ACTOR (ABlueFlag, Any, 5130, 171)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (50)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_SpawnState (S_CFB)
	PROP_SeeState (S_CFB)
	PROP_PainState (S_CFB2)
END_DEFAULTS

FState ABlueFlag::States[] =
{
#undef S_CFB
#define S_CFB 0
	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])
};

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

//========== Green flag (ZDaemon)

IMPLEMENT_ACTOR (AGreenFlag, Any, 5133, 174)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (50)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_SpawnState (S_CFGR)
	PROP_SeeState (S_CFGR)
	PROP_PainState (S_CFGR2)
END_DEFAULTS

FState AGreenFlag::States[] =
{
#define S_CFGR 0
	S_NORMAL1 (GFLA, 'A',   5, NULL  , &States[S_CFGR+1]),
	S_NORMAL1 (GFLA, 'B',   5, NULL  , &States[S_CFGR+2]),
	S_NORMAL1 (GFLA, 'C',   5, NULL  , &States[S_CFGR+3]),
	S_NORMAL1 (GFLA, 'D',   5, NULL  , &States[S_CFGR+4]),
	S_NORMAL1 (GFLA, 'E',   5, NULL  , &States[S_CFGR+5]),
	S_NORMAL1 (GFLA, 'F',   5, NULL  , &States[S_CFGR+6]),
	S_NORMAL1 (GFLA, 'G',   5, NULL  , &States[S_CFGR+7]),
	S_NORMAL1 (GFLA, 'H',   5, NULL  , &States[S_CFGR+8]),
	S_NORMAL1 (GFLA, 'I',   5, NULL  , &States[S_CFGR+9]),
	S_NORMAL1 (GFLA, 'J',   5, NULL  , &States[S_CFGR+10]),
	S_NORMAL1 (GFLA, 'K',   5, NULL  , &States[S_CFGR+11]),
	S_NORMAL1 (GFLA, 'L',   5, NULL  , &States[S_CFGR+12]),
	S_NORMAL1 (GFLA, 'M',   5, NULL  , &States[S_CFGR+13]),
	S_NORMAL1 (GFLA, 'N',   5, NULL  , &States[S_CFGR+14]),
	S_NORMAL1 (GFLA, 'O',   5, NULL  , &States[S_CFGR+15]),
	S_NORMAL1 (GFLA, 'P',   5, NULL  , &States[S_CFGR]),
#define S_CFGR2 (S_CFGR+16)
	S_NORMAL1 (GFRN, 'A',   4, NULL  ,&States[S_CFGR2+0])
};

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

//========== White flag (ZDaemon)

IMPLEMENT_ACTOR (AWhiteFlag, Any, 5134, 175)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (50)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_SpawnState (S_CFW)
	PROP_SeeState (S_CFW)
	PROP_PainState (S_CFW2)
END_DEFAULTS

FState AWhiteFlag::States[] =
{
#define S_CFW 0
	S_NORMAL1 (WFLA, 'A',   5, NULL  , &States[S_CFW+1]),
	S_NORMAL1 (WFLA, 'B',   5, NULL  , &States[S_CFW+2]),
	S_NORMAL1 (WFLA, 'C',   5, NULL  , &States[S_CFW+3]),
	S_NORMAL1 (WFLA, 'D',   5, NULL  , &States[S_CFW+4]),
	S_NORMAL1 (WFLA, 'E',   5, NULL  , &States[S_CFW+5]),
	S_NORMAL1 (WFLA, 'F',   5, NULL  , &States[S_CFW+6]),
	S_NORMAL1 (WFLA, 'G',   5, NULL  , &States[S_CFW+7]),
	S_NORMAL1 (WFLA, 'H',   5, NULL  , &States[S_CFW+8]),
	S_NORMAL1 (WFLA, 'I',   5, NULL  , &States[S_CFW+9]),
	S_NORMAL1 (WFLA, 'J',   5, NULL  , &States[S_CFW+10]),
	S_NORMAL1 (WFLA, 'K',   5, NULL  , &States[S_CFW+11]),
	S_NORMAL1 (WFLA, 'L',   5, NULL  , &States[S_CFW+12]),
	S_NORMAL1 (WFLA, 'M',   5, NULL  , &States[S_CFW+13]),
	S_NORMAL1 (WFLA, 'N',   5, NULL  , &States[S_CFW+14]),
	S_NORMAL1 (WFLA, 'O',   5, NULL  , &States[S_CFW+15]),
	S_NORMAL1 (WFLA, 'P',   5, NULL  , &States[S_CFW]),
#define S_CFW2 (S_CFW+16)
	S_NORMAL1 (WFRN, 'A',   4, NULL  ,&States[S_CFW2+0])
};

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

//========== Gold flag (ZDaemon)

IMPLEMENT_ACTOR (AGoldFlag, Any, 5132, 173)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (50)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_SpawnState (S_CFG)
	PROP_SeeState (S_CFG)
	PROP_PainState (S_CFG2)
END_DEFAULTS

FState AGoldFlag::States[] =
{
#define S_CFG 0
	S_NORMAL1 (DFLA, 'A',   5, NULL  , &States[S_CFG+1]),
	S_NORMAL1 (DFLA, 'B',   5, NULL  , &States[S_CFG+2]),
	S_NORMAL1 (DFLA, 'C',   5, NULL  , &States[S_CFG+3]),
	S_NORMAL1 (DFLA, 'D',   5, NULL  , &States[S_CFG+4]),
	S_NORMAL1 (DFLA, 'E',   5, NULL  , &States[S_CFG+5]),
	S_NORMAL1 (DFLA, 'F',   5, NULL  , &States[S_CFG+6]),
	S_NORMAL1 (DFLA, 'G',   5, NULL  , &States[S_CFG+7]),
	S_NORMAL1 (DFLA, 'H',   5, NULL  , &States[S_CFG+8]),
	S_NORMAL1 (DFLA, 'I',   5, NULL  , &States[S_CFG+9]),
	S_NORMAL1 (DFLA, 'J',   5, NULL  , &States[S_CFG+10]),
	S_NORMAL1 (DFLA, 'K',   5, NULL  , &States[S_CFG+11]),
	S_NORMAL1 (DFLA, 'L',   5, NULL  , &States[S_CFG+12]),
	S_NORMAL1 (DFLA, 'M',   5, NULL  , &States[S_CFG+13]),
	S_NORMAL1 (DFLA, 'N',   5, NULL  , &States[S_CFG+14]),
	S_NORMAL1 (DFLA, 'O',   5, NULL  , &States[S_CFG+15]),
	S_NORMAL1 (DFLA, 'P',   5, NULL  , &States[S_CFG]),
#define S_CFG2 (S_CFG+16)
	S_NORMAL1 (DFRN, 'A',   4, NULL  ,&States[S_CFG2+0])
};

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

//========== Railgun

IMPLEMENT_ACTOR (ARailgun, Any, 5012, 164)
	PROP_RadiusFixed (20)
	PROP_HeightFixed (16)
	PROP_Flags (MF_SPECIAL)
	PROP_SpawnState (S_RAIL)
END_DEFAULTS

FState ARailgun::States[] =
{
#define S_RAILGUN 0
	S_NORMAL1 (RLSG, 'A',    1, A_WeaponReady        , &States[S_RAILGUN]),

#define S_RAILGUNDOWN (S_RAILGUN+1)
	S_NORMAL1 (RLSG, 'A',    1, A_Lower              , &States[S_RAILGUNDOWN]),

#define S_RAILGUNUP (S_RAILGUNDOWN+1)
	S_NORMAL1 (RLSG, 'A',    1, A_Raise              , &States[S_RAILGUNUP]),

#define S_RAILGUN1 (S_RAILGUNUP+1)
	S_NORMAL1 (RLSG, 'A',    0, A_Light1             , &States[S_RAILGUN1+1]),
	S_BRIGHT  (RLSG, 'B',    2, A_FireRailgun        , &States[S_RAILGUN1+2]),
	S_BRIGHT  (RLSG, 'C',    3, NULL                 , &States[S_RAILGUN1+3]),
	S_NORMAL1 (RLSG, 'C',    8, A_Light0             , &States[S_RAILGUN1+4]),
	S_NORMAL1 (RLSG, 'D',    5, NULL                 , &States[S_RAILGUN1+5]),
	S_NORMAL1 (RLSG, 'E',    5, NULL                 , &States[S_RAILGUN1+6]),
	S_NORMAL1 (RLSG, 'F',    5, NULL                 , &States[S_RAILGUN1+7]),
	S_NORMAL1 (RLSG, 'G',    5, NULL                 , &States[S_RAILGUN1+8]),
	S_NORMAL1 (RLSG, 'H',    5, NULL                 , &States[S_RAILGUN1+9]),
	S_NORMAL1 (RLSG, 'I',    7, NULL                 , &States[S_RAILGUN1+10]),
	S_NORMAL1 (RLSG, 'J',    3, NULL                 , &States[S_RAILGUN1+11]),
	S_NORMAL1 (RLSG, 'A',    3, NULL                 , &States[S_RAILGUN1+12]),
	S_NORMAL1 (RLSG, 'A',    0, A_ReFire             , &States[S_RAILGUN]),

#define S_RAIL (S_RAILGUN1+13)
	S_NORMAL1 (RAIL, 'A',   -1, NULL                 , NULL)
};

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

//========== Domination Point A (ZDaemon)

IMPLEMENT_ACTOR (ADomPointA, Any, 5135, 0)
	PROP_RadiusFixed (30)
	PROP_HeightFixed (60)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_Translation (TRANSLATION_DomPoints,0)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_CDOMA)
	PROP_SeeState (S_CDOMA)
	PROP_PainState (S_CDOMA)
END_DEFAULTS

FState ADomPointA::States[] =
{
#define S_CDOMA 0
	S_BRIGHT (DOMA, 'A',   4, NULL  , &States[S_CDOMA+1]),
	S_BRIGHT (DOMA, 'B',   4, NULL  , &States[S_CDOMA+2]),
	S_BRIGHT (DOMA, 'C',   4, NULL  , &States[S_CDOMA+3]),
	S_BRIGHT (DOMA, 'D',   4, NULL  , &States[S_CDOMA+4]),
	S_BRIGHT (DOMA, 'E',   4, NULL  , &States[S_CDOMA+5]),
	S_BRIGHT (DOMA, 'F',   4, NULL  , &States[S_CDOMA+6]),
	S_BRIGHT (DOMA, 'G',   4, NULL  , &States[S_CDOMA+7]),
	S_BRIGHT (DOMA, 'H',   4, NULL  , &States[S_CDOMA+8]),
	S_BRIGHT (DOMA, 'I',   4, NULL  , &States[S_CDOMA+9]),
	S_BRIGHT (DOMA, 'J',   4, NULL  , &States[S_CDOMA+10]),

	S_BRIGHT (DOMA, 'K',   4, NULL  , &States[S_CDOMA+11]),
	S_BRIGHT (DOMA, 'L',   4, NULL  , &States[S_CDOMA+12]),
	S_BRIGHT (DOMA, 'M',   4, NULL  , &States[S_CDOMA+13]),
	S_BRIGHT (DOMA, 'N',   4, NULL  , &States[S_CDOMA+14]),
	S_BRIGHT (DOMA, 'O',   4, NULL  , &States[S_CDOMA+15]),
	S_BRIGHT (DOMA, 'P',   4, NULL  , &States[S_CDOMA+16]),
	S_BRIGHT (DOMA, 'Q',   4, NULL  , &States[S_CDOMA+17]),
	S_BRIGHT (DOMA, 'R',   4, NULL  , &States[S_CDOMA+18]),
	S_BRIGHT (DOMA, 'S',   4, NULL  , &States[S_CDOMA+19]),
	S_BRIGHT (DOMA, 'T',   4, NULL  , &States[S_CDOMA+20]),

	S_BRIGHT (DOMA, 'U',   4, NULL  , &States[S_CDOMA+21]),
	S_BRIGHT (DOMA, 'V',   4, NULL  , &States[S_CDOMA+22]),
	S_BRIGHT (DOMA, 'W',   4, NULL  , &States[S_CDOMA+23]),
	S_BRIGHT (DOMA, 'X',   4, NULL  , &States[S_CDOMA])
};

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

//========== Domination Point B (ZDaemon)

IMPLEMENT_ACTOR (ADomPointB, Any, 5136, 0)
	PROP_RadiusFixed (30)
	PROP_HeightFixed (60)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_Translation (TRANSLATION_DomPoints,1)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_CDOMB)
	PROP_SeeState (S_CDOMB)
	PROP_PainState (S_CDOMB)
END_DEFAULTS

FState ADomPointB::States[] =
{
#define S_CDOMB 0
	S_BRIGHT (DOMB, 'A',   4, NULL  , &States[S_CDOMB+1]),
	S_BRIGHT (DOMB, 'B',   4, NULL  , &States[S_CDOMB+2]),
	S_BRIGHT (DOMB, 'C',   4, NULL  , &States[S_CDOMB+3]),
	S_BRIGHT (DOMB, 'D',   4, NULL  , &States[S_CDOMB+4]),
	S_BRIGHT (DOMB, 'E',   4, NULL  , &States[S_CDOMB+5]),
	S_BRIGHT (DOMB, 'F',   4, NULL  , &States[S_CDOMB+6]),
	S_BRIGHT (DOMB, 'G',   4, NULL  , &States[S_CDOMB+7]),
	S_BRIGHT (DOMB, 'H',   4, NULL  , &States[S_CDOMB+8]),
	S_BRIGHT (DOMB, 'I',   4, NULL  , &States[S_CDOMB+9]),
	S_BRIGHT (DOMB, 'J',   4, NULL  , &States[S_CDOMB+10]),

	S_BRIGHT (DOMB, 'K',   4, NULL  , &States[S_CDOMB+11]),
	S_BRIGHT (DOMB, 'L',   4, NULL  , &States[S_CDOMB+12]),
	S_BRIGHT (DOMB, 'M',   4, NULL  , &States[S_CDOMB+13]),
	S_BRIGHT (DOMB, 'N',   4, NULL  , &States[S_CDOMB+14]),
	S_BRIGHT (DOMB, 'O',   4, NULL  , &States[S_CDOMB+15]),
	S_BRIGHT (DOMB, 'P',   4, NULL  , &States[S_CDOMB+16]),
	S_BRIGHT (DOMB, 'Q',   4, NULL  , &States[S_CDOMB+17]),
	S_BRIGHT (DOMB, 'R',   4, NULL  , &States[S_CDOMB+18]),
	S_BRIGHT (DOMB, 'S',   4, NULL  , &States[S_CDOMB+19]),
	S_BRIGHT (DOMB, 'T',   4, NULL  , &States[S_CDOMB+20]),

	S_BRIGHT (DOMB, 'U',   4, NULL  , &States[S_CDOMB+21]),
	S_BRIGHT (DOMB, 'V',   4, NULL  , &States[S_CDOMB+22]),
	S_BRIGHT (DOMB, 'W',   4, NULL  , &States[S_CDOMB+23]),
	S_BRIGHT (DOMB, 'X',   4, NULL  , &States[S_CDOMB])
};

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

//========== Domination Point C (ZDaemon)

IMPLEMENT_ACTOR (ADomPointC, Any, 5137, 0)
	PROP_RadiusFixed (30)
	PROP_HeightFixed (60)
	PROP_Flags (MF_SPECIAL|MF_NOTDMATCH|MF_INTEAMMODES)
	PROP_Flags5 (MF5_HEIGHTTOUCH)
	PROP_Translation (TRANSLATION_DomPoints,2)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (TRANSLUC75)
	PROP_SpawnState (S_CDOMC)
	PROP_SeeState (S_CDOMC)
	PROP_PainState (S_CDOMC)
END_DEFAULTS

FState ADomPointC::States[] =
{
#define S_CDOMC 0
	S_BRIGHT (DOMC, 'A',   4, NULL  , &States[S_CDOMC+1]),
	S_BRIGHT (DOMC, 'B',   4, NULL  , &States[S_CDOMC+2]),
	S_BRIGHT (DOMC, 'C',   4, NULL  , &States[S_CDOMC+3]),
	S_BRIGHT (DOMC, 'D',   4, NULL  , &States[S_CDOMC+4]),
	S_BRIGHT (DOMC, 'E',   4, NULL  , &States[S_CDOMC+5]),
	S_BRIGHT (DOMC, 'F',   4, NULL  , &States[S_CDOMC+6]),
	S_BRIGHT (DOMC, 'G',   4, NULL  , &States[S_CDOMC+7]),
	S_BRIGHT (DOMC, 'H',   4, NULL  , &States[S_CDOMC+8]),
	S_BRIGHT (DOMC, 'I',   4, NULL  , &States[S_CDOMC+9]),
	S_BRIGHT (DOMC, 'J',   4, NULL  , &States[S_CDOMC+10]),

	S_BRIGHT (DOMC, 'K',   4, NULL  , &States[S_CDOMC+11]),
	S_BRIGHT (DOMC, 'L',   4, NULL  , &States[S_CDOMC+12]),
	S_BRIGHT (DOMC, 'M',   4, NULL  , &States[S_CDOMC+13]),
	S_BRIGHT (DOMC, 'N',   4, NULL  , &States[S_CDOMC+14]),
	S_BRIGHT (DOMC, 'O',   4, NULL  , &States[S_CDOMC+15]),
	S_BRIGHT (DOMC, 'P',   4, NULL  , &States[S_CDOMC+16]),
	S_BRIGHT (DOMC, 'Q',   4, NULL  , &States[S_CDOMC+17]),
	S_BRIGHT (DOMC, 'R',   4, NULL  , &States[S_CDOMC+18]),
	S_BRIGHT (DOMC, 'S',   4, NULL  , &States[S_CDOMC+19]),
	S_BRIGHT (DOMC, 'T',   4, NULL  , &States[S_CDOMC+20]),

	S_BRIGHT (DOMC, 'U',   4, NULL  , &States[S_CDOMC+21]),
	S_BRIGHT (DOMC, 'V',   4, NULL  , &States[S_CDOMC+22]),
	S_BRIGHT (DOMC, 'W',   4, NULL  , &States[S_CDOMC+23]),
	S_BRIGHT (DOMC, 'X',   4, NULL  , &States[S_CDOMC])
};

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

IMPLEMENT_STATELESS_ACTOR (ASpark, Any, 9026, 0)
	PROP_Flags (MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (APointPusher, Any, 5001, 0)
	PROP_Flags (MF_NOBLOCKMAP)
	PROP_RenderFlags (RF_INVISIBLE)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (APointPuller, Any, 5002, 0)
	PROP_Flags (MF_NOBLOCKMAP)
	PROP_RenderFlags (RF_INVISIBLE)
END_DEFAULTS

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

//========== Teleport Fog

IMPLEMENT_ACTOR (ATeleportFog, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_Add)
END_DEFAULTS

FState ATeleportFog::States[] =
{
#define S_DTFOG 0
	S_BRIGHT (TFOG, 'A',    6, NULL, &States[S_DTFOG+1]),
	S_BRIGHT (TFOG, 'B',    6, NULL, &States[S_DTFOG+2]),
	S_BRIGHT (TFOG, 'A',    6, NULL, &States[S_DTFOG+3]),
	S_BRIGHT (TFOG, 'B',    6, NULL, &States[S_DTFOG+4]),
	S_BRIGHT (TFOG, 'C',    6, NULL, &States[S_DTFOG+5]),
	S_BRIGHT (TFOG, 'D',    6, NULL, &States[S_DTFOG+6]),
	S_BRIGHT (TFOG, 'E',    6, NULL, &States[S_DTFOG+7]),
	S_BRIGHT (TFOG, 'F',    6, NULL, &States[S_DTFOG+8]),
	S_BRIGHT (TFOG, 'G',    6, NULL, &States[S_DTFOG+9]),
	S_BRIGHT (TFOG, 'H',    6, NULL, &States[S_DTFOG+10]),
	S_BRIGHT (TFOG, 'I',    6, NULL, &States[S_DTFOG+11]),
	S_BRIGHT (TFOG, 'J',    6, NULL, NULL),

#define S_HTFOG (S_DTFOG+12)
	S_BRIGHT (TELE, 'A',    6, NULL, &States[S_HTFOG+1]),
	S_BRIGHT (TELE, 'B',    6, NULL, &States[S_HTFOG+2]),
	S_BRIGHT (TELE, 'C',    6, NULL, &States[S_HTFOG+3]),
	S_BRIGHT (TELE, 'D',    6, NULL, &States[S_HTFOG+4]),
	S_BRIGHT (TELE, 'E',    6, NULL, &States[S_HTFOG+5]),
	S_BRIGHT (TELE, 'F',    6, NULL, &States[S_HTFOG+6]),
	S_BRIGHT (TELE, 'G',    6, NULL, &States[S_HTFOG+7]),
	S_BRIGHT (TELE, 'H',    6, NULL, &States[S_HTFOG+8]),
	S_BRIGHT (TELE, 'G',    6, NULL, &States[S_HTFOG+9]),
	S_BRIGHT (TELE, 'F',    6, NULL, &States[S_HTFOG+10]),
	S_BRIGHT (TELE, 'E',    6, NULL, &States[S_HTFOG+11]),
	S_BRIGHT (TELE, 'D',    6, NULL, &States[S_HTFOG+12]),
	S_BRIGHT (TELE, 'C',    6, NULL, NULL),
};

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

//========== Teleport destination

IMPLEMENT_STATELESS_ACTOR (ATeleportDest, Any, 14, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
END_DEFAULTS

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

//========== Teleport dest that can spawn above floor

IMPLEMENT_STATELESS_ACTOR (ATeleportDest2, Any, 9044, 0)
	PROP_FlagsSet (MF_NOGRAVITY)
END_DEFAULTS

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

//========== Z-preserving dest subject to gravity (for TeleportGroup, etc.)

IMPLEMENT_STATELESS_ACTOR (ATeleportDest3, Any, 9043, 0)
	PROP_FlagsClear (MF_NOGRAVITY)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AAmbientSound, Any, 14065, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
END_DEFAULTS

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

IMPLEMENT_ACTOR (AIceChunk, Any, -1, 0)
	PROP_RadiusFixed(3)
	PROP_HeightFixed(4)
	PROP_Flags(MF_DROPOFF)
	PROP_Flags2(MF2_LOGRAV|MF2_CANNOTPUSH|MF2_FLOORCLIP)
	PROP_SpawnState(0)
END_DEFAULTS

FState AIceChunk::States[] =
{
	S_NORMAL1 (ICEC, 'A',   10, NULL        , &States[1]),
	S_NORMAL1 (ICEC, 'B',   10, A_IceSetTics, &States[2]),
	S_NORMAL1 (ICEC, 'C',   10, A_IceSetTics, &States[3]),
	S_NORMAL1 (ICEC, 'D',   10, A_IceSetTics, NULL),
};

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

//========== A chunk of ice that is also a player

IMPLEMENT_ACTOR (AIceChunkHead, Any, -1, 0)
	PROP_RadiusFixed (3)
	PROP_HeightFixed (4)
	PROP_DamageType (MOD_ICE)
	PROP_Flags (MF_DROPOFF)
	PROP_Flags2 (MF2_LOGRAV|MF2_CANNOTPUSH)
	PROP_SpawnState (0)
END_DEFAULTS

FState AIceChunkHead::States[] =
{
	S_NORMAL1 (PLAY, 'A',	 0, NULL              , &States[1]),
	S_NORMAL1 (ICEC, 'A',   10, A_IceCheckHeadDone, &States[1])
};

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

//========== Bridge ball

IMPLEMENT_ACTOR (ABridgeBall, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_Flags2 (MF2_NOTELEPORT)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABridgeBall::States[] =
{
	S_NORMAL1 (TLGL, 'A',    2, NULL         , &States[1]),
	S_NORMAL1 (TLGL, 'A',    5, A_BridgeOrbit, &States[1])
};

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

//========== The bridge itself

IMPLEMENT_ACTOR (ABridge, Any, 118, 21)
	PROP_Flags (MF_SOLID|MF_NOGRAVITY)
END_DEFAULTS

FState ABridge::States[] =
{
#define S_DBRIDGE 0
	S_BRIGHT (TLGL, 'A',    4, NULL                         , &States[S_DBRIDGE+1]),
	S_BRIGHT (TLGL, 'B',    4, NULL                         , &States[S_DBRIDGE+2]),
	S_BRIGHT (TLGL, 'C',    4, NULL                         , &States[S_DBRIDGE+3]),
	S_BRIGHT (TLGL, 'D',    4, NULL                         , &States[S_DBRIDGE+4]),
	S_BRIGHT (TLGL, 'E',    4, NULL                         , &States[S_DBRIDGE+0]),

#define S_BRIDGE (S_DBRIDGE+5)
	S_NORMAL1 (TLGL, 'A',    2, NULL                         , &States[S_BRIDGE+1]),
	S_NORMAL1 (TLGL, 'A',    2, A_BridgeInit                 , &States[S_BRIDGE+2]),
	S_NORMAL1 (TLGL, 'A',   -1, NULL                         , NULL),

#define S_FREE_BRIDGE (S_BRIDGE+3)
	S_NORMAL1 (TLGL, 'A',    2, NULL                         , &States[S_FREE_BRIDGE+1]),
	S_NORMAL1 (TLGL, 'A',  300, NULL                         , NULL)
};

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

//========== Invisible bridge

IMPLEMENT_ACTOR (AInvisibleBridge, Any, 9990, 0)
	PROP_RenderStyle (STYLE_None)
	PROP_SpawnState (0)
	PROP_RadiusFixed (32)
	PROP_HeightFixed (4)
	PROP_Flags4 (MF4_ACTLIKEBRIDGE)
END_DEFAULTS

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

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

//========== And some invisible bridges from Skull Tag

IMPLEMENT_STATELESS_ACTOR (AInvisibleBridge32, Any, 5061, 0)
	PROP_RadiusFixed (32)
	PROP_HeightFixed (8)
END_DEFAULTS

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

//========== And some invisible bridges from Skull Tag

IMPLEMENT_STATELESS_ACTOR (AInvisibleBridge16, Any, 5064, 0)
	PROP_RadiusFixed (16)
	PROP_HeightFixed (8)
END_DEFAULTS

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

//========== And some invisible bridges from Skull Tag

IMPLEMENT_STATELESS_ACTOR (AInvisibleBridge8, Any, 5065, 0)
	PROP_RadiusFixed (8)
	PROP_HeightFixed (8)
END_DEFAULTS

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

//========== Holds a special to execute when a PathFollower reaches an InterpolationPoint of the same TID.

IMPLEMENT_STATELESS_ACTOR (AInterpolationSpecial, Any, 9075, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR)
END_DEFAULTS

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

//========== Moves any actor along a camera path

IMPLEMENT_STATELESS_ACTOR (AActorMover, Any, 9074, 0)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ASecretTrigger, Any, 9046, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ASkyPicker, Any, 9081, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ASectorSilencer, Any, 9082, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_None)
END_DEFAULTS

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

//========== Actor that makes a particle spark when activated

IMPLEMENT_STATELESS_ACTOR (ASpark, Any, 9026, 0)
	PROP_Flags (MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY)
END_DEFAULTS

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

//========== Actor that makes BOOM deep water swimmable

IMPLEMENT_STATELESS_ACTOR (AWaterZone, Any, 9045, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
END_DEFAULTS

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

IMPLEMENT_ACTOR (AWaterSplash, Any, -1, 0)
	PROP_RadiusFixed (2)
	PROP_HeightFixed (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
	PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (S_SPLASH)
	PROP_DeathState (S_SPLASHX)
END_DEFAULTS

FState AWaterSplash::States[] =
{
#define S_SPLASH 0
	S_NORMAL1 (SPSH, 'A',    8, NULL, &States[1]),
	S_NORMAL1 (SPSH, 'B',    8, NULL, &States[2]),
	S_NORMAL1 (SPSH, 'C',    8, NULL, &States[3]),
	S_NORMAL1 (SPSH, 'D',   16, NULL, NULL),

#define S_SPLASHX (S_SPLASH+4)
	S_NORMAL1 (SPSH, 'D',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR (AWaterSplashBase, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
END_DEFAULTS

FState AWaterSplashBase::States[] =
{
	S_NORMAL1 (SPSH, 'E',    5, NULL, &States[1]),
	S_NORMAL1 (SPSH, 'F',    5, NULL, &States[2]),
	S_NORMAL1 (SPSH, 'G',    5, NULL, &States[3]),
	S_NORMAL1 (SPSH, 'H',    5, NULL, &States[4]),
	S_NORMAL1 (SPSH, 'I',    5, NULL, &States[5]),
	S_NORMAL1 (SPSH, 'J',    5, NULL, &States[6]),
	S_NORMAL1 (SPSH, 'K',    5, NULL, NULL)
};

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

IMPLEMENT_ACTOR (ALavaSplash, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
END_DEFAULTS

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

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

IMPLEMENT_ACTOR (ALavaSmoke, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP)
	PROP_RenderStyle (STYLE_Translucent)
	PROP_Alpha (gameinfo.gametype==GAME_Heretic?HR_SHADOW:HX_SHADOW)
	PROP_SpawnState (0)
END_DEFAULTS

FState ALavaSmoke::States[] =
{
	S_BRIGHT (LVAS, 'G',    5, NULL, &States[1]),
	S_BRIGHT (LVAS, 'H',    5, NULL, &States[2]),
	S_BRIGHT (LVAS, 'I',    5, NULL, &States[3]),
	S_BRIGHT (LVAS, 'J',    5, NULL, &States[4]),
	S_BRIGHT (LVAS, 'K',    5, NULL, NULL)
};

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

IMPLEMENT_ACTOR (ASludgeChunk, Any, -1, 0)
	PROP_RadiusFixed (2)
	PROP_HeightFixed (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
	PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (S_SLUDGECHUNK)
	PROP_DeathState (S_SLUDGECHUNKX)
END_DEFAULTS

FState ASludgeChunk::States[] =
{
#define S_SLUDGECHUNK 0
	S_NORMAL1 (SLDG, 'A',    8, NULL, &States[1]),
	S_NORMAL1 (SLDG, 'B',    8, NULL, &States[2]),
	S_NORMAL1 (SLDG, 'C',    8, NULL, &States[3]),
	S_NORMAL1 (SLDG, 'D',    8, NULL, NULL),

#define S_SLUDGECHUNKX (S_SLUDGECHUNK+4)
	S_NORMAL1 (SLDG, 'D',    6, NULL, NULL)
};

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

IMPLEMENT_ACTOR (ASludgeSplash, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
END_DEFAULTS

FState ASludgeSplash::States[] =
{
	S_NORMAL1 (SLDG, 'E',    6, NULL, &States[1]),
	S_NORMAL1 (SLDG, 'F',    6, NULL, &States[2]),
	S_NORMAL1 (SLDG, 'G',    6, NULL, &States[3]),
	S_NORMAL1 (SLDG, 'H',    6, NULL, NULL)
};

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

//========== Blood (water with a different sprite)

IMPLEMENT_ACTOR (ABloodSplash, Any, -1, 0)
	PROP_RadiusFixed (2)
	PROP_HeightFixed (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
	PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
	PROP_DeathState (4)
END_DEFAULTS

FState ABloodSplash::States[] =
{
	S_NORMAL1 (BSPH, 'A',    8, NULL, &States[1]),
	S_NORMAL1 (BSPH, 'B',    8, NULL, &States[2]),
	S_NORMAL1 (BSPH, 'C',    8, NULL, &States[3]),
	S_NORMAL1 (BSPH, 'D',   16, NULL, NULL),

	S_NORMAL1 (BSPH, 'D',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR (ABloodSplashBase, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
END_DEFAULTS

FState ABloodSplashBase::States[] =
{
	S_NORMAL1 (BSPH, 'E',    5, NULL, &States[1]),
	S_NORMAL1 (BSPH, 'F',    5, NULL, &States[2]),
	S_NORMAL1 (BSPH, 'G',    5, NULL, &States[3]),
	S_NORMAL1 (BSPH, 'H',    5, NULL, &States[4]),
	S_NORMAL1 (BSPH, 'I',    5, NULL, &States[5]),
	S_NORMAL1 (BSPH, 'J',    5, NULL, &States[6]),
	S_NORMAL1 (BSPH, 'K',    5, NULL, NULL)
};

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

//========== Slime (sludge with a different sprite)

IMPLEMENT_ACTOR (ASlimeChunk, Any, -1, 0)
	PROP_RadiusFixed (2)
	PROP_HeightFixed (4)
	PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
	PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
	PROP_DeathState (4)
END_DEFAULTS

FState ASlimeChunk::States[] =
{
	S_NORMAL1 (SLIM, 'A',    8, NULL, &States[1]),
	S_NORMAL1 (SLIM, 'B',    8, NULL, &States[2]),
	S_NORMAL1 (SLIM, 'C',    8, NULL, &States[3]),
	S_NORMAL1 (SLIM, 'D',    8, NULL, NULL),

	S_NORMAL1 (SLIM, 'D',    6, NULL, NULL)
};

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

IMPLEMENT_ACTOR (ASlimeSplash, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
	PROP_Flags3 (MF3_DONTSPLASH)
	PROP_SpawnState (0)
END_DEFAULTS

FState ASlimeSplash::States[] =
{
	S_NORMAL1 (SLIM, 'E',    6, NULL, &States[1]),
	S_NORMAL1 (SLIM, 'F',    6, NULL, &States[2]),
	S_NORMAL1 (SLIM, 'G',    6, NULL, &States[3]),
	S_NORMAL1 (SLIM, 'H',    6, NULL, NULL)
};

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

//========== The base class for sector actions

IMPLEMENT_STATELESS_ACTOR (ASectorAction, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
END_DEFAULTS

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

//========== Triggered when entering sector

IMPLEMENT_STATELESS_ACTOR (ASecActEnter, Any, 9998, 0)
END_DEFAULTS

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

//========== Triggered when leaving sector

IMPLEMENT_STATELESS_ACTOR (ASecActExit, Any, 9997, 0)
END_DEFAULTS

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

//========== Triggered when hitting sector's floor

IMPLEMENT_STATELESS_ACTOR (ASecActHitFloor, Any, 9999, 0)
END_DEFAULTS

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

//========== Triggered when hitting sector's ceiling

IMPLEMENT_STATELESS_ACTOR (ASecActHitCeil, Any, 9996, 0)
END_DEFAULTS

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

//========== Triggered when using inside sector

IMPLEMENT_STATELESS_ACTOR (ASecActUse, Any, 9995, 0)
END_DEFAULTS

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

//========== Triggered when using a sector's wall

IMPLEMENT_STATELESS_ACTOR (ASecActUseWall, Any, 9994, 0)
END_DEFAULTS

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

//========== Triggered when eyes go below fake floor

IMPLEMENT_STATELESS_ACTOR (ASecActEyesDive, Any, 9993, 0)
END_DEFAULTS

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

//========== Triggered when eyes go above fake floor

IMPLEMENT_STATELESS_ACTOR (ASecActEyesSurface, Any, 9992, 0)
END_DEFAULTS

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

//========== Triggered when eyes go below fake floor

IMPLEMENT_STATELESS_ACTOR (ASecActEyesBelowC, Any, 9983, 0)
END_DEFAULTS

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

//========== Triggered when eyes go above fake floor

IMPLEMENT_STATELESS_ACTOR (ASecActEyesAboveC, Any, 9982, 0)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AParticleFountain, Any, -1, 0)
	PROP_HeightFixed (0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderFlags (RF_INVISIBLE)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ARedParticleFountain, Any, 9027, 0)
	PROP_SpawnHealth (1)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AGreenParticleFountain, Any, 9028, 0)
	PROP_SpawnHealth (2)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ABlueParticleFountain, Any, 9029, 0)
	PROP_SpawnHealth (3)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AYellowParticleFountain, Any, 9030, 0)
	PROP_SpawnHealth (4)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (APurpleParticleFountain, Any, 9031, 0)
	PROP_SpawnHealth (5)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ABlackParticleFountain, Any, 9032, 0)
	PROP_SpawnHealth (6)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AWhiteParticleFountain, Any, 9033, 0)
	PROP_SpawnHealth (7)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ASecurityCamera, Any, 9025, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_None)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AAimingCamera, Any, 9073, 0)
END_DEFAULTS

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

//========== Default actor for unregistered doomednums

IMPLEMENT_ACTOR (AUnknown, Any, -1, 0)
	PROP_RadiusFixed (32)
	PROP_HeightFixed (56)
	PROP_Flags (MF_NOGRAVITY|MF_NOBLOCKMAP)
	PROP_SpawnState (0)
END_DEFAULTS

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

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

//========== Route node for monster patrols

IMPLEMENT_STATELESS_ACTOR (APatrolPoint, Any, 9024, 0)
	PROP_RadiusFixed (8)
	PROP_HeightFixed (8)
	PROP_Mass (10)
	PROP_Flags (MF_NOBLOCKMAP)
	PROP_RenderStyle (STYLE_None)
END_DEFAULTS

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

// A special to execute when a monster reaches a matching patrol point

IMPLEMENT_STATELESS_ACTOR (APatrolSpecial, Any, 9047, 0)
	PROP_RadiusFixed (8)
	PROP_HeightFixed (8)
	PROP_Mass (10)
	PROP_Flags (MF_NOBLOCKMAP)
	PROP_RenderStyle (STYLE_None)
END_DEFAULTS

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

//========== Blood sprite - adjusts itself for each game

IMPLEMENT_ACTOR (ABlood, Any, -1, 130)
	PROP_Flags (MF_NOBLOCKMAP)
	PROP_Mass (5)
END_DEFAULTS

FState ABlood::States[] =
{
#define S_DBLOOD 0
	S_NORMAL1 (BLUD, 'C',    8, NULL                         , &States[S_DBLOOD+1]),
	S_NORMAL1 (BLUD, 'B',    8, NULL                         , &States[S_DBLOOD+2]),
	S_NORMAL1 (BLUD, 'A',    8, NULL                         , NULL),

#define S_HBLOOD (S_DBLOOD+3)
	S_NORMAL1 (BLOD, 'C',    8, NULL                         , &States[S_HBLOOD+1]),
	S_NORMAL1 (BLOD, 'B',    8, NULL                         , &States[S_HBLOOD+2]),
	S_NORMAL1 (BLOD, 'A',    8, NULL                         , NULL)
};

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

//========== Map spot

IMPLEMENT_STATELESS_ACTOR (AMapSpot, Any, 9001, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
	PROP_RenderStyle (STYLE_None)
END_DEFAULTS

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

//========== Map spot with gravity

IMPLEMENT_STATELESS_ACTOR (AMapSpotGravity, Any, 9013, 0)
	PROP_Flags (0)
END_DEFAULTS

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

//========== Bloody gibs

IMPLEMENT_ACTOR (ARealGibs, Any, -1, 0)
	PROP_Flags (MF_DROPOFF|MF_CORPSE)
	PROP_Flags2 (MF2_NOTELEPORT)
	PROP_Flags3 (MF3_DONTGIB)
END_DEFAULTS

FState ARealGibs::States[] =
{
	S_NORMAL1 (POL5, 'A', -1, NULL, NULL),
	S_NORMAL1 (GIBS, 'A', -1, NULL, NULL),
};

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

//========== Gibs that can be placed on a map

IMPLEMENT_STATELESS_ACTOR (AGibs, Doom, 24, 146)
END_DEFAULTS

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

IMPLEMENT_ACTOR (AWeapon, Any, -1, 0)
	PROP_PickupSound ("misc/w_pkup")
END_DEFAULTS

FState AWeapon::States[] =
{
	S_NORMAL1 (SHTG, 'E',    0, A_Light0             , NULL)
};

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

IMPLEMENT_STATELESS_ACTOR (AHealth, Any, -1, 0)
	PROP_PickupSound ("misc/health_pkup")
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AArmor, Any, -1, 0)
	PROP_PickupSound ("misc/armor_pkup")
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AAmmo, Any, -1, 0)
	PROP_PickupSound ("misc/ammo_pkup")
END_DEFAULTS

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

IMPLEMENT_ACTOR (AInventory, Any, -1, 0)
	PROP_PickupSound ("misc/i_pkup")
END_DEFAULTS

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

IMPLEMENT_ACTOR (AArtifact, Any, -1, 0)
	PROP_PickupSound ("misc/p_pkup")
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AKey, Any, -1, 0)
	PROP_PickupSound ("misc/k_pkup")
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AHexenArmor, Any, -1, 0)
END_DEFAULTS

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

//========== Player Speed Trail (used by the Speed Powerup)

IMPLEMENT_STATELESS_ACTOR (APlayerSpeedTrail, Any, -1, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
	PROP_Alpha (FRACUNIT*6/10)
	PROP_RenderStyle (STYLE_Translucent)
END_DEFAULTS

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

//========== Invulnerability Powerup

IMPLEMENT_STATELESS_ACTOR (APowerInvulnerable, Any, -1, 0)
END_DEFAULTS

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

//========== Strength (aka Berserk) Powerup

IMPLEMENT_STATELESS_ACTOR (APowerStrength, Any, -1, 0)
END_DEFAULTS

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

//========== Invisibility Powerup

IMPLEMENT_STATELESS_ACTOR (APowerInvisibility, Any, -1, 0)
END_DEFAULTS

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

//========== Ghost Powerup (Heretic's version of invisibility)

IMPLEMENT_STATELESS_ACTOR (APowerGhost, Any, -1, 0)
END_DEFAULTS

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

//========== Shadow Powerup (Strife's version of invisibility)

IMPLEMENT_STATELESS_ACTOR (APowerShadow, Any, -1, 0)
END_DEFAULTS

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

//========== Ironfeet Powerup

IMPLEMENT_STATELESS_ACTOR (APowerIronFeet, Any, -1, 0)
END_DEFAULTS

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

//========== Strife Environment Suit Powerup

IMPLEMENT_STATELESS_ACTOR (APowerMask, Any, -1, 0)
END_DEFAULTS

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

//========== Light-Amp Powerup

IMPLEMENT_STATELESS_ACTOR (APowerLightAmp, Any, -1, 0)
END_DEFAULTS

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

//========== Torch Powerup

IMPLEMENT_STATELESS_ACTOR (APowerTorch, Any, -1, 0)
END_DEFAULTS

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

//========== Flight (aka Wings of Wrath) powerup

IMPLEMENT_STATELESS_ACTOR (APowerFlight, Any, -1, 0)
END_DEFAULTS

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

//========== Weapon Level 2 (aka Tome of Power) Powerup

IMPLEMENT_STATELESS_ACTOR (APowerWeaponLevel2, Any, -1, 0)
END_DEFAULTS

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

//========== Speed Powerup

IMPLEMENT_STATELESS_ACTOR (APowerSpeed, Any, -1, 0)
END_DEFAULTS

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

//========== Minotaur (aka Dark Servant) powerup

IMPLEMENT_STATELESS_ACTOR (APowerMinotaur, Any, -1, 0)
END_DEFAULTS

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

//========== Targeter powerup

IMPLEMENT_ACTOR (APowerTargeter, Any, -1, 0)
END_DEFAULTS

FState APowerTargeter::States[] =
{
	S_NORMAL1 (TRGT, 'A', -1, NULL, NULL),
	S_NORMAL1 (TRGT, 'B', -1, NULL, NULL),
	S_NORMAL1 (TRGT, 'C', -1, NULL, NULL)
};

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

//========== Scanner powerup

IMPLEMENT_STATELESS_ACTOR (APowerScanner, Any, -1, 0)
END_DEFAULTS

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

//========== Powerup-Giver

IMPLEMENT_STATELESS_ACTOR (APowerupGiver, Any, -1, 0)
	PROP_PickupSound("misc/p_pkup")
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (ADecal, Any, 9200, 0)
	PROP_Flags (MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY)
END_DEFAULTS

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

IMPLEMENT_STATELESS_ACTOR (AImpactDecal, Any, -1, 0)
END_DEFAULTS

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

IMPLEMENT_ACTOR(ARock1, Any, -1, 41)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ARock1::States[2] =
{
	S_NORMAL1 (ROCK, 'A',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'A',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ARock2, Any, -1, 42)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ARock2::States[2] =
{
	S_NORMAL1 (ROCK, 'B',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'B',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ARock3, Any, -1, 43)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ARock3::States[2] =
{
	S_NORMAL1 (ROCK, 'C',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'C',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt1, Any, -1, 44)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt1::States[2] =
{
	S_NORMAL1 (ROCK, 'D',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'D',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt2, Any, -1, 45)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt2::States[2] =
{
	S_NORMAL1 (ROCK, 'E',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'E',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt3, Any, -1, 46)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt3::States[2] =
{
	S_NORMAL1 (ROCK, 'F',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'F',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt4, Any, -1, 47)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt4::States[2] =
{
	S_NORMAL1 (ROCK, 'G',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'G',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt5, Any, -1, 48)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt5::States[2] =
{
	S_NORMAL1 (ROCK, 'H',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'H',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ADirt6, Any, -1, 49)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
	PROP_Flags2(MF2_NOTELEPORT)
END_DEFAULTS

FState ADirt6::States[2] =
{
	S_NORMAL1 (ROCK, 'I',   20, NULL, &States[0]),
	S_NORMAL1 (ROCK, 'I',   10, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard1, Any, -1, 54)
	PROP_DeathState(5)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard1::States[6] =
{
	S_NORMAL1 (SGSA, 'A',	4, NULL, &States[1]),
	S_NORMAL1 (SGSA, 'B',	4, NULL, &States[2]),
	S_NORMAL1 (SGSA, 'C',	4, NULL, &States[3]),
	S_NORMAL1 (SGSA, 'D',	4, NULL, &States[4]),
	S_NORMAL1 (SGSA, 'E',	4, NULL, &States[0]),

	S_NORMAL1 (SGSA, 'E',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard2, Any, -1, 55)
	PROP_DeathState(5)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard2::States[6] =
{
	S_NORMAL1 (SGSA, 'F',	4, NULL, &States[1]),
	S_NORMAL1 (SGSA, 'G',	4, NULL, &States[2]),
	S_NORMAL1 (SGSA, 'H',	4, NULL, &States[3]),
	S_NORMAL1 (SGSA, 'I',	4, NULL, &States[4]),
	S_NORMAL1 (SGSA, 'J',	4, NULL, &States[0]),

	S_NORMAL1 (SGSA, 'J',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard3, Any, -1, 56)
	PROP_DeathState(5)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard3::States[6] =
{
	S_NORMAL1 (SGSA, 'K',	4, NULL, &States[1]),
	S_NORMAL1 (SGSA, 'L',	4, NULL, &States[2]),
	S_NORMAL1 (SGSA, 'M',	4, NULL, &States[3]),
	S_NORMAL1 (SGSA, 'N',	4, NULL, &States[4]),
	S_NORMAL1 (SGSA, 'O',	4, NULL, &States[0]),

	S_NORMAL1 (SGSA, 'O',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard4, Any, -1, 57)
	PROP_DeathState(5)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard4::States[6] =
{
	S_NORMAL1 (SGSA, 'P',	4, NULL, &States[1]),
	S_NORMAL1 (SGSA, 'Q',	4, NULL, &States[2]),
	S_NORMAL1 (SGSA, 'R',	4, NULL, &States[3]),
	S_NORMAL1 (SGSA, 'S',	4, NULL, &States[4]),
	S_NORMAL1 (SGSA, 'T',	4, NULL, &States[0]),

	S_NORMAL1 (SGSA, 'T',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard5, Any, -1, 58)
	PROP_DeathState(5)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard5::States[6] =
{
	S_NORMAL1 (SGSA, 'U',	4, NULL, &States[1]),
	S_NORMAL1 (SGSA, 'V',	4, NULL, &States[2]),
	S_NORMAL1 (SGSA, 'W',	4, NULL, &States[3]),
	S_NORMAL1 (SGSA, 'X',	4, NULL, &States[4]),
	S_NORMAL1 (SGSA, 'Y',	4, NULL, &States[0]),

	S_NORMAL1 (SGSA, 'Y',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard6, Any, -1, 59)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard6::States[2] =
{
	S_NORMAL1 (SGSB, 'A',	4, NULL, &States[0]),
	S_NORMAL1 (SGSB, 'A',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard7, Any, -1, 60)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard7::States[2] =
{
	S_NORMAL1 (SGSB, 'B',	4, NULL, &States[0]),
	S_NORMAL1 (SGSB, 'B',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard8, Any, -1, 61)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard8::States[2] =
{
	S_NORMAL1 (SGSB, 'C',	4, NULL, &States[0]),
	S_NORMAL1 (SGSB, 'C',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard9, Any, -1, 62)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard9::States[2] =
{
	S_NORMAL1 (SGSB, 'D',	4, NULL, &States[0]),
	S_NORMAL1 (SGSB, 'D',  30, NULL, NULL)
};

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

IMPLEMENT_ACTOR(ASGShard0, Any, -1, 63)
	PROP_DeathState(1)
	PROP_SpawnState(0)
	PROP_RadiusFixed(5)
	PROP_Flags(MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY)
	PROP_Flags2(MF2_NOTELEPORT|MF2_HEXENBOUNCE)
END_DEFAULTS

FState ASGShard0::States[2] =
{
	S_NORMAL1 (SGSB, 'E',	4, NULL, &States[0]),
	S_NORMAL1 (SGSB, 'E',  30, NULL, NULL)
};

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