ACTOR FrozenShadow
{
Health 600
Radius 20
Height 56
Speed 8
BloodColor "Blue"
MeleeDamage 10
PainChance 140
PainChance "SoulToxic", 60
PainChance "FatFlamer", 60
PainChance "FiendFire", 60
DamageFactor "ImpComet", 0.0
SeeSound "Poe/Sight"
ActiveSound "Poe/active"
PainSound "Poe/pain"
DeathSound "Poe/death"
Obituary "%o get rekt by a Frozen Shadow."
HitObituary "%o was shredded by a Frozen Shadow."
DropItem "LifeEssence" 50
DropItem "ArmorBonusMax" 50
DamageType "Ice"
Damagefactor "Acid", 0.4
Damagefactor "SatanGuard", 0.0
Damagefactor "Ice", 0.0
Damagefactor "Fire", 0.4
//No Infighting
Damagefactor "Shadow", 0.0
Damagefactor "AdvancedImp", 0.0
Damagefactor "Catharsi15k", 0.0
Damagefactor "Catharsi10K", 0.0
Damagefactor "HellionFire", 0.0
Damagefactor "Nightshade", 0.0
Species "Imps"
Tag "Frozen Shadow"
MONSTER
+FLOORCLIP
+MISSILEMORE
States
{
Spawn:
	BSHD A 1 Bright A_Look
	Loop
See:
	BSHD BBBB 1 Bright A_Chase
	BSHD CCCC 1 Bright A_Chase
	BSHD DDDD 1 Bright A_Chase
	BSHD EEEE 1 Bright A_Chase
	Loop
Melee: 
    Goto Missile
Missile:
	TNT1 A 0 A_Jump(100, "NormalCombo")
	TNT1 A 0 A_Jump(60, "NormalSpread")
	TNT1 A 0 A_Jump(40, "Freeze")
	TNT1 A 0 A_Jump(20, "GhostSeeker")
	TNT1 A 0 A_Jump(20, "BlueLazer")
	Goto See
NormalCombo:
	BSHD FF 4 BRIGHT A_FaceTarget
	BSHD GG 4 Bright A_CustomMissile("FrostCoveredBall", 32, 0, 0)
	TNT1 A 0 A_Jump(150, "See")
	BSHD FF 4 BRIGHT A_FaceTarget
	BSHD GG 4 Bright A_CustomMissile("FrostCoveredBall", 32, 0, 0)
	BSHD FF 4 BRIGHT A_FaceTarget
	BSHD GG 4 Bright A_CustomMissile("FrostCoveredBall", 32, 0, 0)
	Goto See
NormalSpread:
	BSHD F 4 BRIGHT A_FaceTarget
	TNT1 A 0 A_CustomMissile("FrostCoveredBall", 32, 0, 25)
	TNT1 A 0 A_CustomMissile("FrostCoveredBall", 32, 0, 13)
	TNT1 A 0 A_CustomMissile("FrostCoveredBall", 32, 0, 0)
	TNT1 A 0 A_CustomMissile("FrostCoveredBall", 32, 0, -13)
	BSHD GG 3 BRIGHT A_CustomMissile("FrostCoveredBall", 32, 0, -25)
	GoTo See
Freeze:
	BSHD FFF 5 BRIGHT A_FaceTarget
	BSHD G 6 BRIGHT A_CustomMissile("FRZRPoltBomb", 32, 0, 0)
	Goto See
GhostSeeker:
    BSHD FFFFFF 5 Bright
	TNT1 A 0 A_PlaySound("weapons/justfi")
    BSHD G 4 Bright A_CustomMissile("ColdSpiritMissile", 32, 0, 0)
    Goto See	
BlueLazer:
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	BSHD G 8 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ImpureLaser",32,0,0,CMF_TRACKOWNER)
	GoTo See
Pain:
	BSHD H 4 A_Pain
	Goto See
Death:
    BSHD H 30 A_Scream
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	BSHD HH 1 Bright A_CustomMissile("BlueKaboomage",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	BSHD HH 1 Bright A_CustomMissile("BlueKaboomage",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("BlueKaboomage",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	TNT1 AA 0 A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	BSHD HH 1 Bright A_CustomMissile("Kaboom6",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("IceWraithBDSSpawn",CHAN_AUTO,1.0,0)
	TNT1 A 0 A_PlaySound("SoulRazeLaugh3",CHAN_AUTO,1.0,0)
	TNT1 AA 0 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AA 0 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AAAAAA 0 A_CustomMissile("SmokeFX",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AAAA 0 A_CustomMissile("BigRedBloodCloud",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AAAAAA 0 A_CustomMissile("RedBloodCloud",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,0,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,45,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,-45,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,90,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,-90,CMF_AIMDIRECTION |CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,135,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,-135,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("IceWraithBDS",35,0,180,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	BSHD N 4 Bright A_Fall
	BSHD MOPQR 4 Bright
	BSHD S 4 Bright
	BSHD T 525
	BSHD T 5 A_FadeOut(0.1,1)
	Wait
    }
}

Actor BlueDoomShadowTrailSpawner
{
Height 56
Radius 1
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Toaster")
		TNT1 A 1 Bright A_SpawnItemEx("BlueDoomShadowTrail",0,0,0,random(-6,6),random(-6,6),random(-6,6),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,64)
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor BlueDoomShadowTrail2Spawner
{
Height 56
Radius 1
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Toaster")
		TNT1 A 1 Bright A_SpawnItemEx("BlueDoomShadowTrail2",0,0,0,random(-5,3),random(-5,5),random(-3,3),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor BlueDoomShadowTrail
{
Renderstyle Translucent
Alpha 0.6
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		BSHD A 4
		BSHD A 1 A_FadeOut(0.125,1)
		Wait
	}
}

Actor BlueDoomShadowTrail2
{
Renderstyle Translucent
Alpha 0.6
+MISSILE
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+THRUACTORS
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AA 0 Bright A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4")
	Spawn1:
		BSHD CDEB 4
		BSHD B 1 A_FadeOut(0.125,1)
		Wait
	Spawn2:
		BSHD BCDE 4
		BSHD E 1 A_FadeOut(0.125,1)
		Wait
	Spawn3:
		BSHD EBCD 4
		BSHD D 1 A_FadeOut(0.125,1)
		Wait
	Spawn4:
		BSHD DEBC 4
		BSHD C 1 A_FadeOut(0.125,1)
		Wait
	}
}

Actor IceWraithBDS : DoomWraith
{
    DamageType "Ice"
	States
	{
	Spawn:
		SPI2 AAAAA 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 BBBBB 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 AAAAA 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 BBBBB 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		SPI2 AAAAA 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 BBBBB 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 AAAAA 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 BBBBB 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 AAAAA 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
		SPI2 BBBBB 1 Bright A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 A 0 A_Explode(10,80,0,0,72)
		TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
		TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
	Death:
		TNT1 A 0
		TNT1 A 0 A_ScaleVelocity(0.3)
		TNT1 A 0 A_ChangeFlag(HEXENBOUNCE,1)
		TNT1 A 0 A_UnSetSolid
		TNT1 A 0 A_Scream
		TNT1 A 0 A_SpawnItemEx("BlueKaboomage",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		TNT1 AAAAAA 0 A_SpawnItemEx("Kaboom6",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
		tnt1 a 0 A_Explode(20,160,0,0,138)
		SPI2 HIJKLMMM 4 Bright A_FadeOut
		TNT1 A 1
		Stop
	}
}

Actor BlueKaboomage : Kaboom6
{
    Scale 1.15
}

Actor SpiritMissileBase
{
    Radius 4
	Height 4
	Speed 20
	Damage 20
	PROJECTILE
	+SEEKERMISSILE
	RENDERSTYLE ADD
	ALPHA 0.67
	Scale 0.8
	SeeSound "monster/bomb"
	DeathSound "monster/explode"
	Decal "Scorch"
	States
	{
	Spawn:
		SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		SPIR A 0 Bright A_SeekerMissile(10,10)
		SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		SPIR A 0 Bright A_SeekerMissile(10,10)
		SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		SPIR A 0 Bright A_SeekerMissile(10,10)
		SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		SPIR A 0 Bright A_SeekerMissile(10,10)
		SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		SPIR A 0 Bright A_SeekerMissile(10,10)
		SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		Loop
	Death:
		SPIR A 0 Bright 
		SPIR B 0 Bright
		SPIR K 3 Bright
		SPIR L 3 Bright
		SPIR M 3 Bright
		SPIR N 3 Bright
		SPIR O 3 Bright
		Stop
	}
}

ACTOR HolyMissileTrailBase
{
   Radius 3
   Height 3
   Speed 19
   PROJECTILE
   RENDERSTYLE ADD
   Alpha 0.67
   +FireDamage
   states
   {
   Spawn:
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      SPIR QRS 4
      Goto Death
   Toaster:
      TNT1 A -1
	  Stop
   Death:
      SPIR C 3 BRIGHT
      SPIR D 3 BRIGHT
      Stop
   }
}

Actor ColdSpiritMissile : SpiritMissileBase
{
    DamageType "Ice"
	States
	{
	Spawn:
		SPI2 A 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		SPI2 A 0 Bright A_SeekerMissile(10,10)
		SPI2 B 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		SPI2 A 0 Bright A_SeekerMissile(10,10)
		SPI2 A 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		SPI2 A 0 Bright A_SeekerMissile(10,10)
		SPI2 B 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		SPI2 A 0 Bright A_SeekerMissile(10,10)
		SPI2 A 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		SPI2 A 0 Bright A_SeekerMissile(10,10)
		SPI2 B 1 Bright A_CustomMissile("HolyMissileTrailCold",0,0,0,0)
		Loop
	Death:
		SPI2 A 0 Bright 
		SPI2 B 0 Bright
		SPI2 K 3 Bright
		SPI2 L 3 Bright
		SPI2 M 3 Bright
		SPI2 N 3 Bright
		SPI2 O 3 Bright
		Stop
	}
}

Actor HolyMissileTrailCold : HolyMissileTrailBase
{
   states
   {
   Spawn:
      SPI2 QRS 4
      Goto Death
   Death:
      SPI2 C 3 BRIGHT
      SPI2 D 3 BRIGHT
      Stop
   }
} 