ACTOR TrueLegZombie
{ 
Health 1099
Radius 20
Height 56
Speed 10
Mass 100
PainChance 15
PainChance "ZombieDemonTech", 0
BloodColor "Blue"
DropItem "LegendaryArmor" 120 1
DropItem "LegAmmoSphere" 128 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" 55 1
DropItem "Legendary Plasmatic Rifle" 256 1
DropItem "DrainRune" 10
DropItem "LegendaryPowerShard" 60 1
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 0.65
DamageFactor "Legendary", 0.0
DamageFactor "LegendaryPlayer", 0.3
DamageFactor "LegendaryGuru", 0.0
DamageFactor "LegendaryGuruPlayer", 0.3
DamageFactor "DBFG10K2", 0.65
DamageFactor "PlayerDBFG10K2", 0.65
DamageFactor "DBFG2", 0.65
DamageFactor "PlayerDBFG2", 0.65
MONSTER 
+NOTIMEFREEZE
+BOSS
+BOSSDEATH
+FLOORCLIP
+MISSILEMORE
+MISSILEEVENMORE
+QUICKTORETALIATE
+NOICEDEATH
+NODROPOFF
+DONTGIB
+NOTARGET
+NORADIUSDMG
+FORCERADIUSDMG
+NOFEAR
SeeSound "TLegZomb/sight"
AttackSound "Null"
PainSound "TLegZomb/pain"
DeathSound "TLegZomb/death"
ActiveSound "TLegZomb/active"
Obituary "%o was exterminated by the True Legendary Zombie."
var int user_music;
var int user_protection;
var int user_protected;
States
{
Spawn:
    TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
    TLZO A 10 Bright A_Look
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TLZO Q 10 Bright A_Look
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
    Loop
See:
    TNT1 A 0 A_JumpIf(user_music == 1,3)
    TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,30)
	TNT1 A 0 A_SetUserVar("user_music",1)
    TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
    TLZO A 0 A_JumpIfTargetInLOS("Strafing")
    TLZO AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TLZO BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TLZO A 0 A_JumpIfTargetInLOS("Strafing")
	TLZO CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TLZO DD 3 Bright A_Chase
	TLZO A 0 A_Jump(80,"Rush")
    TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
    Loop
Rush:
    TLZO A 0 A_JumpIfTargetInLOS("Strafing")
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("TLegZombieGhostA",0,0,0,0,0,0,0,128)
	TLZO A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegZombieGhostA",0,0,0,0,0,0,0,128)
	TLZO A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegendaryZombieGhostB",0,0,0,0,0,0,0,128)
	TLZO B 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegendaryZombieGhostB",0,0,0,0,0,0,0,128)
	TLZO B 1 Bright A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
    TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("TLegZombieGhostC",0,0,0,0,0,0,0,128)
	TLZO C 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegZombieGhostC",0,0,0,0,0,0,0,128)
	TLZO C 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegendaryZombieGhostD",0,0,0,0,0,0,0,128)
	TLZO D 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("TLegendaryZombieGhostD",0,0,0,0,0,0,0,128)
	TLZO D 1 Bright A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Jump(84,"See")
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	Loop
Strafing:
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	TLZO AA 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	TLZO BB 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
    TLZO CC 2 Bright A_GiveInventory("TLegZombieStrafing",1)	
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	TLZO DD 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	Goto See
Pause:
	TLZO E 0 A_PlaySound("weapons/demontechsteam")
	TLZO EEEEEEEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	Goto See	
Missile:
	TNT1 A 0 A_Jump(40,"Railgun","SuperPlasma")
	TNT1 A 0 A_Jump(10,"Rage")
Plasma:
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_UnsetInvulnerable
    TNT1 A 0 A_SetTranslucent(1)
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("LegendaryProjectile",32,0,random(-4,4),0)
	TNT1 A 0 A_CustomMissile("LegendaryProjectile",32,0,random(-4,4),0)
	TLZO F 2 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
	TNT1 A 0 A_Jump(24,"Pause")
	TNT1 A 0 A_SpidRefire
    TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
	Goto Plasma+5
Railgun:
	TNT1 A 0 A_PlaySound("legendary/defense")
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("TLegZRailgunProj",32,0,random(-2,2),0)
	TLZO F 4 Bright A_PlayWeaponSound("monsters/darkcyberrail")
	TLZO E 2 Bright
	TNT1 A 0 A_Jump(256,"Plasma","See")
SuperPlasma:
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("SuperLegPlasma",32,0,random(-6,6),0)
	TLZO F 2 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
    TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("SuperLegPlasma",32,0,random(-6,6),0)
	TLZO F 2 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
    TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("SuperLegPlasma",32,0,random(-6,6),0)
	TLZO F 2 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
    TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_Jump(256,"Plasma","See")
Rage:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_Playsound("TLegZomb/Sight",7,1,0,ATTN_NONE)
	TNT1 A 0 A_PlaySound("legendary/defense")
	TLZO EEEEEEEEEEEEEEEEEEEEEEEEEEE 2 Bright A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
Rage2:
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_UnsetInvulnerable
    TNT1 A 0 A_SetTranslucent(1)
	TLZO EEE 2 Bright A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("TLegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("SuperLegPlasma",32,0,random(-4,4),0)
	TLZO F 2 Bright A_PlaySoundEx("weapons/DemonTechRifle","Weapon")
	TNT1 A 0 A_Jump(24,"Pause")
	TNT1 A 0 A_MonsterRefire(240,"See")
    TNT1 A 0 A_PlayWeaponSound("BlueDTRFire")
	Goto Rage2+5
Pain:
    TNT1 A 0 A_Jump(10,"Protection")
	TNT1 A 0 A_Jump(192,"PainMissile")
    TLZO G 2 Bright A_GiveInventory("TLegZombieStrafing",1)
    TLZO G 0 A_Pain
	TLZO GG 2 Bright A_GiveInventory("TLegZombieStrafing",1)
    Goto See
PainMissile: 
    TLZO G 2 Bright A_GiveInventory("TLegZombieStrafing",1)
    TLZO G 0 A_Pain
	TLZO GG 2 Bright A_GiveInventory("TLegZombieStrafing",1)
    Goto Missile	
Protection:
    TNT1 A 0 A_JumpIf(user_protection >= 3,"Pain")
	TNT1 A 0 A_JumpIf(user_protected == 1,"Pain")
	TNT1 A 0 A_PlaySound("legendary/defense")
	TNT1 A 0 A_FaceTarget
	TLZO E 2 Bright ACS_ExecuteAlways(5441,0,0,0,0)
	TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	Goto See	
Death:
    TNT1 A 0 A_StopSound(6)
	TLZO H 5 A_Scream
    TLZO I 5 A_Fall
    TLZO J 5 A_SpawnItem("BodyCrash",0,0,0,0)
    TLZO K 5 
    TLZO L -1 
	Stop
XDeath:
    TNT1 A 0 A_StopSound(6)
	TLZO O 3 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
    TLZO P 3 A_XScream
    TLZO R 3 A_Fall
    TLZO STUV 3 
    TLZO W -1 
    Stop
    }
}

ACTOR TLegZombieGhostA
{
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")
Fade:
    TNT1 A 1
    TLZO A 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR TLegendaryZombieGhostB : TLegZombieGhostA
{   
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
    TLZO B 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR TLegZombieGhostC : TLegZombieGhostA
{   
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
    TLZO C 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR TLegendaryZombieGhostD : TLegZombieGhostA
{   
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
    TLZO D 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR TLegendaryZombieGhostE : TLegZombieGhostA
{   
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
    TLZO E 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR TLegendaryZombieGhostF : TLegZombieGhostA
{   
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
    TLZO F 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

Actor TLegZombieStrafing : CustomInventory
{
  +INVENTORY.QUIET
  +INVENTORY.UNDROPPABLE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE       
  +COUNTITEM
  Inventory.Amount 1
  Inventory.MaxAmount 0
  +NOTIMEFREEZE
  States
  {
  Pickup:
    NULL A 1 
	NULL A 1 A_SpawnItem("BHellionSmokeSpawner",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,5,0,0)
	NULL A 1 A_Jump(256,2)	
	NULL A 1 ThrustThing(angle*256/360+38.7,-5,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 TLegZRailgunProj : FastProjectile
{
Radius 6
Height 6
Speed 300
Damage (Random(20,28))
DeathSound "cyberrail/impact"
DamageType "Legendary"
MissileType "LegRevRailgunTrail"
+RIPPER
+THRUSPECIES
+EXTREMEDEATH
+NOTIMEFREEZE
+BLOODLESSIMPACT
+NOTIMEFREEZE
States
{
Spawn:
    TNT1 A 1
    Loop
Death:
	TNT1 A 0
	TNT1 AA 0 A_CustomMissile("LegendarySmokeFX4",0,0,random(0,360),2,random(0,360))
    TNT1 AAAAAA 0 A_SpawnItemEx("BlueKaboom",random(-32,32),random(-40,40),random(8,16),random(-4,4),random(-4,4),random(0,4),0,SXF_TRANSFERPOINTERS)
	TNT1 A 1 A_SpawnItem("RailgunImpact")
	Stop
	}
}

Actor SuperLegPlasma : LegendaryProjectile
{
Projectile
Height 10
Radius 8
Scale 1
Speed 40
FastSpeed 60
Renderstyle Add
Damage (random(30,40))
Damagetype "Legendary"
States
	{
	Spawn:
		FNBE A 1 Bright A_SpawnItemEx("SuperLegPlasmaTrail",random(3,-3),random(3,-3),random(3,-3),random(1,-1),random(1,-1),random(1,-1),random(0,360))
		Loop
	Death:
		NULL A 0
		TNT1 A 0 A_Explode(120,120)
		NULL A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 AA 0 A_CustomMissile("LegendarySmokeFX4",0,0,random(0,360),2,random(0,360))
		TNT1 AAAAAA 0 A_SpawnItemEx("BlueKaboom",random(-32,32),random(-40,40),random(8,16),random(-4,4),random(-4,4),random(0,4),0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItem("RailgunImpact")
		TNT1 AAAAAAAAAA 0 A_CustomMissile("BouncyLegProjectile", 0, 0, random(0,360), 2, random(0,360))
		FNBE AAAAAAAAAAAAA 2 Bright A_FadeOut(0.1)
		Stop
	}
}

Actor SuperLegPlasmaTrail : AHellionSmoke
{
Scale 0.8
RenderStyle Add
States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    FNBE AAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.05,1)
    Stop
  Toaster:
    TNT1 A 0
    Stop
  }
}

Actor BouncyLegProjectile : LegendaryProjectile
{
Speed 20
Bouncetype Hexen
Bouncecount 3
}