Actor CryoImp
{
Monster
health 100
height 56
radius 20
mass 100
speed 9
BloodColor "Sky Blue"
MeleeDamage 3
painchance 80
PainChance "SoulToxic", 60
PainChance "FatFlamer", 60
PainChance "FiendFire", 60
+FLOORCLIP
+NOBLOODDECALS
+MissileMore
+QUICKTORETALIATE
Species "Imps"
DamageFactor "Ice", 0.0
DamageFactor "FreezerBurn", 0.0
DamageFactor "ImpComet", 0.0
DropItem "LifeEssence", 125
DropItem "ArmorBonusMax", 125
DropItem "DemonAmmo", 70, 60
DropItem "Freezer Rifle", 28, 1
seesound "frostimp/See"
painsound "frostimp/freeze"
deathsound "frostimp/shatter"
MeleeSound "imps/melee"
Obituary "%o was given severe frostburn by a Cryo Imp."
Hitobituary "%o was clawed by a Cryo Imp."
Tag "Cyro Imp"
States
	{
	Spawn:
		TNT1 A 0 A_SpawnItem("FImpWindSpawner",0,0,0,0)
		ICEY A 5 A_Look
		loop
	See:
		TNT1 A 0 A_Jump(46,"Evade")
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY AABB 3 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY CCDD 3 A_Chase
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		loop
	Evade:
		TNT1 A 0 A_Jump(128,"Evade2")
		TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Evade2:
		TNT1 A 0 ThrustThing(Angle*256/360+192,16,0,0)
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Melee:
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY EF 5 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY G 5 A_MeleeAttack
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY FE 5 A_FaceTarget	
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		Goto See
	Missile:
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		ICEY EF 6 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		TNT1 A 0 A_CustomMissile("FrostCoveredBall",32,0,8,0)
		TNT1 A 0 A_CustomMissile("FrostCoveredBall",32,0,-8,0)
		ICEY G 5 A_CustomMissile("FrostCoveredBall",32,0,0,0)
		ICEY FE 4 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("FImpWindSpawner",0,0,0,0)
		Goto See
	Pain:
		TNT1 A 0
		ICEY H 2 
		TNT1 AAAA 0 A_SpawnItemEx("IceDebris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce1",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce2",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce2",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce3",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce3",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce3",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce4",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce4",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce4",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		TNT1 A 0 A_SpawnItemEx("ShatteringIce4",random(-8,8),random(-8,8),random(16,48),random(-2,2), random(-2,2),random(-1,1),0,128)
		ICEY H 2 A_Pain
		Goto See
	Death:
		TNT1 A 0
		ICEY H 5 A_ScreamAndUnblock
		TNT1 AAA 0 A_CustomMissile("Kaboom6",0,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("IceDebris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,128)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),2,random(0,360))
		ICEY H 0 A_PlaySound("frostimp/boom")
		ICEY H 0 A_IceGuyDie
		Stop
	}
}

ACTOR FImpWindSpawner : RedParticleSpawner
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AAA 0 Bright A_SpawnItemEx("ImpFrozenWind",random(12,-12),random(12,-12),random(12,64),0,0,random(1,3),0,128,0)
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR ImpFrozenWind
{
Scale 0.4
RenderStyle Normal
+CLIENTSIDEONLY
+NOINTERACTION
+FORCEXYBILLBOARD
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 0 Bright A_CheckSight("Toaster")
		PLSS JKLMNOPQRSTUVWXYZ 2 Bright A_FadeOut(0.1,1)
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FrostCoveredBall
{
PROJECTILE
Height 16
Radius 8
Speed 18
FastSpeed 22
Scale 0.50
RenderStyle Add
Alpha 0.67
Damage 4
Damagetype Ice
Seesound "frostimp/missile"
Deathsound "frostimp/impact"
States
	{
	Spawn:
		TNT1 A 0 Bright A_CStaffMissileSlither
		ICE1 A 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 A 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 B 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 B 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_CStaffMissileSlither
		ICE1 C 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 C 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 D 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 D 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_CStaffMissileSlither
		ICE1 E 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 E 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 F 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		ICE1 F 1 Bright A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_CStaffMissileSlither
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 Bright A_SpawnItemEx("IceDebris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,SXF_CLIENTSIDE)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),2,random(0,360))
		ICE1 GHI 4
		Stop
	}
}

ACTOR FrostBallTrail
{
PROJECTILE
Height 16
Radius 8
Scale 0.30
RenderStyle Add
Alpha 0.67
+CLIENTSIDEONLY
+RANDOMIZE
States
	{
	Spawn:
		ICE1 G 4 Bright 
		Goto Death
	Death:
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("IceSparkle",0,0,0,random(-2,2),random(-2,2),random(-1,1),0,SXF_CLIENTSIDE,0)
		ICE1 G 1 A_FadeOut(0.05,1)
		Goto Death+3
	}
}
/*
Actor IceSparkle
{
Height 0
Radius 0
Renderstyle translucent
Alpha 0.5
+NOTARGET
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+NOLIFTDROP
+DONTSQUASH
+NOTELEOTHER
+NONSHOOTABLE
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICE2 ABC 4 A_FadeOut(0.1,1)
		Goto Spawn+1
	}
}
*/
Actor ShatteringIce1
{
Health 1
Height 1
Radius 8
Mass 4
Scale 0.5
+CORPSE
+NOTELEPORT
+NOBLOCKMAP
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
		Goto Spawn+1
	Crash:
		ICEC A 1 A_FadeOut(0.01,1)
		Loop
	}
}

Actor ShatteringIce2
{
Health 1
Height 1
Radius 8
Mass 3
Scale 0.5
+CORPSE
+NOTELEPORT
+NOBLOCKMAP
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
		Goto Spawn+1
	Crash:
		ICEC B 1 A_FadeOut(0.01,1)
		Loop
	}
}

Actor ShatteringIce3
{
Health 1
Height 1
Radius 8
Mass 2
Scale 0.5
+CORPSE
+NOTELEPORT
+NOBLOCKMAP
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
		Goto Spawn+1
	Crash:
		ICEC C 1 A_FadeOut(0.01,1)
		Loop
	}
}

Actor ShatteringIce4
{
Health 1
Height 1
Radius 8
Mass 1
Scale 0.5
+CORPSE
+NOTELEPORT
+NOBLOCKMAP
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
		Goto Spawn+1
	Crash:
		ICEC D 1 A_FadeOut(0.01,1)
		Loop
	}
}

Actor ShatterIceSparkle
{
Height 0
Radius 0
Scale 0.1
Renderstyle translucent
Alpha 0.5
+NOTARGET
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+NOLIFTDROP
+DONTSQUASH
+NOTELEOTHER
+NONSHOOTABLE
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		ICE2 ABC 4 A_FadeOut(0.1,1)
		Goto Spawn+1
	}
}