
//Shadow
ACTOR Shadow //3126
{
	//$Category Monsters
	Game Doom
	Health 80
	Radius 20
	Height 56
	Mass 100
	RenderStyle "Translucent"
	Alpha 0.7
	Speed 8
	PainChance 200
	Monster
	+FLOORCLIP
	PainSound "Shadow/pain"
	DeathSound "Shadow/death"
	ActiveSound "Shadow/active"
	Obituary "%o was assassinated by a shadow."
	MissileType ShadowBall
	States
	{
	Spawn:
	Idle:
	See:
		SHDW E 15
		SHDW AAA 1 A_Chase
		SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW BBB 1 A_Chase
		SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW CCC 1 A_Chase
		SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW DDD 1 A_Chase
		SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW AAA 1 A_Chase
		SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW BBB 1 A_Chase
		SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW CCC 1 A_Chase
		SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW DDD 1 A_Chase
		SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0, 0, 0, 0, 0, 0, 0, 128)
		Goto See+1
	Missile:
		SHDW EEEEEEEEEEEEEEE 2 A_FaceTarget
		SHDW F 5 A_FaceTarget
		SHDW G 5 BRIGHT A_MissileAttack
		SHDW F 5 A_FaceTarget
		SHDW EEEEEEEEEE 2 A_FaceTarget
		SHDW E 1 A_SpidRefire
		Goto Missile+15     
	Pain:
		SHDW H 4
		SHDW H 4 A_Pain
		Goto See+1
	Death:
		SHDW I 6 A_Scream
		SHDW J 5
		SHDW K 5 A_SpawnItemEx("Shadowtorso", 0, 0, 0, 1, 0, 0, 0, 128)
		SHDW L 5 A_Fall
		SHDW MNO 6 
		SHDW P -1
		Stop
	XDeath:
		SHDX A 8
		SHDX B 6 A_XScream
		SHDX C 6 
		SHDX D 6 A_Fall
 		SHDX E 6
 		SHDX F 6
		SHDX G -1
		Stop
	Raise:
		SHDW M 8
		SHDW KLJI 8
		Goto See
	}
}

ACTOR ShadowBall
{
	Radius 6
	Height 8
	Speed 12
	Damage 4
	Projectile
	+RANDOMIZE
	RenderStyle "ADD"
	Alpha 0.75
	SeeSound "Shadow/attack"
	DeathSound "imp/shotx"
	Decal DoomImpScorch
	States
	{
	Spawn: 
		SBAL ABC 4 BRIGHT A_SpawnItemEx("ShadowTrail", 0, 0, 0, 0, 0, 0, 0, 128)
		Loop
	Death:
		SBAL C 5 Bright
		SBAL DEFGH 4 BRIGHT
		Stop
	}
}

ACTOR ShadowGhostA
{
	Radius 4
	Height 8
	Speed 0
	Damage 0
	Mass 75
	RenderStyle "Translucent"
	Alpha 0.3
	PROJECTILE
	States
	{
	Spawn:
		SHDW A 10
		Stop
	}
}

ACTOR ShadowGhostB : ShadowGhostA
{
	States
	{
	Spawn:
		SHDW B 10
		Stop
	}
}

ACTOR ShadowGhostC : ShadowGhostA
{
	States
	{
	Spawn:
		SHDW C 10
		Stop
	}
}

ACTOR ShadowGhostD : ShadowGhostA
{
	States
	{
	Spawn:
		SHDW D 10
		Stop
	}
}

ACTOR Shadowtorso
{
	Radius 12
	Height 15
	Speed 1
	Mass 5000
	RenderStyle "Translucent"
	alpha 0.7
	+Doombounce
      States
	{
	Spawn:
         SHDW QRS 5
         SHDW T 5 A_Fall
         SHDW U 5
         SHDW V -1
         Stop
	}
}

actor ShadowTrail
{
    Radius 1
    Height 1
    Speed 0
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.6
    +NOCLIP
    States
    {
    Spawn:
     SHTR ABCDEF 4 Bright
        Stop       
    }
}


//Shadow
ACTOR DoomZShadow : Shadow
{
    Health 160
	Speed 10
	States
	{
  Spawn:
	TNT1 A 0 //dummy frame
	TNT1 A 35 //Let the monster drop to the ground since we spawn
			  //them way above ground level so they don't get stuck
			  //in the floor.
	TNT1 A 0 A_SetTranslucent(0.0, 2)
	SHDW P 6 A_SetTranslucent(0.2, 2)
	SHDW P 6 A_SetTranslucent(0.4, 2)
	SHDW P 6 A_SetTranslucent(0.6, 2)
	SHDW P 6 A_SetTranslucent(0.8, 2)
	SHDW P 6 A_SetTranslucent(1.0, 0) //opaque
	SHDW POMLKJI 7 //Play death animation in reverse so it looks
	              //like it's coming out of the ground
 	//Randomly make some badguys decide to attack your base:
	TNT1 A 0 ACS_ExecuteAlways(502, 0)
   Idle:
   SpawnLook:
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW AABBCCDD 4 A_Wander
		SHDW A 0 A_Look
		SHDW A 0 A_CheckSight("Remove")
		loop
	See:
		SHDW E 5
		SHDW A 1 A_CheckSight("Remove")
		SHDW AAA 1 A_Chase
		SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW BBB 1 A_Chase
		SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW CCC 1 A_Chase
		SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW DDD 1 A_Chase
		SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW AAA 1 A_Chase
		SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW BBB 1 A_Chase
		SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW CCC 1 A_Chase
		SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0, 0, 0, 0, 0, 0, 0, 128)
		SHDW DDD 1 A_Chase
		SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0, 0, 0, 0, 0, 0, 0, 128)
		Goto See+1
	Death:
		TNT1 A 0 A_GiveToTarget("ShadowKillXP", 1)
    Death.NoXP:
    Death.SentryTurret:
		SHDW I 6 A_Scream
		SHDW J 5
		SHDW K 5 A_SpawnItemEx("Shadowtorso", 0, 0, 0, 1, 0, 0, 0, 128)
		SHDW L 5 A_Fall
		SHDW MNO 6 
		SHDW O 0 A_SpawnItemEx("ShadowLoot", 0, 32, 0, 0, 0, 0, 0, 0, 0)
		SHDW P 2100
		SHDW P 0 ACS_ExecuteAlways(501, 0)
		Stop
	XDeath:
		TNT1 A 0 A_GiveToTarget("ShadowKillXP", 1)
    Death.NoXP:
    Death.SentryTurret:
		SHDX A 8
		SHDX B 6 A_XScream
		SHDX C 6 
		SHDX D 6 A_Fall
 		SHDX E 6
		SHDX F 6 A_SpawnItemEx("ShadowLoot", 0, 32, 0, 0, 0, 0, 0, 0, 0)
		SHDX G 2100
		Stop
	Raise:
		SHDW M 8
		SHDW KLJI 8
		Goto See
   Remove:
    TNT1 A 1 
    //Remove ourselves if we're too far from the player frustrum.
    TNT1 A 5 ACS_ExecuteAlways(501, 0)
	Stop
	}
}

