ACTOR LegendaryImp 16504
{
//$Category Monsters/LCA
//$Sprite LEGNA1
//$Title "Legendary Imp"
  Health 999
  Radius 20
  Height 56
  Mass 100
  Speed 8
  PainChance 50
  Monster
  MeleeDamage 15
  DamageFactor "Legendary1", 0.0
  DamageFactor 0.75
  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.125
  DamageFactor "PlayerDevTracer", 0.125
  DamageFactor "DBFG10K2", 0.65
  DamageFactor "PlayerDBFG10K2", 0.65
  DamageFactor "DBFG2", 0.65
  DamageFactor "PlayerDBFG2", 0.65
  DamageFactor "PlayerDTRG", 0.5
  DropItem "LegendarySphere" 90 1
  DropItem "LegendaryPowerSphere" 85 1
  DropItem "LDemonAmmoBox" 200
  DropItem "LDemonAmmo" 250
  DropItem "BossLifeEssence" 256
  DropItem "BossArmorBonusMax" 256
  DropItem "Legendary Plasmatic Rifle" 30 1
  Species "Imps"
  +Float
  +NOTARGET
  +BOSS
  +BOSSDEATH
  +AVOIDMELEE
  +NOTIMEFREEZE
  +NoGravity
  +FLOORCLIP
  +MISSILEMORE
  +QUICKTORETALIATE
  +MISSILEEVENMORE
  +DONTHARMSPECIES
  +DONTHURTSPECIES
  +NOICEDEATH
  +DONTGIB
  +NORADIUSDMG
  +NOFEAR
  SeeSound "legimp/sight"
  PainSound "legimp/pain"
  DeathSound "legimp/death"
  ActiveSound "legimp/active"
  HitObituary "%o was ripped into bloody pieces by a Legendary Imp."
  BloodColor "Blue"
  MeleeSound "imp/melee"
  Obituary "%o was slaughtered by a Legendary Imp."
  var int user_music;
  States
  {
  Spawn:
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
    LEGN A 10 Bright A_Look
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN Q 10 Bright A_Look
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	Loop
  See:
    TNT1 A 0 A_JumpIf(user_music == 1,3)
    TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,3)
	TNT1 A 0 A_SetUserVar("user_music",1)
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
    LEGN AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN DD 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",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
  AirDodge:
	 LEGN A 0 A_Jump(255,"Right","Left","Back","BackLeftRange","BackRightRange")
	 GoTo See
	Right:
	 LEGN A 0
	 LEGN A 0 ThrustThing(angle*256/360+64,30,0,0)
	 LEGN A 5 Bright
	 GoTo See
	Left:
	 LEGN A 0
	 LEGN A 0 ThrustThing(angle*256/360+192,30,0,0)
	 LEGN A 5 Bright
	 GoTo See
	Back:
	 LEGN A 0
	 LEGN A 0 ThrustThing(angle*256/360+128,30,0,0)
	 LEGN A 5 Bright
	 GoTo See
	BackLeftRange:
	 LEGN A 0
	 ELGN A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
	 LEGN A 5 Bright
	 GoTo See
	BackRightRange:
	 LEGN A 0
	 LEGN A 0 ThrustThing(angle*256/360+random(69,123),30,0,0)
	 LEGN A 5 Bright 
	 GoTo See
  Melee:
    LEGN EF 6 Bright A_FaceTarget
    LEGN F 5 Bright A_MeleeAttack
	Goto See
  Missile:
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_UnsetInvulnerable
    TNT1 A 0 A_SetTranslucent(1)
    TNT1 A 0 A_Jump(32,"Super")
    TNT1 A 0 A_Jump(64,"Seeker")
  Normal:
    LEGN EF 8 Bright A_FaceTarget
	LEGM F 1 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	TNT1 A 0 Bright A_CustomMissile("LegendaryBall", 28, 0, 0)
	TNT1 A 0 Bright A_CustomMissile("LegendaryBall", 28, 0, -5)
	TNT1 A 0 Bright A_CustomMissile("LegendaryBall", 28, 0, 5)
	TNT1 A 0 Bright A_CustomMissile("LegendaryBall", 28, 0, -10)
	TNT1 A 0 Bright A_CustomMissile("LegendaryBall", 28, 0, 10)
	TNT1 A 0 A_Jump(88,"Seeker")
	Goto See
  Seeker:
	LEGN EF 10 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",32,20,0)
    LEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",32,20,0)
    LEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",32,20,0)
	LEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",32,20,0)
    LEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",32,20,0)
    LEGM F 2 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("imp/attack")
	LEGM F 6 Bright A_CustomMissile("LegImpSeekBall",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
	LEGN E 0 Bright A_FaceTarget
	LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN E 0 Bright A_FaceTarget
	LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN E 0 Bright A_FaceTarget
	LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN E 0 Bright A_FaceTarget
	LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN E 0 Bright A_FaceTarget
	LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN F 0 Bright A_FaceTarget
	LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN F 0 Bright A_FaceTarget
	LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN F 0 Bright A_FaceTarget
	LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN F 0 Bright A_FaceTarget
	LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	LEGN F 0 Bright A_FaceTarget
	LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGM F 6 Bright A_CustomMissile ("LegendaryImpBlueBall",28,0,0)
	TNT1 A 0 Bright A_playSound ("legimp/fiyabetch")
	TNT1 A 0 A_UnsetInvulnerable
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	Goto See
  Rush:
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("LegendaryImpGhost")	
	LEGN A 1 Bright A_Chase
	TNT1 A 0 A_Jump(84,"See")
	Loop
  Teleport:
    LEGN A 1 Bright A_UnSetShootable
	LEGN AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN AAAAAAAAAA 1  A_FadeOut(0.1,0)
	LEGN A 2 
	LEGN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	LEGN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
    LEGN A 1 A_PlayWeaponSound("boss/teleport")
	LEGN AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN AAAAAAAAAA 1 A_FadeIn(0.1)
    LEGN A 1 Bright A_SetShootable
    Goto See		
  Pain:
    TNT1 A 0 A_Jump(50,"Teleport")
    LEGN H 2 Bright
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	LEGN H 2 Bright A_Pain
    TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	Goto See
  Death:
    TNT1 A 0 A_StopSound(6)
	LEGN I 8
    LEGN J 8 A_Scream
    LEGN K 6
    LEGN L 6 A_NoBlocking
    LEGN M 1
    LEGN N -1
	Stop
  }
}

ACTOR LegendaryImpGhost
{
Scale 1.1
Radius 20
Height 56
Speed 0
Alpha 0.7
PROJECTILE
RENDERSTYLE Translucent
+CLIENTSIDEONLY
+NOTIMEFREEZE
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    LEGN A 2 A_FadeOut(0.10)
    Goto Spawn+1
  Toaster:
    TNT1 A 0
	Stop		
    }
}

Actor LegendaryImpBlueBall
{
	Radius 8
	Height 3
	Damage 100
	DamageType "Legendary1"
	Speed 5
	DECAL BFG9500LightningBlue
	Projectile
	SeeSound "imp/attack"
	DeathSound "BFG9K/Explode"
	Renderstyle Add
	+RANDOMIZE
	+FORCERADIUSDMG
    +NOTIMEFREEZE
	Scale 1.2
	States
	{
	spawn:
       LIBB ABCD 3 Bright
       TNT1 A 0 Bright A_SpawnItemEx("LegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile(BlueBallTrailA, 0, 0, 0, 0, 0)
       TNT1 A 0 Bright A_SpawnItemEx("LegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile(BlueBallTrailB, 0, 0, 0, 0, 0)
       TNT1 A 0 Bright A_SpawnItemEx("LegBallAttack",0,-5,0,0,0,0,0,SXF_SETMASTER)
       TNT1 A 0 Bright A_CustomMissile(BlueBallTrailC, 0, 0, 0, 0, 0)
       TNT1 A 0 Bright A_Playsound ("legball/fly")
	   Loop
    Death:
	    TNT1 A 0 Bright A_Explode(158,138)
		LIBE ABCDEFG 4
		TNT1 A 0 Bright Radius_Quake(20,12,0,12,0)
		Stop
		}
}

ACTOR BlueBallTrailA
{ 
	+NOINTERACTION
    +NOTIMEFREEZE
	+CLIENTSIDEONLY
	RenderStyle Add
	Alpha 0.45
	Scale 0.5
	States
	{
	Spawn:
	   TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TLBB AAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.015)
		Wait
		  Toaster:
    TNT1 A 0
	Stop	
	}
}

ACTOR BlueBallTrailB : BlueBallTrailA
{ 
	States
	{
	Spawn:
	   TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TLBB BBBBBBBBBBBB 1 BRIGHT A_FadeOut(0.02)
		Wait
	}
}

ACTOR BlueBallTrailC : BlueBallTrailA
{ 
	States
	{
	Spawn:
	   TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TLBB CCCCCCCCCCCC 1 BRIGHT A_FadeOut(0.02)
		Wait
	}
}

ACTOR LegBallAttack
{
PROJECTILE
Obituary "%o was slaughtered by a Legendary Imp"
+LOOKALLAROUND
+ISMONSTER
+QUICKTORETALIATE
+NOTARGET
+NOCLIP
+NOTIMEFREEZE
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,"Blue",1,1,2)
	Goto Death	
Death:
	TNT1 A 1
	Stop
	}
}

ACTOR LegendaryBallTrail : NightBallTrail
{
Scale 0.8
+NOTIMEFREEZE
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    LKBT GHIJKL 1 A_FadeOut(0.1)
	Stop
    }
}

ACTOR LegendaryBall
{
    Radius 8
    Height 6
    Speed 20
    Damage 20
	Scale 0.8
	FastSpeed 25
    PROJECTILE
    RENDERSTYLE ADD
	Alpha 0.85
    SeeSound "Null"
    DeathSound "imp/shotx"
    Decal DoomImpScorch
    +NOTIMEFREEZE
    States
    {
    Spawn:
        LKB1 AB 1 Bright A_SpawnItemEx("LegendaryBallTrail",0,0,2,0,0,0,0,128,0)	
        Loop
    Death:
	    TNT1 A 0
	    TNT1 A 0 A_SpawnItemEx("LegendaryBlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 AAA 0 A_CustomMissile("LegendaryKaboom6", 0, 0, random(0,360), 2, random(0,360))
		TNT1 AAA 0 A_CustomMissile("LegendarySmokeFX4", 0, 0, random(0,360), 2, random(0,360))		
        LKB1 CDE 3 Bright
        Stop
    }   
}

ACTOR LegImpSeekBall
{
    Radius 8
    Height 8
    Speed 35
	FastSpeed 19
    Damage (Random(12,18))
    PROJECTILE
    +SEEKERMISSILE
	+RIPPER
	+NOBOSSRIP
	+BLOODLESSIMPACT
    +NOTIMEFREEZE
    DeathSound "phaseimp/shotx"
    RenderStyle Add
    Decal DoomImpScorch
    States
    {
    Spawn:
	    TNT1 A 0 A_SeekerMissile(12,0)
		TNT1 A 0 A_BishopMissileWeave
        LIM1 A 1 Bright A_SpawnItemEx("LegImpSeekBallTrail",0,0,0,0,0,0,0,128,0)
		TNT1 A 0 A_BishopMissileWeave
        LIM1 B 1 Bright A_SpawnItemEx("LegImpSeekBallTrail",0,0,0,0,0,0,0,128,0)
        Loop
    Death:
	    TNT1 A 0
	    TNT1 A 0 A_SpawnItemEx("LegendaryBlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 AAA 0 A_CustomMissile("LegendaryKaboom6", 0, 0, random(0,360), 2, random(0,360))
		TNT1 AAA 0 A_CustomMissile("LegendarySmokeFX4", 0, 0, random(0,360), 2, random(0,360))	
        LIM1 CDE 3 Bright
        Stop
		}
}

ACTOR LegImpSeekBallTrail : BFG9500Trail
{
Scale 1
+NOTIMEFREEZE
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    LIM1 GHIJKL 1 A_FadeOut(0.1)
	Stop
    }
}

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