ACTOR EnragedLegendaryImp 7107
{
  Health 1200
  Radius 20
  Height 56
  Mass 100
  Speed 14
  PainChance 50
  Monster
  MeleeDamage 15
  DamageFactor "Legendary1", 0.0
  DamageFactor 0.60
  DamageFactor "PlasmaBall", 20
  DamageFactor "Legendary", 0.0
  DamageFactor "LegendaryPlayer", 0.0
  DamageFactor "LegendaryGuru", 0.0
  DamageFactor "LegendaryGuruPlayer", 0.1
  DamageFactor "PDTBFG", 0.25
  DamageFactor "PDTBFGTracer", 0.25
  DamageFactor "PlayerDevBall", 0.125
  DamageFactor "PlayerDevBall2", 0.125
  DamageFactor "PlayerDTBFGRailgunSlug", 0.75
  DamageFactor "PlayerDevTracer", 0.125
  DropItem "EnragedLegendarySphere" 70
  DropItem "LegendaryPowerSphere" 85 1
  DropItem "ILDemonAmmoBox" 200
  DropItem "ILDemonAmmo" 250
  DropItem "LegendaryBossLifeEssence" 256
  DropItem "LegendaryBossArmorBonusMax" 256
  DropItem "LegendaryBossLifeEssence" 128
  DropItem "LegendaryBossArmorBonusMax" 128
  DropItem "Enraged Legendary Rifle" 256
  Species "Imps"
  +Float
  +NOTARGET
  +BOSS
  +BOSSDEATH
  +AVOIDMELEE
  +NOTIMEFREEZE
  +NoGravity
  +FLOORCLIP
  +MISSILEMORE
  +QUICKTORETALIATE
  +MISSILEEVENMORE
  +DONTHARMSPECIES
  +NOICEDEATH
  +DONTGIB
  SeeSound "ELegImp/Sight"
  PainSound "ELegImp/pain"
  DeathSound "ELegImp/death"
  ActiveSound "ELegImp/active"
  BloodColor "Red"
  MeleeSound "imp/melee"
  HitObituary "%o was dismembered by an Enraged Legendary Imp."
  Obituary "%o was ravaged by an Enraged Legendary Imp."
  var int user_music;
  var int user_missile;
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(100,"Remove")
  Idle:
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
    IEGN A 10 Bright A_Look
	TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN Q 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_music == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,401)
	TNT1 A 0 A_SetUserVar("user_music",1)
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
    IEGN AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN DD 3 Bright A_Chase
	TNT1 A 0 A_Jump(30,"Teleport")
	TNT1 A 0 A_Jump(62,"Rush")
	TNT1 A 0 A_Jump(50,"AirDodge")
	Loop
  AirDodge:
	 IEGN A 0 A_Jump(255,"Right","Left","Back","BackLeftRange","BackRightRange")
	 GoTo See
	Right:
	 IEGN A 0
	 IEGN A 0 ThrustThing(angle*256/360+64,30,0,0)
	 IEGN A 5 Bright
	 GoTo See
	Left:
	 IEGN A 0
	 IEGN A 0 ThrustThing(angle*256/360+192,30,0,0)
	 IEGN A 5 Bright
	 GoTo See
	Back:
	 IEGN A 0
	 IEGN A 0 ThrustThing(angle*256/360+128,30,0,0)
	 IEGN A 5 Bright
	 GoTo See
	BackLeftRange:
	 IEGN A 0
	 IEGN A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
	 IEGN A 5 Bright
	 GoTo See
	BackRightRange:
	 IEGN A 0
	 IEGN A 0 ThrustThing(angle*256/360+random(69,123),30,0,0)
	 IEGN A 5 Bright 
	 GoTo See
  Melee:
    IEGN EF 6 Bright A_FaceTarget
    IEGN F 5 Bright A_MeleeAttack
	Goto See
  Missile:
    TNT1 A 0 A_Jump(32,"Super")
    TNT1 A 0 A_Jump(64,"Seeker")
  Normal:
    IEGN EF 8 Bright A_FaceTarget
	IEGM F 1 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, 0)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, -5)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, 5)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, -10)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, 10)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, -15)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, 15)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, -20)
	TNT1 A 0 Bright A_CustomMissile("ILegendaryBall", 28, 0, 20)
	TNT1 A 0 A_Jump(88,"Seeker")
	Goto See
  Seeker:
	IEGN EF 10 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
    IEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
    IEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
	IEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
    IEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
    IEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	IEGM F 6 Bright A_CustomMissile("ILegImpSeekBall",32,20,0)
	Goto See
  Super:
	TNT1 A 0 A_JumpIfCloser(200,"Normal")
	TNT1 A 0 Bright A_PlaySound ("legimp/chargingsound")
	TNT1 A 0 A_SetInvulnerable
  SuperLoop1:
    TNT1 A 0 A_JumpIf(user_missile >= 5,"SuperLoop2")
	IEGN E 0 Bright A_FaceTarget
	IEGN EEEEE 2 Bright A_SpawnItem("ILegImpLineSpawner")
    TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	Loop
  SuperLoop2:
	TNT1 A 0 A_JumpIf(user_missile >= 10,"SuperFire")
	IEGN E 0 Bright A_FaceTarget
	IEGN FFFFF 2 Bright A_SpawnItem("ILegImpLineSpawner")
    TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	Loop
  SuperFire:
    TNT1 A 0 A_SetUserVar(user_missile,0)
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGM F 0 Bright A_CustomMissile ("LegendaryImpRedBall",28,0,-5)
	IEGM F 0 Bright A_CustomMissile ("LegendaryImpRedBall",28,0,5)
	TNT1 A 0 Bright A_playSound ("legimp/fiyabetch")
	TNT1 A 0 A_UnsetInvulnerable
	Goto See
  Rush:
	TNT1 A 0 A_SpawnItemEx("ILegendaryImpGhost")	
	IEGN A 1 Bright A_Chase
	TNT1 A 0 A_Jump(24,"See")
	Loop
  Teleport:
    IEGN A 1 Bright A_UnSetShootable
	IEGN AAAA 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN AAAAAAAAAA 1  A_FadeOut(0.1,0)
	IEGN A 2 
	IEGN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	IEGN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
    IEGN A 1 A_PlayWeaponSound("boss/teleport")
	IEGN AAAA 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN AAAAAAAAAA 1 A_FadeIn(0.1)
    IEGN A 1 Bright A_SetShootable
    Goto See		
  Pain:
    TNT1 A 0 A_Jump(50,"Teleport")
    IEGN H 2 Bright
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner")
	IEGN H 2 Bright A_Pain
	Goto See
  Death:
    TNT1 A 0 A_StopSound(6)
	IEGN I 8
    IEGN J 8 A_Scream
    IEGN K 6
    IEGN L 6 A_NoBlocking
    IEGN M 1
    IEGN N -1
	Stop
  }
}

ACTOR ILegendaryImpGhost : LegendaryImpGhost
{
States
{
Spawn:
    TNT1 A 1
    IEGN A 2 A_FadeOut(0.10)
    Goto Spawn+1
    }
}

Actor LegendaryImpRedBall : LegendaryImpBlueBall
{
	Damage 105
	Speed 9
	DECAL BFG9500LightningRed
	States
	{
	spawn:
       IIBB ABCD 3 Bright
	   TNT1 A 0 Bright A_SpawnItemEx("ILegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile("RedBallTrailA", 0, 0, 90, 0, 0)
       TNT1 A 0 Bright A_SpawnItemEx("ILegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile("RedBallTrailB", 0, 0, 90, 0, 0)
       TNT1 A 0 Bright A_SpawnItemEx("ILegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile("RedBallTrailC", 0, 0, 90, 0, 0)
       TNT1 A 0 Bright A_Playsound ("legball/fly")
	   Loop
    Death:
	    TNT1 A 0 Bright A_Explode(158,138)
		IIBE ABCDEFG 4
		TNT1 A 0 Bright Radius_Quake(20,12,0,12,0)
		Stop
		}
}

ACTOR RedBallTrailA : BlueBallTrailA
{ 
	States
	{
	Spawn:
		ILBB AAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.015)
		Wait
	}
}

ACTOR RedBallTrailB : BlueBallTrailA
{ 
	States
	{
	Spawn:
		ILBB BBBBBBBBBBBB 1 BRIGHT A_FadeOut(0.02)
		Wait
	}
}

ACTOR RedBallTrailC : BlueBallTrailA
{ 
	States
	{
	Spawn:
		ILBB CCCCCCCCCCCC 1 BRIGHT A_FadeOut(0.02)
		Wait
	}
}

ACTOR ILegBallAttack : LegBallAttack
{
Tag "\c[m6]Enraged\c- \c[z3]Legendary Imp\c-"
Obituary "%o was ravaged by an Enraged Legendary 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 0 A_MissileAttack
	TNT1 A 1 A_CustomRailgun(10,0,NONE,"Red",1,1,2)
	Goto Death	
Death:
	TNT1 A 1
	Stop
	}
}

ACTOR ILegendaryBallTrail : LegendaryBallTrail
{
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    IKBT GHIJKL 1 A_FadeOut(0.1)
	Stop
    }
}

ACTOR ILegendaryBall : LegendaryBall
{
    Speed 23
    Damage 23
	FastSpeed 30
    States
    {
    Spawn:
        IIM1 AB 1 Bright A_SpawnItemEx("ILegendaryBallTrail",0,0,2,0,0,0,0,128,0)
        Loop
    Death:
	    TNT1 A 0
	    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 AAA 0 A_CustomMissile("RHellionSmokeSpawner", 0, 0, random(0,360), 2, random(0,360))		
        IIM1 CDE 3 Bright
        Stop
    }   
}


ACTOR ILegImpSeekBall : LegImpSeekBall
{
    Speed 39
	FastSpeed 42
    Damage (Random(12,18))
    States
    {
    Spawn:
	    TNT1 A 0 A_SeekerMissile(12,0)
		TNT1 A 0 A_BishopMissileWeave
        IIM1 A 1 Bright A_SpawnItemEx("ILegImpSeekBallTrail",0,0,0,0,0,0,0,128,0)
		TNT1 A 0 A_BishopMissileWeave
        IIM1 B 1 Bright A_SpawnItemEx("ILegImpSeekBallTrail",0,0,0,0,0,0,0,128,0)
        Loop
    Death:
	    TNT1 A 0
	    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 AAA 0 A_CustomMissile("RedParticleSpawner", 0, 0, random(0,360), 2, random(0,360))	
        IIM1 CDE 3 Bright
        Stop
		}
}

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

ACTOR ILegImpLineSpawner : LegImpLineSpawner
{
States
{
Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 AAA 0 A_CustomMissile("RedSparkleSpawner",0,0,random(0,-360),2,random(0,360))
	TNT1 AAAAAAA 0 A_SpawnItemEx("RedPowerLine",random(32,-32),random(32,-32),random(8,48),0,0,random(1,4),0,128,0) 	
	TNT1 A 1 A_SpawnItemEx("RedPowerLine",random(32,-32),random(32,-32),random(8,48),0,0,random(1,4),0,128,0) 
    Stop  
    }
}