ACTOR SpiritImp
{
  Health 150
  Radius 20
  Height 56
  Mass 120
  Speed 10
  BloodType None
  MONSTER
  RENDERSTYLE add
  Alpha 0.7
  MeleeDamage 10
  +FloorClip
  +NoBloodDecals
  DamageFactor "Ice", 0.0
  DamageFactor "FreezerBurn", 0.0
  DamageFactor "Fire", 0.0
  DropItem "LifeEssence" 256 2
  DropItem "ArmorBonusMax" 256 1
  DropItem "BossLifeEssence" 128
  DropItem "BossArmorBonusMax" 128
  DropItem "NewCell" 100 20
  DropItem "Freezer Rifle" 20 1
  SEESOUND "SpiritImp/Sight"
  DEATHSOUND "SpiritImp/Death"
  ACTIVESOUND "SpiritImp/Active"
  HITOBITUARY "%o was chilled by the touch of a spirit imp"
  OBITUARY "%o was chilled by a spirit imp"
  states
  {
  Spawn:
    SPIP B 10 A_Look
    Loop
  See:
    SPIP A 0 A_CustomMissile("OrbitSpirit", 32, 0, 90)
    SPIP A 0 A_CustomMissile("OrbitSpirit2", 32, 0, -90)
    SPIP AABBCCDD 3 A_Chase
    Goto See+2
  Melee:
    TNT1 A 0 A_JumpIfCloser(180,"PoltFlameShot")
    TNT1 A 0 A_Jump(75,"ChillTouch")
  ChillTouch:
    SPIP EFG 3 Bright A_FaceTarget
	SPIP HIJK 4 Bright A_FaceTarget  
	SPIP L 1 A_MeleeAttack
	GoTo See+2
  PoltFlameShot:
    SPIP EFG 6 Bright A_FaceTarget
	SPIP HIJK 6 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("devil/scream")
    SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
	SPIP L 0 A_FaceTarget
	SPIP L 1 Bright A_CustomMissile("PoltFlameShot", 45, 0, 0, 0, 0)
    Goto See+2
  Missile:
    TNT1 A 0 A_Jump(192,"SeekerBall1")
	TNT1 A 0 A_Jump(64,"SeekerBall2")
  SeekerBall1:
    SPIP EFG 4 A_FaceTarget
    SPIP HIJK 5 A_FaceTarget
    SPIP L 6 A_CustomComboAttack ("SpiritImpBall", 32, 5, "Imp/Melee")
    SPIP M 10
    Goto See +2
  SeekerBall2:
    SPIP EFG 4 A_FaceTarget
    SPIP HIJK 5 A_FaceTarget
    SPIP L 6 A_CustomComboAttack ("SpiritImpBall2", 32, 5, "Imp/Melee")
    SPIP M 10
    Goto See +2	
  Pain:
    SPIP N 3
    SPIP N 3 A_Pain
    Goto See +2
  Death:
    SPIP O 7 A_Scream
    SPIP PQR 7
    SPIP S 6 A_SpawnItemEx("SpiritImpGhost1", 0, 0, 32, 0, 0, 0, 0, 128)
    SPIP T 5 
    SPIP U 5 A_SpawnItem("SpiritImpGhost")
    SPIP V 5 A_NoBlocking
    SPIP W 3 A_FadeOut(0.015)
    Wait
    }
 }


actor SpiritImpBall
{
    Radius 8
    Height 6
    Scale 0.4
    Speed 12
    Damage 3
    +SEEKERMISSILE
    PROJECTILE
    Renderstyle ADD
    SeeSound "harvester/scream"
    DeathSound "imp/shotx"
    Decal DoomImpScorch
    States
    {
    Spawn:
    	SIBA A  0 A_SpawnItemEx("SpiritImpBallTrail", 0, 0, 0, 0, 0, 0, 0, 180)
        SIBA AB 2 A_SeekerMissile (10,20)
        Loop
    Death:
        SIBA CDEFGHIJKL 4
        Stop
    }
}

Actor SpiritImpBall2 : SpiritImpBall
{
    DamageType Ice
    Damage 12
	Translation "80:111=192:207"
}

actor SpiritImpBallTrail
{
    Radius 1
    Height 1
    Speed 0
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.5
    +NOCLIP
    States
    {
    Spawn:
    Death:
    	SITR H 6
        SITR ABCDEFG 4
        Stop
    }
}



actor OrbitSpirit : SpiritImpBall
{
     SeeSound ""
     +NOCLIP
     Scale 0.4
     Alpha 0.1
     Speed 3
     MissileHeight 0
     States
     {
     Spawn:
         SIBA AABB 1
         SIBA A 3 A_CustomMissile("OrbitSpirit", 0, 0, 75)
         Stop
     Death:
    	 SIBA A 2 A_FadeOut(0.015)
         loop
     }
}

actor OrbitSpirit2 : OrbitSpirit
{
     Speed 10
     MissileHeight 0
     States
     {
     Spawn:
         SIBA AABB 1
         SIBA A 0 A_CustomMissile("OrbitSpirit", 0, 0, -75)
         stop
     Death:
    	 SIBA A 2 A_FadeOut(0.015)
         loop
     }
}


actor SpiritImpGhost1
{
    Radius 1
    Height 1
    Speed 0
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.7
    +NOCLIP
    SeeSound "harvester/ghost"
    States
    {
    Spawn:
    Death:
        SIGH A 0
        SIGH A 0 A_PlaySound("harvester/ghost")
        SIGH ABCDEFG 4
        Stop
    }
}

Actor SpiritImpGhost
{
  Radius 20
  Height 56
  Mass 120
  Speed 10
  renderstyle add
  alpha 0.2
  +NOTELEPORT
  +FLOORCLIP
  -SOLID
  -SHOOTABLE
  +NONSHOOTABLE
  +LOOKALLAROUND
  States
  {
  Spawn:
    SPIP AABB 6 A_Look
    SPIP A 0 A_FadeOut(0.005)
    Loop
  See:
    SPIP AABBCCDD 3 A_VileChase
    SPIP A 0 A_FadeOut(0.005)
    Loop
  Death:
    TNT1 A 1
    Stop
  Heal:
    TNT1 A 1
    Goto Death
  }
}

