ACTOR TerminatorPrototype : ClockworkCyberdemon
{ 
  Health 8000
  Radius 28 
  Height 86 
  Speed 12
  PainChance 10
  Scale 1.4
  -NOBLOOD
  Obituary "%o was a worthy candidate to be tested on by the Terminator Prototype."
  DropItem "DemonAmmoBox" 256 200
  DropItem "Explosive Minigun" 256 1
  DropItem "Demon Tech Devastator" 200 1
  DropItem "BossLifeEssence" 256
  DropItem "BossArmorBonusMax" 256
  DropItem "BFG10K " 256 1
  DropItem "UltraSphere" 128 1
  DamageFactor "T3rm", 0.0
  SeeSound "monster/termsit" 
  PainSound "monster/termpin" 
  DeathSound "monster/termdth"
  ActiveSound "Terminator/termact"
  Tag "\c[i7]Terminator Prototype\c-"
  var int user_amount;
  var int user_missile;
  States 
  { 
  Spawn: 
	ITRM A 10 A_Look
	Loop 
  See:
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_Jump(30,"Rush")
	ITRM A 0 A_PlaySound("Terminator/terstepA")
	ITRM AABB 3 A_Chase
	ITRM C 0 A_PlaySound("Terminator/terstepA")
	ITRM CCDD 3 A_Chase
	TNT1 A 0 A_Jump(40,"Teleport")
	Loop
  Rush:
	ITRM A 0 A_PlaySound("Terminator/terstepA")
	TNT1 A 0 A_Chase
	ITRM A 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM A 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM B 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM B 2 A_SpawnItemEx("InsaneTerminatorGhost")
	ITRM A 0 A_PlaySound("Terminator/terstepA")
	TNT1 A 0 A_Chase
	ITRM C 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM C 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM D 2 A_SpawnItemEx("InsaneTerminatorGhost")
	TNT1 A 0 A_Chase
	ITRM D 2 A_SpawnItemEx("InsaneTerminatorGhost")  
	TNT1 A 0 A_Jump(38,"Teleport")
	TNT1 A 0 A_Jump(75,"See")  	
	Loop
  Teleport:
	ITRM E 1 A_UnSetShootable
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EEEEEEEEEEE 1 A_FadeOut(0.1,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	ITRM E 1 A_PlayWeaponSound("boss/teleport")
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EEEEEEEEEEE 1 A_FadeIn(0.1)
	ITRM E 1 A_SetShootable
	Goto See
  Missile:
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_SetTranslucent(1)
	//TNT1 A 0 A_Jump(30,"Nuke")
	TNT1 A 0 A_Jump(192,"Railgun","BFG9K","BFG10K","DTBFG","RedStar","DTDevastator")
  ExplosiveMinigun:  	
	ITRM G 2 A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",10,-12,40,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	TNT1 A 0 A_PlaySound("sentient/fire",1)
	ITRM H 2 Bright A_CustomMissile("TerminatorExplosiveTracer",48,-17,frandom(-8,8))	
	TNT1 A 0 A_Jump(15,"See","Missile")
	TNT1 A 0 A_SpidRefire
	Loop
  Railgun:
	TNT1 A 0 A_PlaySound("weapons/rgcharge")
	TNT1 A 0 A_SetUserVar(user_missile,0)
	ITRM EE 10 A_FaceTarget
  RailgunLoop:
	TNT1 A 0 A_JumpIf(user_missile > 4,"RailgunEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	ITRM E 6 Bright A_FaceTarget
	ITRM F 4 Bright A_CustomMissile("CardinalRail",58,26,random(-2,3))
	Loop
  RailgunEnd:
	ITRM E 15
	TNT1 A 0 A_Jump(128,"BFG9K","BFG10K","DTBFG","RedStar","DTDevastator")
	Goto See  
  BFG9K:
	TNT1 A 0 A_PlaySound("weapons/bfgf")
	ITRM EEEEEEEEEEEEFFFF 2 A_FaceTarget
	ITRM F 10 Bright A_CustomMissile("TerminatorBFG9500Ball",48,15)
	ITRM E 8
	TNT1 A 0 A_Jump(128,"BFG10K","DTBFG","RedStar","DTDevastator")
	Goto See
  BFG10K:
	TNT1 A 0 A_PlaySound("weapons/charge15k")
	TNT1 A 0 A_SetUserVar(user_missile,0)
	ITRM JJJJJJJ 4 A_FaceTarget
  BFG10KLoop:
	TNT1 A 0 A_JumpIf(user_missile > 8,"BFG10KEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	ITRM J 4 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire",1)
	ITRM K 3 Bright A_CustomMissile("Cardinal10K",48,-15,random(-4,4))
	Loop
  BFG10KEnd:
	ITRM J 22 A_PlaySound("weapons/bfg15kcooldown",CHAN_AUTO)
	TNT1 A 0 A_Jump(128,"DTBFG","RedStar","DTDevastator")
	Goto See		
  DTBFG:
	TNT1 A 0 A_PlaySound("Cardinal/9k")
	ITRM EEEEEEEEEEEEFF 3 A_Facetarget
	ITRM F 12 Bright A_CustomMissile("CardinalDTBFG10KBall",48,15,random(-10,10))
	ITRM E 12
	TNT1 A 0 A_Jump(128,"RedStar","DTDevastator")
	Goto See	
  RedStar:
	TNT1 A 0 A_PlaySound("monster/termsit2",2)
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	TNT1 A 0 A_PlayWeaponSound("star/load1")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	TNT1 A 0 A_PlayWeaponSound("star/load2")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner") 
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM E 0 A_FaceTarget
	TNT1 A 0 A_PlayWeaponSound("star/load3")
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM E 0 A_FaceTarget
	ITRM EEEE 2 Bright A_SpawnItemEx("TerminatorLineSpawner")  	
   	TNT1 A 0 A_UnSetInvulnerable
	ITRM E 0 A_FaceTarget
	ITRM F 0 A_PlayWeaponSound("star/fire")
	ITRM F 7 Bright A_CustomMissile("TerminatorRedStar",48,17,0) 
	ITRM E 8 A_FaceTarget
	ITRM F 0 A_PlayWeaponSound("star/fire")
	ITRM F 7 Bright A_CustomMissile("TerminatorRedStar",48,17,0) 
	ITRM E 8	
   	ITRM E 2 A_Jump(128,"DTDevastator")
	Goto See
  DTDevastator:
	TNT1 A 0 A_PlaySound("monster/termsit2",2)
	TNT1 A 0 A_SetUserVar(user_missile,0)
	TNT1 A 0 A_SpawnItemEx("TerminatorLineSpawner")
    TNT1 A 0 A_PlaySound("devastator/charge")
  DevCharge:
	TNT1 A 0 A_JumpIf(user_missile > 55,"DevFire")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
    ITRM E 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	Loop
  DevFire:
    ITRM F 0 A_PlaySound("devastator/fire",1)
    ITRM F 10 Bright A_CustomMissile("TerminatorDevastator",48,17,0)
    ITRM E 50
	//TNT1 A 0 A_Jump(10,"Nuke")
    Goto See
  Nuke:
    TNT1 A 0 A_JumpIf(user_amount > 15,"Missile")
	TNT1 A 0 A_SetUserVar("user_amount",user_amount+1)
	TNT1 A 0 A_PlaySound("monster/termsit2",2)
	TNT1 A 0 A_PlaySound("weapons/nuclearmissilecharge2")
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget	
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM EE 2 A_Facetarget	
	TNT1 A 0 Bright A_SpawnItemEx("TerminatorLineSpawner")
	ITRM F 6 Bright A_CustomMissile("TerminatorEFGFusionNuke", 48, 17, 0)
	ITRM EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 2 Bright 
	Goto See
  Pain:
	ITRM L 3 	
	ITRM L 3 A_Pain
	TNT1 A 0 A_Jump(128,"Missile")
	Goto See   	
  Death:
	ITRM M 10 A_Scream
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",Random(10,-10),Random(10,-10),Random(20,60),0,0,0,0,128,0)	
	TNT1 AAA 0 A_CustomMissile("BigRedBloodCloud", random(10,80), 0, random(0,360), 2, random(0,360))	
	ITRM NNNOOO 5 Bright A_CustomMissile("Kaboom", random(10,60), random(30,-30), random(0,360), 2, random(0,360))
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",Random(10,-10),Random(10,-10),Random(20,60),0,0,0,0,128,0)	
	TNT1 AAA 0 A_CustomMissile("BigRedBloodCloud", random(10,80), 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_SpawnItemEx("EFGFusionNukeFX",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_CustomMissile("TerminatorEFGFusionNukeExplode",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
	ITRM PPPQQQ 2 Bright A_CustomMissile("Kaboom", random(10,60), random(30,-30), random(0,360), 2, random(0,360))  
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",Random(10,-10),Random(10,-10),Random(20,60),0,0,0,0,128,0)	
	TNT1 AAA 0 A_CustomMissile("BigRedBloodCloud", random(10,80), 0, random(0,360), 2, random(0,360))	
	ITRM SSSTTT 2 Bright A_CustomMissile("Kaboom", random(10,60), random(30,-30), random(0,360), 2, random(0,360))  
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",Random(10,-10),Random(10,-10),Random(20,60),0,0,0,0,128,0)	
	TNT1 AAA 0 A_CustomMissile("BigRedBloodCloud", random(10,80), 0, random(0,360), 2, random(0,360))	
	ITRM UUUVVV 2 Bright A_CustomMissile("Kaboom", random(10,60), random(30,-30), random(0,360), 2, random(0,360))  	
	ITRM W 4 
	ITRM X 6 A_Fall
	ITRM Y 6
	TNT1 A 0 A_PlaySound("terminator/terstepa")
	ITRM Z 6 
	ITRM "[" -1 A_KillMaster
	Stop
  	}
}

ACTOR TerminatorEFGFusionNuke : EFGFusionNuke
{
Speed 20
States
	{
	Death:
		TNT1 A 0 Bright //why do you need an invisible sprite to be rendered at full brightness? also what's the point of TNT1 A 0 at the beginning of a death state
		TNT1 A 0 Bright A_JumpIfInventory("Tic",1,"End") //there's no possible way "Tic" can be given before this check, why is it here?
		TNT1 A 0 Bright A_GiveInventory("Tic",1) //people wonder why we shit on HEM-custom a lot, this code is worse than breakarmor because it's overly complex for something absolutely useless
		TNT1 A 0 Bright A_SpawnItemEx("EFGFusionNukeFX",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0) //you don't need a clientside flag in A_SpawnItemEx and nocheckposition if the effect has +CLIENTSIDEONLY and +NOINTERACTION
		TNT1 A 0 Bright A_CustomMissile("TerminatorEFGFusionNukeExplode",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,0) //this is literally the only line that makes sense, and even that should've just been included in this death state rather than a separate actor
		TNT1 AAAAAAAA 3 Bright A_SpawnItemEx("WelderFlare",0,0,0,random(2,4),random(2,4),2,random(0,360),SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_SETMASTER,64) //yay GLDefs
		Stop
	}
}

Actor TerminatorEFGFusionNukeExplode : EFGFusionNukeExplode
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Explode(1024,256,0,1,256)
		TNT1 A 1 Bright ThrustThingZ(0,8,0,1)
		TNT1 A 1 Bright A_Explode(512,512,0,1,256)
		TNT1 A 1 Bright A_Explode(256,1024,0,0,256)
		TNT1 A 1 Bright A_Explode(128,2048,0,0,256)
		Stop
	}
}

ACTOR InsaneTerminatorGhost
{
  Scale 1.4
  Renderstyle Translucent
  Alpha 0.75
  +NOINTERACTION
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    ITRM A 2 A_FadeOut(0.18)
    Loop
    }
}