ACTOR LegendaryZombie 16500
{ 
//$Category Monsters/LCA
//$Sprite LPOSA1
//$Title "Legendary Zombie"
MONSTER
Health 999
Height 56
Radius 20
Mass 100
Speed 10
BloodColor "Blue"
PainChance 15
PainChance "ZombieDemonTech", 0
DamageFactor "LegendaryZombie", 0.0
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 "LegendaryGuruPlayer", 0.3
DamageFactor 0.75
//No infighting
DamageFactor "Legendary", 0.0
DamageFactor "LegendaryPlayer", 0.3
DamageFactor "LegendaryGuru", 0.0
+BOSS
+NOFEAR
+BOSSDEATH
+NOTIMEFREEZE
+FLOORCLIP
+MISSILEMORE
+MISSILEEVENMORE
+QUICKTORETALIATE
+NOICEDEATH
+NODROPOFF
+DONTGIB
+NOTARGET
+NORADIUSDMG
+FORCERADIUSDMG
DropItem "LegendaryArmor", 85, 1
DropItem "LegAmmoSphere", 88, 1
DropItem "LegendaryPowerShard", 35, 1
DropItem "HandGrenadeAmmo", 235, 2
DropItem "MineAmmo", 235, 2
DropItem "Backpack", 198, 1
DropItem "Armorplate", 205, 1
DropItem "Portablemedkit", 210, 1
DropItem "LDemonAmmoBox", 200 
DropItem "LDemonAmmo", 250 
DropItem "LegendaryRune", 30, 1
DropItem "Legendary Plasmatic Rifle", 155, 1
SeeSound "legzom/sight"
AttackSound "Null"
PainSound "legzom/pain"
DeathSound "legzom/death"
ActiveSound "legzom/active"
Obituary "%o was obliterated by a Legendary Zombie."
Tag "\c[z3]Legendary Zombie\c-"
var int user_music;
var int user_protection;
var int user_protected;
States
	{
	Spawn:
		LPOS A 10 Bright A_Look
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPOS 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,1)
		TNT1 A 0 A_SetUserVar("user_music",1)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
		LPOS AA 3 Bright A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPOS BB 3 Bright A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
		LPOS CC 3 Bright A_Chase
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		LPOS DD 3 Bright A_Chase
		TNT1 A 0 A_Jump(80,"Rush")
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		Loop
	Rush:
		TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS A 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS A 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS B 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS B 1 Bright A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS C 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS C 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS D 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("LegendaryZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		LPOS D 1 Bright A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_Jump(84,"See")
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		Loop
	Strafing:
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		LPOS AA 3 Bright A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		LPOS BB 3 Bright A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		LPOS CC 3 Bright A_GiveInventory("LegZombieStrafing",1)	
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		LPOS DD 3 Bright A_GiveInventory("LegZombieStrafing",1)
		Goto See
	Pause:
		TNT1 A 0 A_PlaySound("weapons/demontechsteam")
		LPOS EEEEE 3 Bright A_GiveInventory("LegZombieStrafing",1)
		Goto See	
	Missile:
		TNT1 A 0 A_SetShootable
		TNT1 A 0 A_UnsetInvulnerable
		TNT1 A 0 A_SetTranslucent(1)
		LPOS EE 3 Bright A_GiveInventory("LegZombieStrafing",1)
	MissileLoop:
		LPOS E 3 Bright A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_CustomMissile("LegendaryProjectile",32,0,random(-2,2),0)
		LPOS F 3 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
		TNT1 A 0 A_Jump(24,"Pause")
		TNT1 A 0 A_SpidRefire
		TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
		Loop
	Pain:
		TNT1 A 0 A_Jump(10,"Protection")
	Pain2:
		TNT1 A 0 A_Jump(192,"PainMissile")
		LPOS G 3 Bright A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_Pain
		LPOS G 3 Bright A_GiveInventory("LegZombieStrafing",1)
		Goto See
	PainMissile: 
		LPOS G 3 Bright A_GiveInventory("LegZombieStrafing",1)
		TNT1 A 0 A_Pain
		LPOS G 3 Bright A_GiveInventory("LegZombieStrafing",1)
		Goto Missile	
	Protection:
		TNT1 A 0 A_JumpIf(user_protection >= 3,"Pain2")
		TNT1 A 0 A_JumpIf(user_protected == 1,"Pain2")
		TNT1 A 0 A_PlaySound("legendary/defense")
		TNT1 A 0 A_FaceTarget
		LPOS E 2 Bright ACS_NamedExecuteAlways("LegendaryProtection",0,0,0,0)
		TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		Goto See	
	Death:
		TNT1 A 0 A_Jump(36,"LegendarySoul")
		TNT1 A 0 A_StopSound(6)
		LPOS H 5 A_Scream
		LPOS I 5 A_Fall
		LPOS J 5 A_SpawnItem("BodyCrash",0,0,0,0)
		LPOS K 5 
		LPOS L 63000 CanRaise
		Stop
	LegendarySoul:
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPOS H 5 A_Scream
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPOS I 5 A_Fall
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPOS J 5 A_SpawnItem("BodyCrash",0,0,0,0)
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPOS K 5 
		TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
		LPOS L 140
		TNT1 A 0 A_PlaySoundEx("brain/spit","Voice",0,2)
		LPOS LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("LegSoulEvent",1)
		LPOS LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("LegSoulEvent",1)
		LPOS LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("LegSoulEvent",1)
		TNT1 A 0 A_SpawnItemEx("LegendarySoul",0,0,16,0,0,0,0,32)
		TNT1 A 0 A_SpawnItemEx("TeleportFog",0,0,16,0,0,0,0,32)
		LPOS L 525
		LPOS L 5 A_FadeOut(0.1,1)
		Wait
	XDeath:
		TNT1 A 0 A_StopSound(6)
		LPOS O 3 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
		LPOS P 3 A_XScream
		LPOS R 3 A_Fall
		LPOS STUV 3 
		LPOS W 63000 CanRaise
		Stop
	}
}

ACTOR LegendaryZombieGhostA
{
PROJECTILE
Height 56
Radius 20
Speed 0
Scale 1.1
RENDERSTYLE Translucent
Alpha 0.7
+NOTIMEFREEZE
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		Goto Fade
	Fade:
		LPOS A 2 A_FadeOut(0.1,1)
		Loop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR LegendaryZombieGhostB : LegendaryZombieGhostA
{   
States
	{
	Fade:
		LPOS B 2 A_FadeOut(0.1,1)
		Loop
	}
}

ACTOR LegendaryZombieGhostC : LegendaryZombieGhostA
{   
States
	{
	Fade:
		LPOS C 2 A_FadeOut(0.1,1)
		Loop
	}
}

ACTOR LegendaryZombieGhostD : LegendaryZombieGhostA
{   
States
	{
	Fade:
		LPOS D 2 A_FadeOut(0.1,1)
		Loop
	}
}

ACTOR LegendaryZombieGhostE : LegendaryZombieGhostA
{   
States
	{
	Fade:
		LPOS E 2 A_FadeOut(0.1,1)
		Loop
	}
}

ACTOR LegendaryZombieGhostF : LegendaryZombieGhostA
{   
States
	{
	Fade:
		LPOS F 2 A_FadeOut(0.1,1)
		Loop
	}
}

Actor LegZombieStrafing : CustomInventory
{
-COUNTITEM
+NOTIMEFREEZE
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE       
Inventory.Amount 1
Inventory.MaxAmount 0
States
	{
	Pickup:
		NULL A 1 
		NULL A 1 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
		NULL A 1 A_Jump(188,2)
		NULL A 1 A_GiveInventory("LegZombieJumping",1)
		NULL A 1 A_JumpIf(velx != 0 || vely != 0,2)
		NULL A 1 A_Jump(256,2)
		NULL A 1 A_Jump(235,5)
		NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
		NULL A 1 A_GiveInventory("LegZombieStrafeSens",1)
		NULL A 1 A_Jump(256,2)	
		NULL A 1 A_TakeInventory("LegZombieStrafeSens",1)
		NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
		NULL A 1 ThrustThing(angle*256/360+38.7,3,0,0)
		NULL A 1 A_Jump(256,2)	
		NULL A 1 ThrustThing(angle*256/360+38.7,-3,0,0)
		NULL A 1 A_FaceTarget
		NULL A 1 A_Jump(24,2)
		NULL A 1 A_JumpIfCloser(300,2)
		NULL A 1 A_Recoil(-1)
		Stop
		NULL A 1 A_Recoil(1)
		Stop	
	}
}

Actor LegZombieJumping : LegZombieStrafing
{
+NOTIMEFREEZE
States
	{
	Pickup:
		NULL A 1 
		NULL A 1 A_CheckFloor(1)
		Stop
		NULL A 1 A_Jump(242,2)
		NULL A 1 ThrustThingZ(0,25,0,1)
		Stop
		NULL A 1 Bright
		Stop
	}
}

ACTOR LegZombieStrafeSens : Inventory{Inventory.MaxAmount 1}