ACTOR CursedImp : NemesisImp //We need more cursed monsters. No, no we do not.
{
//Creator: Complex Doom CF 3.0 team
//Origin: Complex Doom CF 3.0 Aprilfools
//Sprite: CSIN/CSI2
//Title: "Cursed Imp"
Health 2500
Speed 30
BloodColor "Pink"
PainChance 30
MeleeDamage 20
Species "Imps"
DamageFactor 0.6
DamageFactor "Cursed", 0.0
DropItem "EnragedLegendarySphere" 70
DropItem "NemesisHealthBonusMax", 256, 32
DropItem "NemesisArmorBonus32", 256
DropItem "NemesisHealthBonusMax", 256, 32
DropItem "NemesisArmorBonus32", 256
DropItem "LegendaryPowerSphere" 85
DropItem "CRDemonAmmoBox" 200 
DropItem "CRDemonAmmo" 256
DropItem "CursedRifle" 50
DropItem "Legendary BFG 10K" 50
SeeSound "CursedImp/sight"
ActiveSound "CursedImp/active"
PainSound "CursedImp/pain"
DeathSound "CursedImp/death"
Obituary "%o never thought a baddon could be this bad after seeing the Cursed Imp."
HitObituary "%o somehow was dumb enough to melee a Cursed Imp."
Tag "\c[p7]Cursed Imp\c-"
States
{
  Spawn:
	TNT1 A 0
  Idle:
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"Idle2")
	CSIN A 10 Bright A_Look
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN Q 10 Bright A_Look
	TNT1 AA 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	Loop
  Idle2:
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 A 10 Bright A_Look
	Loop
  Remove:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("DoomImp",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 A 0 A_ChangeFlag("COUNTKILL", FALSE)
	TNT1 A 0
	Stop
  See:
	TNT1 A 0 A_JumpIf(user_deathtimeractive == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("NemesisDeathTimerForVexed",0)
	TNT1 A 0 A_SetUserVar("user_deathtimeractive",1)
	TNT1 A 0 A_JumpIf(user_music == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,2047)
	TNT1 A 0 A_SetUserVar("user_music",1)
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"See2")
	TNT1 A 0 A_JumpIfHealthLower(1250,"LoseWings")
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN DD 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Jump(30,"Teleport")
	TNT1 A 0 A_Jump(62,"Rush")
	TNT1 A 0 A_Jump(50,"AirDodge")
	Loop
  See2:
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_ChangeFlag(FRIGHTENED,0)
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	TNT1 A 0 A_Jump(46,"Evade","Rush2")
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 DD 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_Jump(46,"Phase")	
    Loop
  Phased:
	CSI2 AABBCCDDAABBCCDD 1 A_ExtChase(0,0)
	CSI2 AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_Chase
	TNT1 A 0 A_Jump(24,"UnPhase","PhasedRun")
	Goto Phased+32
  AirDodge:
	TNT1 A 0
	TNT1 A 0 A_Jump(256,"Right","Left","Back","BackLeftRange","BackRightRange")
	TNT1 A 0
	GoTo See
  Right:
	TNT1 A 0
	TNT1 A 0 ThrustThing(angle*256/360+64,30,0,0)
	CSIN A 5 Bright
	GoTo See
  Left:
	TNT1 A 0
	TNT1 A 0 ThrustThing(angle*256/360+192,30,0,0)
	CSIN A 5 Bright
	GoTo See
  Back:
	TNT1 A 0
	TNT1 A 0 ThrustThing(angle*256/360+128,30,0,0)
	CSIN A 5 Bright
	GoTo See
  BackLeftRange:
	TNT1 A 0
	TNT1 A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
	CSIN A 5 Bright
	GoTo See
  BackRightRange:
	TNT1 A 0
	TNT1 A 0 ThrustThing(angle*256/360+random(69,123),30,0,0)
	CSIN A 5 Bright 
	GoTo See
  Evade:
	TNT1 A 0 A_Jump(128,7)
	TNT1 A 0 ThrustThing(Angle*256/360+64,30,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 AA 3 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 AA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
	TNT1 A 0 ThrustThing(Angle*256/360+192,30,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 AA 3 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 AA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
  Phase:
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	CSI2 E 2 A_FaceTarget
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.75)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.55)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.35)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.15)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	Goto Phased
  UnPhase:
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.15)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.35)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.55)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.75)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SetTranslucent(1)
	CSI2 E 2 A_FaceTarget	
 	Goto See2
  Melee:
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"Melee2")
	CSIN EF 2 Bright A_FaceTarget
	CSIN F 2 Bright A_MeleeAttack
	Goto See
  Melee2:
	CSI2 EF 2 A_FaceTarget
	CSI2 G 2 A_MeleeAttack
	CSI2 FE 2 A_FaceTarget	
 	Goto See2
  Missile:
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_UnsetInvulnerable
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"Missile2")
	TNT1 A 0 A_Jump(32,"Super")
	TNT1 A 0 A_Jump(64,"Seeker","Laser")
	Goto Normal
  Missile2:
	TNT1 A 0 A_JumpIfCloser(250,"Lunge")
	TNT1 A 0 A_Jump(64,"Laser2","Super2")
	CSI2 EF 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FE 2
	CSI2 F 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),30,0,0)
	CSI2 FEF 2
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FE 2
	CSI2 F 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),30,0,0)
	CSI2 FEF 2
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FE 2
	CSI2 F 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),30,0,0)
	CSI2 FEF 2
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FE 2
	CSI2 F 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),30,0,0)
	CSI2 FEF 2
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FE 2
	CSI2 F 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSI2 G 2 Bright A_CustomMissile("CursedImpSeekBall", 32, 0, 0)
	CSI2 FEF 2
	TNT1 A 0 A_Stop
	Goto See2
  Lunge:
	CSI2 AA 3 A_FaceTarget
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	TNT1 A 0 ThrustThingZ(0,20,0,1)
	CSI2 F 2 A_Recoil(-30)
	CSI2 F 3 A_CustomMissile("GoreImpLunge",18,0,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_PlaySound("imps/melee")
	CSI2 F 6
	CSI2 F 2 A_ScaleVelocity(0.2)
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	CSI2 F 1 A_ScaleVelocity(0)
	Goto See
  Normal:
	CSIN EF 8 Bright A_FaceTarget
	CSIM F 1 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 0)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -15)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 15)
	CSIN EF 4 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 0)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -15)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 15)
	CSIN EF 4 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 0)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 5)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 10)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, -15)
	TNT1 A 0 A_CustomMissile("CursedImpBall", 28, 0, 15)
	TNT1 A 0 A_Jump(100,"Seeker","Normal")
	Goto See
  Seeker:
	CSIN EF 10 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	CSIM F 2 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("imp/attack")
	CSIM F 2 Bright A_CustomMissile("CursedImpSeekBall",32,20,0)
	TNT1 A 0 A_Jump(64,"Seeker","Normal")
	Goto See
  Laser:
	TNT1 A 0 A_PlaySound("NemesisImp/Sight")
	TNT1 A 0 A_Facetarget
	CSIN EEE 4 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Facetarget
	CSIN FFF 4 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Facetarget
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIM F 4 Bright A_CustomMissile("NemesisImpLaser", 32, 0, 0)
	TNT1 A 0 A_Facetarget
	CSIM F 4
	TNT1 A 0 A_Facetarget
	TNT1 A 0 A_MonsterRefire(64,"See")
	TNT1 A 0 A_Jump(100,"See")
	Goto Laser+1
  Laser2:
	TNT1 A 0 A_PlaySound("NemesisImp/Sight")
	TNT1 A 0 A_Facetarget
	CSI2 EEE 4 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Facetarget
	CSI2 FFF 4 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Facetarget
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 G 4 Bright A_CustomMissile("NemesisImpLaser", 32, 0, 0)
	TNT1 A 0 A_Facetarget
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),32,0,0)
	CSI2 G 4
	TNT1 A 0 A_Facetarget
	TNT1 A 0 A_MonsterRefire(64,"See2")
	TNT1 A 0 A_Jump(100,"See2")
	Goto Laser2+1
  Super:
	TNT1 A 0 A_JumpIfCloser(200,"Normal")
	TNT1 A 0 A_PlaySound ("legimp/chargingsound")
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_FaceTarget
	CSIN EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSIN FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_CustomMissile("CursedImpPinkBall",28,0,-16)
	TNT1 A 0 A_CustomMissile("CursedImpPinkBall",28,0,16)
	CSIM F 6 Bright A_CustomMissile("CursedImpPinkBall",28,0,0)
	TNT1 A 0 A_PlaySound("legimp/fiyabetch")
	TNT1 A 0 A_UnsetInvulnerable
	Goto See
  Super2:
	TNT1 A 0 A_JumpIfCloser(200,"Laser2")
	TNT1 A 0 A_PlaySound ("legimp/chargingsound")
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_FaceTarget
	CSI2 EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 EEEEE 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	CSI2 FFFFF 2 Bright A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_CustomMissile("CursedImpPinkBall",28,0,-16)
	TNT1 A 0 A_CustomMissile("CursedImpPinkBall",28,0,16)
	CSIM F 6 Bright A_CustomMissile("CursedImpPinkBall",28,0,0)
	TNT1 A 0 A_playSound ("legimp/fiyabetch")
	TNT1 A 0 A_UnsetInvulnerable
	Goto See2
  Rush:
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedImpGhost")  
	CSIN A 1 Bright A_Chase
	TNT1 A 0 A_Jump(84,"See")
	Loop
  Rush2:
	CSI2 A 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 A 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 B 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 B 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 C 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 C 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 D 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 D 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 A 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 A 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 B 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 B 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 C 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 C 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 D 1 A_Chase
	CSI2 A 0 A_Chase
	CSI2 D 1 A_Chase
	CSI2 A 0 A_Chase
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Jump(48,"See2")
	Loop
  Teleport:
	CSIN A 1 Bright A_UnSetShootable
	TNT1 AAAA 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN AAAAAAAAAA 1 Bright A_FadeOut(0.1,0)
	CSIN A 2 Bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	CSIN A 1 Bright A_PlayWeaponSound("boss/teleport")
	TNT1 AAAA 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN AAAAAAAAAA 1 Bright A_FadeIn(0.1)
	CSIN A 1 Bright A_SetShootable
	Goto See	
  Pain:
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"Pain2")
	TNT1 A 0 A_Jump(50,"Teleport")
	CSIN H 2 Bright
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSIN H 2 Bright A_Pain
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	Goto See
  Pain2:
	TNT1 A 0 A_Jump(32,"PhaseRun")
	CSI2 H 2 Bright
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 H 2 Bright A_Pain
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	Goto See
  PhaseRun:
	TNT1 A 0 A_UnSetShootable
	TNT1 A 0 A_ChangeFlag(FRIGHTENED,1)
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	CSI2 E 2 A_FaceTarget
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.75)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.55)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.35)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.15)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	Goto PhasedRun
  PhasedRun:
	CSI2 A 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 A 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 B 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 B 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 C 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 C 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 D 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 D 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 A 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 A 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 B 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 B 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 C 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 C 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 D 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	CSI2 D 1 A_ExtChase(0,0)
	CSI2 A 0 A_ExtChase(0,0)
	TNT1 A 0 A_Jump(64,"UnPhaseRun")
	Loop
  UnPhaseRun:
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_ChangeFlag(FRIGHTENED,0)
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.15)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.35)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.55)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSI2 E 1 A_SetTranslucent(0.75)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SetTranslucent(1)
	CSI2 E 2 A_FaceTarget	
	Goto See2
  LoseWings:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	TNT1 A 0 A_ChangeFlag("FLOAT",0)
	TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
	CSIN H 4 Bright
	CSIN H 20 Bright A_Pain
	TNT1 A 0 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 A 0 A_SpawnItemEx("NemesisImpWing1",0,0,0,10,0,4)
	TNT1 A 0 A_SpawnItemEx("NemesisImpWing2",0,0,0,10,0,4)
	TNT1 A 0 A_SetUserVar("user_phase2",1)
	CSI2 H 20 Bright
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	Goto See2
  Death:
	TNT1 A 0 A_JumpIf(user_phase2 == 1,"Death2")
  DeathContinue:
	CSIN I 8
	CSIN J 8 A_Scream
	CSIN K 6
	CSIN L 6 A_NoBlocking
	CSIN M 1
	CSIN N -1
	Stop
  Death2:
	CSI2 I 8 A_SetTranslucent(1)
	CSI2 J 8 A_Scream
	CSI2 K 6
	CSI2 L 6 A_Fall
	CSI2 M -1
	Stop
  }
}

ACTOR CursedImpSeekBall : LegImpSeekBall
{
  Speed 45
  Damage (Random(20,30))
  States
  {
  Spawn:
	TNT1 A 0 A_SeekerMissile(12,0)
	TNT1 A 0 A_BishopMissileWeave
	CIM1 A 1 Bright A_SpawnItemEx("CursedImpSeekBallTrail")
	TNT1 A 0 A_BishopMissileWeave
	CIM1 B 1 Bright A_SpawnItemEx("CursedImpSeekBallTrail")
	Loop
  Death:
	CIM1 CDE 3 Bright
	Stop
	}
}

ACTOR CursedImpSeekBallTrail : LegImpSeekBallTrail
{
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    CKBT GHIJKL 1 A_FadeOut(0.1)
	Stop
    }
}

ACTOR CursedImpBall : LegendaryBall
{
  Speed 40
  Damage 36
  Scale 0.8
  FastSpeed 55
  States
  {
  Spawn:
	CKB1 AB 1 Bright A_SpawnItemEx("CursedImpSeekBallTrail",0,0,2)	
	Loop
  Death:	
	CKB1 CDE 3 Bright
	Stop
    }   
}

Actor CursedImpPinkBall : LegendaryImpBlueBall
{
	Damage 1000
	Speed 15
	Bouncetype Hexen
	BounceFactor 1.0
	BounceCount 3
	States
	{
	spawn:
       CIBB ABCD 2 Bright
       TNT1 A 0 A_SpawnItemEx("CursedBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 A_CustomMissile(CursedBallTrailA, 0, 0, 0, 0, 0)
       TNT1 A 0 A_SpawnItemEx("CursedBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 A_CustomMissile(CursedBallTrailB, 0, 0, 0, 0, 0)
       TNT1 A 0 A_SpawnItemEx("CursedBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 A_CustomMissile(CursedBallTrailC, 0, 0, 0, 0, 0)
       TNT1 A 0 A_Playsound ("legball/fly")
	   Loop
    Death:
	    TNT1 A 0 A_Explode(158,138)
		CIBE ABCDEFG 4
		TNT1 A 0 Radius_Quake(20,12,0,12,0)
		Stop
		}
}

ACTOR CursedBallTrailA : BlueBallTrailA //"blueball"... really LCA?
{ 
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	CLBB AAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.015)
	Wait
  Toaster:
    TNT1 A 0
	Stop	
	}
}

ACTOR CursedBallTrailB : CursedBallTrailA
{ 
	States
	{
	Spawn:
	TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	CLBB BBBBBBBBBBBBBB 1 BRIGHT A_FadeOut(0.015)
	Wait
	}
}

ACTOR CursedBallTrailC : CursedBallTrailA
{ 
	States
	{
	Spawn:
	TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	CLBB CCCCCCCCCCCCCC 1 BRIGHT A_FadeOut(0.015)
	Wait
	}
}

ACTOR CursedBallAttack : LegBallAttack
{
Obituary "%o never thought a baddon could be this bad after seeing the Cursed Imp."
States
{
Spawn:
    TNT1 A 0
	TNT1 AAAAA 1 A_Look
	Stop
See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(1250,"Attack")
	Stop
Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 1 A_CustomRailgun(30,0,NONE,"Pink",1,1,2)
	Goto Death	
Death:
	TNT1 A 1
	Stop
	}
}

ACTOR CursedImpGhost
{
Scale 1.1
RENDERSTYLE Translucent
Alpha 0.7
+NOTIMEFREEZE
+NOINTERACTION
+CLIENTSIDEONLY
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
	Goto Fade
  Fade:
	CSIN A 2 A_FadeOut(0.1,1)
	Loop
  Toaster:
	TNT1 A 1 Bright
	Stop	
  }
}