ACTOR LegendaryPhaseImp
{
	Health 999
	Radius 20
	Height 56
	Mass 100
	Speed 15
	PainChance 50
	Monster
	MeleeDamage 15
	DamageFactor "Legendary1", 0.0
	DamageFactor 0.75
	DamageFactor "Legendary", 0.0
	DamageFactor "LegendaryPlayer", 0.3
	DamageFactor "LegendaryGuru", 0.0
	DamageFactor "LegendaryGuruPlayer", 0.3
	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
	DropItem "LegendarySphere" 80 1
    DropItem "LegendaryPowerSphere" 85 1
	DropItem "LDemonAmmoBox" 250
	DropItem "LDemonAmmo" 250
	DropItem "BossLifeEssence" 256
	DropItem "BossArmorBonusMax" 256
	DropItem "Legendary Plasmatic Rifle" 45 1
	DropItem "LegendaryRune" 15 1
	Species "Imps"
	+NOTARGET
	+BOSS
	+BOSSDEATH
	+AVOIDMELEE
	+NOTIMEFREEZE
	+FLOORCLIP
	+QUICKTORETALIATE
	+MISSILEMORE
	+MISSILEEVENMORE
	+DONTHARMSPECIES
	+NOICEDEATH
	+DONTGIB
	+NORADIUSDMG
	SeeSound "LPhaseImp/sight"
	PainSound "LPhaseImp/pain"
	DeathSound "LPhaseImp/death"
	ActiveSound "LPhaseImp/active"
	Obituary "%o's blood was curdled by the Legendary Phase Imp."
	HitObituary "%o received a spine through %h heart by the Legendary Phase Imp."
	BloodColor "Blue"
	MeleeSound "imp/melee"
	var int user_music;
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DisableLegPhase") == 1, "Remove")
	Idle:
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
        LPHA A 10 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,31)
		TNT1 A 0 A_SetUserVar("user_music",1)
        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","Rush")
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA AA 3 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA BB 3 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA CC 3 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA DD 3 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		TNT1 A 0 A_Jump(46,"Phase")		
        Loop
	Rush:
		LPHA A 1 A_Chase
		LPHA A 0 A_Chase
		LPHA A 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA B 1 A_Chase
		LPHA A 0 A_Chase
		LPHA B 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA C 1 A_Chase
		LPHA A 0 A_Chase
		LPHA C 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA D 1 A_Chase
		LPHA A 0 A_Chase
		LPHA D 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA A 1 A_Chase
		LPHA A 0 A_Chase
		LPHA A 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA B 1 A_Chase
		LPHA A 0 A_Chase
		LPHA B 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA C 1 A_Chase
		LPHA A 0 A_Chase
		LPHA C 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA D 1 A_Chase
		LPHA A 0 A_Chase
		LPHA D 1 A_Chase
		LPHA A 0 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_Jump(48,"See")
        Loop
    Evade:
		TNT1 A 0 A_Jump(128,7)
		TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA AA 3 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA AA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
		TNT1 A 0 ThrustThing(Angle*256/360+192,16,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA AA 3 A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPHA AA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Phased:
        LPHA AABBCCDDAABBCCDD 1 A_ExtChase(0,0)
        LPHA AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_Chase
		TNT1 A 0 A_Jump(24,"UnPhase","PhasedRun")
        Goto Phased+32
    Melee:
        LPHA EF 5 A_FaceTarget
        LPHA G 5 A_MeleeAttack
        LPHA FE 5 A_FaceTarget		
        Goto See
    Missile:
		TNT1 A 0 A_Jump(128,"FastMissile")
		TNT1 A 0 A_Jump(64,"Surprise","Laser")
		TNT1 A 0 Bright A_PlaySound("LPhaseImp/attack",7)
        LPHA EF 6 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 4
        LPHA F 4 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),16,0,0)
		LPHA FEF 4
		TNT1 A 0 A_Stop
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 4
        LPHA F 4 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),16,0,0)
		LPHA FEF 4
		TNT1 A 0 A_Stop
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 4
        LPHA F 4 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FEF 3
		TNT1 A 0 A_Stop
        Goto See
	FastMissile:
		TNT1 A 0 Bright A_PlaySound("LPhaseImp/attack",7)
        LPHA EF 4 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 2
        LPHA F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),32,0,0)
		LPHA FEF 2
		TNT1 A 0 A_Stop
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 2
        LPHA F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),32,0,0)
		LPHA FEF 2
		TNT1 A 0 A_Stop
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 2
        LPHA F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 3 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FEF 3
		TNT1 A 0 A_Stop
        Goto See
    Laser:
		TNT1 A 0 Bright A_PlaySound("LPhaseImp/attack",7)
        LPHA EF 6 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
        LPHA G 4 Bright A_CustomMissile("LegPhaseLaser", 32, 0, 0)
		TNT1 A 0 A_Facetarget
		TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),32,0,0)
		LPHA F 6
		TNT1 A 0 A_MonsterRefire(64,"See")
		TNT1 A 0 A_Jump(100,"See")
        Goto Laser+1
	Surprise:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
        LPHA E 2 A_FaceTarget
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.55)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.35)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPHA E 1 A_SetTranslucent(0.15)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        Goto SurprisePhased
	SurprisePhased:
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		TNT1 A 0 A_JumpIfCloser(200,"SurpriseUnphase")
		TNT1 A 0 A_Jump(8,"Unphase")
        Loop
	SurpriseUnphase:
        TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 Bright A_PlaySound("LPhaseImp/Sight",7)
        LPHA EF 6 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		LPHA FE 4
        LPHA F 4 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
        LPHA G 5 Bright A_CustomMissile("LegImpSeekBall", 32, 0, 0)
		TNT1 A 0 A_Jump(128,"PhaseRun")
		Goto See
	Phase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
        LPHA E 2 A_FaceTarget
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.55)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.35)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPHA E 1 A_SetTranslucent(0.15)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        Goto Phased
	UnPhase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPHA E 1 A_SetTranslucent(0.15)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.35)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.55)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SetTranslucent(1)
        LPHA E 2 A_FaceTarget		
        Goto See
    Pain:
		TNT1 A 0 A_Jump(32,"PhaseRun")
        LPHA H 2
        LPHA H 2 A_Pain
        Goto See
	PhaseRun:
		TNT1 A 0 A_UnSetShootable
		TNT1 A 0 A_ChangeFlag(FRIGHTENED,1)
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
        LPHA E 2 A_FaceTarget
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.55)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.35)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPHA E 1 A_SetTranslucent(0.15)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        Goto PhasedRun
	PhasedRun:
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA A 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA B 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA C 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA A 0 A_ExtChase(0,0)
		LPHA D 1 A_ExtChase(0,0)
		LPHA 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("BHellionSmokeSpawner",0,0,0,0)
		LPHA E 1 A_SetTranslucent(0.15)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.35)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.55)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
        LPHA E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SetTranslucent(1)
        LPHA E 2 A_FaceTarget		
        Goto See
    Death:
        LPHA I 8 A_SetTranslucent(1)
        LPHA J 8 A_Scream
        LPHA K 6
        LPHA L 6 A_Fall
        LPHA M -1
        Stop
    XDeath:
		TNT1 A 0 A_SetTranslucent(1)
		LPHA N 3 
		LPHA O 3 A_XScream
		LPHA P 3 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
		LPHA Q 3 A_Fall
		LPHA RST 3
		LPHA U -1
        Stop
		}
}


Actor LegPhaseLaser : LegRedLaser
{
Damage 4
}