actor CryoImp
{
  obituary "%o was given severe frostburn by a Cryo Imp."
  hitobituary "%o was clawed by a Cryo Imp."
  health 100
  radius 20
  height 56
  mass 100
  speed 9
  painchance 80
  MeleeDamage 3
  DamageFactor "PlayerFireSword", 2.0
  PainChance "SoulToxic", 60
  PainChance "FatFlamer", 60
  PainChance "FiendFire", 60
  DropItem "Freezer Rifle" 28 1
  DamageFactor "ImpComet", 0.0
  DropItem "LifeEssence" 125
  DropItem "ArmorBonusMax" 125
  DropItem "DemonAmmo" 70 60
  Species "Imps"
  seesound "frostimp/See"
  painsound "frostimp/freeze"
  deathsound "frostimp/shatter"
  MeleeSound "imps/melee"
  DamageFactor "Ice", 0.0
  DamageFactor "FreezerBurn", 0.0
  MONSTER
  +FLOORCLIP
  +NOBLOOD
  +MissileMore
  +QUICKTORETALIATE
  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,7)
	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
	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:
    ICEY H 2 
	TNT1 AAAA 0 A_SpawnItemEx("IceDebris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,128)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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)
	TROI 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:
    ICEY A 0 A_NoBlocking
	ICEY A 5 A_Scream
	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))
	TROI A 0 A_PlaySound("frostimp/boom")
	TROI A 0 A_IceGuyDie
    stop
  }
}
ACTOR FImpWindSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 AAA 0 A_SpawnItemEx("ImpFrozenWind",random(12,-12),random(12,-12),random(12,64),0,0,random(1,3),0,128,0)
    TNT1 A 1
    Stop
  }
}
ACTOR ImpFrozenWind
{
+MISSILE
+DONTSPLASH
+NOBLOCKMAP
+NOGRAVITY
+NOTELEPORT
+FORCEXYBILLBOARD
+THRUACTORS
Scale 0.4
RenderStyle Normal
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    PLSS JKLMNOPQRSTUVWXYZ 2 Bright A_FadeOut
	Stop
Toaster:
    TNT1 A 0
    Stop
}
}
ACTOR FrostCoveredBall
{
  Radius 8
  Height 16
  Speed 18
  FastSpeed 22
  Damage 4
  Scale 0.50
  RenderStyle Add
  damagetype ice
  seesound "frostimp/missile"
  deathsound "frostimp/impact"
  Alpha 0.67
  PROJECTILE
  states
  {
  Spawn:
	TNT1 A 0 A_CStaffMissileSlither
    ICE1 A 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 A 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 B 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128)  
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	ICE1 B 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_CStaffMissileSlither
    ICE1 C 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	ICE1 C 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 D 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 D 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_CStaffMissileSlither
    ICE1 E 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 E 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 F 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 F 1 BRIGHT A_SpawnItemEx("FrostBallTrail",0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_CStaffMissileSlither
    loop
  Death:
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
	TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)		
	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))
    ICE1 GHI 4 
    Stop
  }
}

ACTOR FrostBallTrail
{
  Radius 8
  Height 16
  Scale 0.30
  RenderStyle Add
  Alpha 0.67
  PROJECTILE
  +CLIENTSIDEONLY
  +Randomize
  states
  {
  Spawn:
    ICE1 G 4 BRIGHT 
    goto death
  Death:
    TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    TNT1 A 0 A_SpawnItemEx("CIIceSparkle", 0, 0, 0, random(-2, 2), random(-2, 2), random(-1, 1),0,128)
    ICE1 G 1 A_FadeOut(0.05)
    goto death+3
  }
}

Actor CIIceSparkle
{
  renderstyle translucent
  alpha 0.5
  radius 0
  height 0
  +NOGRAVITY
  +NOBLOCKMAP
  +NOLIFTDROP
  +NOTARGET
  +DONTSQUASH
  +NOTELEOTHER
  +NONSHOOTABLE
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    ICE2 A 0
    ICE2 A 0 
    ICE2 ABC 4 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

actor ShatteringIce1
{
 scale 0.50
 health 1
 radius 8
 height 1
 mass 4
 +CORPSE
 +NOTELEPORT
 +NOBLOCKMAP
 +CLIENTSIDEONLY
 states
 {
 Spawn:
  TNT1 A 0
  ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
  loop
 Crash:
  ICEC A 1 A_FadeOut(0.01)
  loop
 }
}

actor ShatteringIce2
{
 scale 0.50
 health 1
 radius 8
 height 1
 mass 3
 +CORPSE
 +NOTELEPORT
 +NOBLOCKMAP
 +CLIENTSIDEONLY
 states
 {
 Spawn:
  TNT1 B 0
  ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
  loop
 Crash:
  ICEC B 1 A_FadeOut(0.01)
  loop
 }
}

actor ShatteringIce3
{
 scale 0.50
 health 1
 radius 8
 height 1
 mass 2
 +CORPSE
 +NOTELEPORT
 +NOBLOCKMAP
 +CLIENTSIDEONLY
 states
 {
 Spawn:
  TNT1 C 0
  ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
  loop
 Crash:
  ICEC C 1 A_FadeOut(0.01)
  loop
 }
}

actor ShatteringIce4
{
 scale 0.50
 health 1
 radius 8
 height 1
 mass 1
 +CORPSE
 +NOTELEPORT
 +NOBLOCKMAP
 +CLIENTSIDEONLY
 states
 {
 Spawn:
  TNT1 D 0
  ICEC A 1 A_SpawnItemEx("ShatterIceSparkle",0,0,0,0,0,0,0,128)
  loop
 Crash:
  ICEC D 1 A_FadeOut(0.01)
  loop
 }
}

Actor ShatterIceSparkle
{
  renderstyle translucent
  alpha 0.50
  scale 0.10
  radius 0
  height 0
  +NOGRAVITY
  +NOBLOCKMAP
  +NOLIFTDROP
  +NOTARGET
  +DONTSQUASH
  +NOTELEOTHER
  +NONSHOOTABLE
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    ICE2 A 0
    ICE2 A 0 
    ICE2 ABC 4 A_FadeOut(0.10)
    Goto Spawn+1
  }
}