ACTOR LegendaryImp 16504
{
//$Category Monsters/LCA
//$Sprite LEGNA1
//$Title "Legendary Imp"
Monster
Health 999
Radius 20
Height 56
Mass 100
Speed 8
BloodColor "Blue"
PainChance 50
MeleeDamage 15
+BOSS
+BOSSDEATH
+NOICEDEATH
+NOFEAR
+Float
+NoGravity
+FLOORCLIP
+AVOIDMELEE
+MISSILEMORE
+MISSILEEVENMORE
+QUICKTORETALIATE
+DONTGIB
+NOTARGET
+NORADIUSDMG
+NOTIMEFREEZE
+DONTHURTSPECIES
+DONTHARMSPECIES
Species "Imps"
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
DamageFactor "LegendaryPlayer", 0.3
DamageFactor "LegendaryGuruPlayer", 0.3
DamageFactor 0.75
//No infighting
DamageFactor "Legendary1", 0.0
DamageFactor "Legendary", 0.0
DamageFactor "LegendaryGuru", 0.0
DropItem "BossLifeEssence", 256
DropItem "BossArmorBonusMax", 256
DropItem "LegendarySphere", 90, 1
DropItem "LegendaryPowerSphere", 85, 1
DropItem "LDemonAmmoBox", 200
DropItem "LDemonAmmo", 250
DropItem "Legendary Plasmatic Rifle", 30, 1
SeeSound "legimp/sight"
ActiveSound "legimp/active"
MeleeSound "imp/melee"
PainSound "legimp/pain"
DeathSound "legimp/death"
Obituary "%o was slaughtered by a Legendary Imp."
HitObituary "%o was ripped into bloody pieces by a Legendary Imp."
var int user_music;
States
	{
	Spawn:
		LEGN A 10 Bright A_Look
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LEGN Q 10 Bright A_Look
		TNT1 AA 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:
		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)
		LEGN A 5 Bright
		GoTo See
	Left:
		TNT1 A 0
		TNT1 A 0 ThrustThing(angle*256/360+192,30,0,0)
		LEGN A 5 Bright
		GoTo See
	Back:
		LEGN A 0
		TNT1 A 0 ThrustThing(angle*256/360+128,30,0,0)
		LEGN A 5 Bright
		GoTo See
	BackLeftRange:
		TNT1 A 0
		TNT1 A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
		LEGN A 5 Bright
		GoTo See
	BackRightRange:
		TNT1 A 0
		TNT1 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
		TNT1 A 0 Bright A_FaceTarget
		LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN EEEEE 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 0 Bright A_FaceTarget
		LEGN FFFFF 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
		TNT1 A 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
		TNT1 AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LEGN AAAAAAAAAA 1 Bright A_FadeOut(0.1,0)
		LEGN A 2 Bright
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
		LEGN A 1 Bright A_PlayWeaponSound("boss/teleport")
		TNT1 AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LEGN AAAAAAAAAA 1 Bright 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 AAA 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 63000 CanRaise
		Stop
	}
}

ACTOR LegendaryImpGhost
{
PROJECTILE
Height 56
Radius 20
Speed 0
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:
		LEGN A 2 A_FadeOut(0.1,1)
		Loop
	Toaster:
		TNT1 A 1 Bright
		Stop		
	}
}

Actor LegendaryImpBlueBall
{
Projectile
Height 3
Radius 8
Speed 5
DECAL "BFG9500LightningBlue"
Scale 1.2
Renderstyle Add
Damage 100
+RANDOMIZE
+NOTIMEFREEZE
+FORCERADIUSDMG
+FORCEXYBILLBOARD
DamageType "Legendary1"
SeeSound "imp/attack"
DeathSound "BFG9K/Explode"
States
	{
	Spawn:
		TNT1 A 0 Bright A_Playsound("legball/fly",6,1.0,1)
		LIBB A 3 Bright
		LIBB B 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)
		LIBB C 3 Bright
		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)
		LIBB D 3 Bright
		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)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 AAA 0 Bright A_StopSound(6)
		TNT1 A 0 Bright A_Explode(158,138,0)
		TNT1 A 0 Bright Radius_Quake(20,12,0,12,0)
		LIBE ABCDEFG 4
		Stop
	}
}

ACTOR BlueBallTrailA
{
Height 1
Radius 1
Speed 0
Scale 0.5
RenderStyle Add
Alpha 0.45
+NOTIMEFREEZE
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		Goto Fade
	Fade:
		TLBB A 1 Bright A_FadeOut(0.02,1)
		Loop
	Toaster:
		TNT1 A 1 Bright
		Stop	
	}
}

ACTOR BlueBallTrailB : BlueBallTrailA
{ 
States
	{
	Fade:
		TLBB B 1 Bright A_FadeOut(0.02,1)
		Loop
	}
}

ACTOR BlueBallTrailC : BlueBallTrailA
{
States
	{
	Fade:
		TLBB C 1 Bright A_FadeOut(0.02,1)
		Loop
	}
}

ACTOR LegBallAttack
{
PROJECTILE
+ISMONSTER
-COUNTKILL
+LOOKALLAROUND
+QUICKTORETALIATE
+NOTARGET
+NOCLIP
+NOTIMEFREEZE
Obituary "%o was slaughtered by a Legendary Imp"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AAAAA 1 Bright A_LookEx(LOF_NOSOUNDCHECK|LOF_NOSEESOUND,0,1250,0,360,"Attack")
		Goto Death
	Attack:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_FaceTarget
		TNT1 A 0 Bright A_MissileAttack
		TNT1 A 1 Bright A_CustomRailgun(10,0,NONE,"Blue",1,1,2)
		Goto Death
	Death:
		TNT1 A 1 Bright
		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,1)
		Stop
	}
}

ACTOR LegendaryBall
{
PROJECTILE
Radius 8
Height 6
Speed 20
FastSpeed 25
Scale 0.8
RENDERSTYLE ADD
Alpha 0.85
Decal "DoomImpScorch"
Damage 20
SeeSound "Null"
DeathSound "imp/shotx"
+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
{
PROJECTILE
Radius 8
Height 8
Speed 35
FastSpeed 19
Decal DoomImpScorch
RenderStyle Add
Damage (Random(12,18))
+SEEKERMISSILE
+RIPPER
+NOBOSSRIP
+BLOODLESSIMPACT
+NOTIMEFREEZE
DeathSound "phaseimp/shotx"
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,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  
	}
}