
// TERMINATOR
//

ACTOR RLTerminator : RLWildcardBossBase 16613
{
  Health 7000
  Radius 24
  Height 64
  Speed 12
  Scale 1.25
  Mass 8500
  
  MeleeRange 102
  PainChance 128
  PainThreshold 250
  
  DamageFactor "Melee", 1.5
  DamageFactor "Holy", 1.5
  DamageFactor "Unholy", 0.50
  Species "RLTerminator"
  
  SeeSound "terminator/sight"
  ActiveSound "terminator/sight"
  PainSound "terminator/pain"
  DeathSound "terminator/death"
  
  Obituary "%o was overwhelmed by the tactical superiority of the Terminator."
  HitObituary "%o got totally rekt by a Terminator."
  Tag "Terminator"
    //$category "MP Technophobia"
  
	// Guncaster compatibility
	DropItem "TreasureChest"
	DropItem "TreasureChest"
  
  var int user_pulsewavecount;
  var int user_deathtimer;
  States
  {
   Spawn: 
       TERM C 10 A_Look 
       Loop
	   
   See:
       TNT1 A 0 A_Playsound("rlmonsters/metalhoof", CHAN_BODY, 1, 0, 0.7)
       TERM AABB 4 A_Chase ("", "Missile")
       TNT1 A 0 A_Playsound("rlmonsters/metalhoof", CHAN_BODY, 1, 0, 0.7)
       TERM CCDD 4 A_Chase ("", "Missile")
       Loop
	   
   MissileProper:
       TNT1 A 0 A_JumpIfCloser(1024, 1)
	   Goto ParticleBeam
       TNT1 A 0 A_JumpIfCloser(618, 2)
       TNT1 A 0 A_Jump(64, "ParticleBeam")
	   Goto MachinegunStart
       TNT1 A 0 A_JumpIfCloser(192, 3)
       TNT1 A 0 A_Jump(192, "GrenadeChoice", "Rockets")
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, "MachinegunStart")
	   Goto Pulsewave
       TNT1 A 0 A_Jump(60, "MachinegunStart")
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, "MachinegunStart")
	   Goto Pulsewave
	   
   Rockets:
       TNT1 A 0 A_Jump(60, "Bombardment")
	   TNT1 A 0 A_PlaySound ("terminator/missilelaunch", CHAN_VOICE, 1, 0, 0.7)
       TERM EEEEE 5 A_FaceTarget
       TNT1 A 0 A_FaceTarget
       TERM F 4 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-4,4), CMF_OFFSETPITCH, frandom(-3,3))
       TERM E 2 A_FaceTarget
       TERM F 4 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-4,4), CMF_OFFSETPITCH, frandom(-3,3))
       TERM E 2 A_FaceTarget
       TERM F 4 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-4,4), CMF_OFFSETPITCH, frandom(-3,3))
       TERM E 2 A_FaceTarget
       TERM F 4 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-4,4), CMF_OFFSETPITCH, frandom(-3,3))
       TERM E 2 A_FaceTarget
       TERM F 4 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-4,4), CMF_OFFSETPITCH, frandom(-3,3))
       TERM E 20 A_FaceTarget
       Goto See
   Bombardment:
	   TNT1 A 0 A_PlaySound ("terminator/bombardment", CHAN_VOICE, 1, 0, 0.7)
       TERM EEEEEEE 5 A_FaceTarget
       TNT1 A 0 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 1 A_FaceTarget
       TERM F 2 Bright A_CustomMissile("RLTerminatorMissile", 40, 18, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
       TERM E 20 A_FaceTarget
       Goto See
	   
   GrenadeChoice:
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorFlashGrenadeCooldown", 1, 2)
       TNT1 A 0 A_Jump(128, "FlashGrenade")
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorNapalmGrenadeCooldown", 1, 2)
       TNT1 A 0 A_Jump(128, "NapalmGrenade")
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorPlasmaGrenadeCooldown", 1, 2)
       TNT1 A 0 A_Jump(128, "PlasmaGrenade")
       TNT1 A 0 A_Jump(128, "MachinegunStart")
	   Goto Pulsewave
   GrenadeChoiceOnly:
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorFlashGrenadeCooldown", 1, 2)
       TNT1 A 0 A_Jump(128, "FlashGrenade")
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorNapalmGrenadeCooldown", 1, 2)
       TNT1 A 0 A_Jump(128, "NapalmGrenade")
       TNT1 A 0 A_JumpIfInventory("PowerRLTerminatorPlasmaGrenadeCooldown", 1, "See")
       TNT1 A 0 A_Jump(128, "PlasmaGrenade")
	   Goto See
   NapalmGrenade:
	   TNT1 A 0 A_PlaySound ("terminator/grenadelaunch", CHAN_VOICE, 1, 0, 0.7)
       TERM E 14 A_FaceTarget
       TNT1 A 0 A_FaceTarget
       TERM F 8 Bright A_CustomMissile("RLTerminatorNapalmGrenade", 38, 15, frandom(-1,1), CMF_OFFSETPITCH, frandom(8,16))
       TERM E 8 A_FaceTarget
       Goto See
   PlasmaGrenade:
	   TNT1 A 0 A_PlaySound ("terminator/grenadelaunch", CHAN_VOICE, 1, 0, 0.7)
       TERM E 14 A_FaceTarget
       TNT1 A 0 A_FaceTarget
       TERM F 8 Bright A_CustomMissile("RLTerminatorPlasmaGrenade", 38, 15, frandom(-1,1), CMF_OFFSETPITCH, frandom(8,16))
       TERM E 8 A_FaceTarget
       Goto See
   FlashGrenade:
	   TNT1 A 0 A_PlaySound ("terminator/grenadelaunch", CHAN_VOICE, 1, 0, 0.7)
       TERM E 14 A_FaceTarget
       TNT1 A 0 A_FaceTarget
       TERM F 8 Bright A_CustomMissile("RLTerminatorFlashGrenade", 38, 15, frandom(-1,1), CMF_OFFSETPITCH, frandom(8,16))
       TERM E 8 A_FaceTarget
       Goto See
	   
   MachinegunStart:
       TERM G 12 A_Facetarget
       TNT1 A 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "MachinegunCheck") // Fallback check just in case
   Machinegun:
   RepeatProper:
       TNT1 A 0 A_JumpIfInventory("RLTerminatorGunState", 1, "Machinegun2")
       TNT1 A 0 A_GiveInventory("RLTerminatorGunState", 1)
       TNT1 A 0 A_Playsound("rlmonsters/bulletstormrifle")
       TNT1 A 0 A_FaceTarget
       TERM H 1 Bright A_CustomBulletAttack (15, 8, 1, 7, "RLEnemyBulletPuffNoInfight")
       TERM G 3 A_Facetarget
       TNT1 A 0 A_MonsterRefire (180, "MachinegunEnd")
       TNT1 A 0 A_JumpIfCloser(1024, 1)
       Goto ParticleBeam
       TNT1 A 0 A_JumpIfCloser(618, 1)
       Goto RepeatFriendlyCheck
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, 2)
       TNT1 A 0 A_JumpIfCloser(192, "SwitchPulsewave")
       TNT1 A 0 A_Jump (10, "SwitchGrenades")
       Goto RepeatFriendlyCheck
   Machinegun2:
       TNT1 A 0 A_TakeInventory("RLTerminatorGunState", 1)
       TNT1 A 0 A_Playsound("rlmonsters/bulletstormrifle")
       TNT1 A 0 A_FaceTarget
       TERM I 1 Bright A_CustomBulletAttack (15, 8, 1, 7, "RLEnemyBulletPuffNoInfight")
       TERM G 3 A_Facetarget
       TNT1 A 0 A_MonsterRefire (180, "MachinegunEnd")
       TNT1 A 0 A_JumpIfCloser(1024, 1)
       Goto ParticleBeam
       TNT1 A 0 A_JumpIfCloser(618, 1)
       Goto RepeatFriendlyCheck
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, 2)
       TNT1 A 0 A_JumpIfCloser(192, "SwitchPulsewave")
       TNT1 A 0 A_Jump (10, "SwitchGrenades")
       Goto RepeatFriendlyCheck
   MachinegunEnd:
       TERM G 8 A_Facetarget
       Goto See
	   
   SwitchPulsewave:
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, "MachinegunStart")
       TERM G 2 A_Facetarget
	   TNT1 A 0 A_PlaySound ("terminator/changeweapon1", 7, 1, 0, 0.8)
       TERM GJ 8 A_Facetarget
	   Goto Pulsewave
   SwitchGrenades:
       TERM G 2 A_Facetarget
	   TNT1 A 0 A_PlaySound ("terminator/changeweapon2", 7, 1, 0, 0.8)
       TERM GE 8 A_Facetarget
	   Goto GrenadeChoiceOnly
	   
   Pulsewave:
	   TNT1 A 0 A_JumpIfInventory ("RLTerminatorPulsewaveCooldown", 1, "MachinegunStart")
       TERM J 2 A_Facetarget
	   TNT1 A 0 A_PlaySound ("terminator/fireparticlebeam", CHAN_VOICE, 1, 0, 0.7)
       TNT1 A 0 A_SetUserVar("user_pulsewavecount", 0)
       TERM J 16 A_Facetarget
   PulsewaveLoop:
       TNT1 A 0 A_FaceTarget
       TNT1 AAA 0 A_CustomMissile ("RLTerminatorPulseSilent", 42, -18, frandom(-20,20), CMF_OFFSETPITCH, frandom(-12,12))
       TERM K 1 Bright A_CustomMissile("RLTerminatorPulse", 42, -18, frandom(-20,20), CMF_OFFSETPITCH, frandom(-12,12))
       TNT1 A 0 A_SetUserVar("user_pulsewavecount", user_pulsewavecount+1)
       TNT1 A 0 A_JumpIf (user_pulsewavecount >= 36, "PulsewaveEnd")
       TNT1 A 0 A_JumpIfCloser(512, 1)
       Goto PulsewaveEnd
       TNT1 A 0 A_Jump (5, "PulsewaveEnd")
       TNT1 A 0 A_MonsterRefire (0, "PulsewaveEnd")
       Goto PulsewaveLoop
   PulsewaveEnd:
	   TNT1 A 0 A_GiveInventory ("RLTerminatorPulsewaveCooldown", 1)
	   TNT1 A 0 A_PlaySound ("terminator/pulsewaveoverheat", 7, 1, 0, 0.8)
       TERM JJJJ 8 A_Facetarget
       Goto See
	   
   ParticleBeam:
       TERM J 5 A_FaceTarget
	   TNT1 A 0 A_PlaySound ("terminator/chargelaser", 7, 1, 0, 0.6)
       TERM J 30 A_FaceTarget
       TNT1 A 0 A_JumpIfCloser(2048, 1)
       Goto ParticleBeam2
       TERM J 4 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.6, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 8 A_FaceTarget
       TERM KK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.6, 0, 0, 1, 0.75, 0, "none", 10)
       TNT1 A 0 A_PlaySound("rlmonsters/particlebeam", CHAN_WEAPON, 2, 0, 0.2)
       TNT1 A 0 A_CustomRailgun (random(25,50), -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 0, "RLParticleBeamPuffTerminator", -0.6, 0, 0, 0, 0.2, 1, "RLParticleBeamCoreRed", 10)
       TERM KKKKKKKKKKKKKK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.6, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 2 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.6, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 10 A_FaceTarget
       Goto PulsewaveEnd
   ParticleBeam2:
       TNT1 A 0 A_JumpIfCloser(4096, 1)
       Goto ParticleBeam3
       TERM J 4 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.4, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 8 A_FaceTarget
       TERM KK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.4, 0, 0, 1, 0.75, 0, "none", 10)
       TNT1 A 0 A_PlaySound("rlmonsters/particlebeam", CHAN_WEAPON, 2, 0, 0.2)
       TNT1 A 0 A_CustomRailgun (random(25,50), -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 0, "RLParticleBeamPuffTerminator", -0.4, 0, 0, 0, 0.2, 1, "RLParticleBeamCoreRed", 10)
       TERM KKKKKKKKKKKKKK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.4, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 2 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.4, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 10 A_FaceTarget
       Goto PulsewaveEnd
   ParticleBeam3:
       TERM J 4 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.2, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 8 A_FaceTarget
       TERM KK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.2, 0, 0, 1, 0.75, 0, "none", 10)
       TNT1 A 0 A_PlaySound("rlmonsters/particlebeam", CHAN_WEAPON, 2, 0, 0.2)
       TNT1 A 0 A_CustomRailgun (random(25,50), -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 0, "RLParticleBeamPuffTerminator", -0.2, 0, 0, 0, 0.2, 1, "RLParticleBeamCoreRed", 10)
       TERM KKKKKKKKKKKKKK 1 Bright A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.2, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 2 A_FaceTarget
       TNT1 A 0 A_CustomRailgun (0, -18, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_EXPLICITANGLE, 1, 50, "RLParticleBeamPuffTerminator2", -0.2, 0, 0, 1, 0.75, 0, "none", 10)
       TERM J 10 A_FaceTarget
       Goto PulsewaveEnd
	   
   PainMain:
       TNT1 A 0 ACS_NamedExecuteAlways("DRLA_BossPainCheck", 0)
       TERM L 6
	   TNT1 A 0 A_PlaySound ("terminator/raiseshields", CHAN_VOICE, 1, 0, 0.7)
       TERM L 35
	   TNT1 A 0 A_PlaySound ("techvile/aoezapmain", 7, 1, 0, 0.8)
       TNT1 A 0 A_SpawnItemEx ("RLTerminatorShieldFlash", 5,0,48, 0,0,0, 0, SXF_NOCHECKPOSITION)
	   TNT1 A 0 HealThing (1000, 7000)
       TERM L 5
       Goto See
	
   DeathMain:
       TNT1 A 0 A_GiveInventory ("RLTerminatorKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
       TERM L 1
       TNT1 A 0 A_Scream
   DeathOverloadLoop:
       TERM L 1
       TNT1 A 0 A_Jump (210, 2)
       TNT1 A 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), user_deathtimer+frandom(2.2,30.2), 1, 0.2, 0, "None", 32+frandom(-15,15))
       TNT1 A 0 A_SetUserVar("user_deathtimer", user_deathtimer+1)
       TNT1 A 0 A_JumpIf (user_deathtimer >= 46, "DeathExplosion")
	   Goto DeathOverloadLoop
   DeathExplosion:
       TERM M 6
       TERM N 4 
	   TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
       TNT1 A 0 A_Quake (1, 18, 0, 2048, "")
       TNT1 A 0 A_Quake (6, 12, 0, 512, "")
//       TNT1 A 0 A_PlaySound ("rlmonsters/largeexp", 7, 1, 0, 0.5)
//       TNT1 A 0 A_PlaySound("rlmonsters/distantexp", CHAN_ITEM, 0.25, 0, 0.05)
       TERM OPQ 4 Bright
       TNT1 A 0 A_FaceTarget
       TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
       TNT1 A 0 A_SpawnItemEx("RLTerminatorHead", 15, 0, 90, VelX+10, VelY, VelZ, -170, 128)
       TNT1 A 0 A_SpawnItemEx("RLTerminatorShoulder", 60, 0, 75, VelX+8, VelY, VelZ, -70, 128)
       TNT1 A 0 A_SpawnItemEx("RLTerminatorArm", 60, 0, 0, VelX+3, VelY, VelZ, -90, 128)
       TERM RSTUV 4 Bright
       TERM W 4 
       TERM X 6 A_Fall
       TERM Y 6
       TNT1 A 0 A_Playsound("terminator/collapse")
       TERM Z 6 
       TERM [ 30
       TERM [ 0
       "####" "#" 0 A_Jump(256, "DeathEnd")
       Goto DeathEnd
  DeathFrame:
    TERM [ 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLTerminatorKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "GenericFreezeMana")
    Goto GenericFreezeMana
	
  CrushDRLA:
    TNT1 A 30 A_SpawnItemEx("RLCrushedMedium",0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "CrushEnd")
    Goto CrushEnd
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  MachinegunCheck:
	"####" "#" 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), 2)
    "####" "#" 0 A_Jump(256, "Machinegun")
	Goto Machinegun
	"####" "#" 0 A_JumpIf(CallACS("DRLA_specialstarts") == 2, "Duke2LaserAttack")
    "####" "#" 0 A_Jump(256, "Machinegun")
	Goto Machinegun
	
  Pain.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
    D2F2 O 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F2 O 2 Bright
    Goto See
  Pain.CyberDisruptor:
    TNT1 A 0 A_StopSound(7)
    Goto Pain.LightningBlue
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 10000, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLTerminatorKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_BossDeath
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", 80)
  DN2BossExplosionLoop:
    TNT1 A 0 A_JumpIf (user_dn2bossexplosiontimer <= 0, "DN2BossExplosionFinish")
    TNT1 A 0 A_Jump(190, 2)
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash", 768, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(4, 2, 0, 768, "")
    TERM L 1 Bright
    TNT1 A 0 A_Jump(150, 2)
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_Jump(100, 2)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-28,28),frandom(-28,28),frandom(4,60), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-28,28),frandom(-28,28),frandom(4,60), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", user_dn2bossexplosiontimer - 1)
    Goto DN2BossExplosionLoop
  DN2BossExplosionFinish:
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash2", 1560, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(9, 15, 0, 1560, "")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0)
//    TNT1 A 0 A_SpawnItemEx ("RLDuke2BossExplosion", 0,0,48, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveLeft", 0,12,48, 0,14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveRight", 0,-12,48, 0,-14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
	Stop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================
  Duke2LaserAttack:
	TNT1 A 0 A_JumpIfCloser(1024, 1)
	Goto ParticleBeam
	TNT1 A 0 A_JumpIfCloser(618, 2)
	TNT1 A 0 A_Jump(64, "ParticleBeam")
	Goto Duke2LaserAttackStart
	TNT1 A 0 A_JumpIfCloser(192, 2)
	TNT1 A 0 A_Jump(192, "GrenadeChoice", "Rockets")
	Goto Pulsewave
	TNT1 A 0 A_Jump(60, "Duke2LaserAttackStart")
	Goto Pulsewave
  Duke2LaserAttackStart:
	TERM G 12 A_Facetarget
  Duke2LaserRepeat:
    TERM H 1 Bright A_CustomMissile ("RLDuke2EnemyBasicShot", 50, -16, frandom(-3,3), CMF_OFFSETPITCH, frandom(-3,3))
    TERM G 3
    TERM I 1 Bright A_CustomMissile ("RLDuke2EnemyBasicShot", 50, -16, frandom(-3,3), CMF_OFFSETPITCH, frandom(-3,3))
    TERM G 3
	TNT1 A 0 A_MonsterRefire (100, "See")
    Goto RepeatFriendlyCheck

//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    TERM L 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		TERM L 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		TERM L 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 0,0,0, frandom(-10.0,-12.0),0,frandom(1.0,3.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame3:
		TERM L 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 0,0,0, frandom(-15.0,-20.0),0,frandom(10.0,15.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
		
	//Gumpop
	Death.Acid:
		TERM L 1 A_ChangeFlag("SOLID",0)
		"####" "#" 1 A_Playsound("Gumpop/Expand",5)
		"####" "###################################" 1 A_SetScale(ScaleX+frandom(0.01,0.025))
		"####" "#" 1 A_Playsound("Gumpop/Pop",5)
		"####" "#" 0 A_Jump(256,"XDeathMain")
		Goto XDeathMain
		
	//Thunderstruck
	Pain.Lightning:
		"####" "#" 0 A_Jump(164,1)
		Goto Pain
		TERM L 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"LightningLock")
		Goto LightningLock
		
	//Cauterizer
	Pain.LightningBlue:
		"####" "#" 0 A_Jump(48,1)
		Goto Pain
		TERM L 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
       }
}

ACTOR RLTerminatorShieldFlash
{
  Radius 8
  Height 8
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTONAUTOMAP
  +NOTIMEFREEZE
  Alpha 0.39
  RenderStyle Add
  Translation "192:207=168:191"
  States
  {
  Spawn:
    TNT1 A 0
    PULS IJKLMNOPQRST 1 Bright
    Stop
  }
}

ACTOR RLTerminatorPulse
{
   Radius 6
   Height 6
   Speed 30
   FastSpeed 50
   Damage (random(1,6))
   DamageType "Plasma"
   PROJECTILE
   RENDERSTYLE ADD
   alpha 0.95
   +THRUGHOST
   +MTHRUSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   SeeSound "terminator/pulsewave"
   DeathSound "rlmonsters/laserhit"
   States
   {
   Spawn: 
      TBLX A random(15,20) Bright
   OutofRange: 
      TBLX A 1 Bright A_FadeTo (0, 0.3, 1)
      loop
   Death:
      TNT1 A 0
      stop
   }
}

ACTOR RLTerminatorPulsewaveCooldown : Powerup
{
	Powerup.Duration -10
   +INVENTORY.UNTOSSABLE
}

ACTOR RLTerminatorPulseSilent : RLTerminatorPulse
{
   SeeSound ""
   DeathSound ""
}

Actor RLTerminatorMissile
{
  Radius 8
  Height 12
  Speed 28
  Damage 10
  DamageType "Fire"
  PainType "Explosion"
  DeathType "Explosion"
  Scale 1.0
  Projectile
  RenderStyle Normal
  +NOTIMEFREEZE
  +THRUGHOST
  +BLOODSPLATTER
  SeeSound "terminator/missile"
  DeathSound "rlmonsters/smallexp"
  Decal "Scorch"
  States
  {
  Spawn:
    FBRS A 1 Bright
    FBRS A 1 Bright A_SpawnItemEx("RLBruiserTrail",0,0,0,0,0,0,0,128)
    Goto Spawn
  Death:
    TNT1 A 0 A_SetTranslucent(0.67,1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake(1, 12, 0, 256, "")
    TNT1 A 0 A_Quake(4, 6, 0, 128, "")
	TNT1 A 0 A_JumpIf(CallACS("GnuCustardCheck"), "GuncasterImpact")
    BAL3 C 6 Bright
    BAL3 D 6 Bright A_Explode(32,64,0)
    BAL3 E 6 Bright
    Stop
	  
  GuncasterImpact:
    TNT1 A 0 A_PlaySound("Matriarch/Hit", 5, 0.8)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", 6, 1.0)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", CHAN_ITEM, 0.05, 0, 0.05)
    TNT1 A 0 A_SpawnItemEx("RLGuncasterMonsterExplosion", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
    TNT1 A 20 A_Explode(32,64,0)
    Stop
  }
}

actor RLTerminatorNapalmGrenade
{
    Radius 6
    Height 12
    Speed 20
    Damage 5
	DamageType "Fire"
	BounceType "Classic"
	BounceFactor 0.5
	BounceCount 2
    Projectile
    -NOGRAVITY
    +NOTIMEFREEZE
    +BLOODSPLATTER
    SeeSound "rlmonsters/grenadelauncher"
    BounceSound "terminator/grenadebounce"
    DeathSound "rlmonsters/mediumexp"
    States
    {
    Spawn:
		TNT1 A 0
		TBO1 A 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 16, 0, 0, 0, 0, 0, 180, SXF_NOCHECKPOSITION)
		Goto Spawn
    Death:
		TNT1 A 0 A_GiveToTarget ("PowerRLTerminatorNapalmGrenadeCooldown", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SetTranslucent(0.90,1)
		TNT1 AAAAAAAAAAAAAAAAA 0 A_CustomMissile("RLMagmabusNapalmFlare",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(60, 90))
		TNT1 A 0 A_SetScale(1.5)
		BAL3 C 5 Bright A_Explode (48, 96, 0)
		BAL3 DE 5 Bright
		Stop
    }
}

actor RLTerminatorPlasmaGrenade : RLTerminatorNapalmGrenade
{
	DamageType "Plasma"
	BounceFactor 0.7
    States
    {
    Spawn:
		TNT1 A 0
		TBO2 A 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 16, 0, 0, 0, 0, 0, 180, SXF_NOCHECKPOSITION)
		Goto Spawn
    Death:
		TNT1 A 0 A_GiveToTarget ("PowerRLTerminatorPlasmaGrenadeCooldown", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SetTranslucent(0.90,1)
		TNT1 A 0 A_SetScale(2.6)
		TBO2 B 3 Bright A_Explode (64, 128, 0)
		TBO2 CDEF 3 Bright
		Stop
    }
}

actor RLTerminatorFlashGrenade
{
    Radius 6
    Height 12
    Speed 20
    Damage (1)
	DamageType "Melee"
	Gravity 0.8
    Projectile
    -NOGRAVITY
	+SEEKERMISSILE
    +NOTIMEFREEZE
    +BLOODSPLATTER
    SeeSound "rlmonsters/grenadelauncher"
    States
    {
    Spawn:
		TNT1 A 0
		TBO1 B 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 16, 0, 0, 0, 0, 0, 180, SXF_NOCHECKPOSITION)
		Goto Spawn
    Death:
		TNT1 A 0 A_GiveToTarget ("PowerRLTerminatorFlashGrenadeCooldown", 1)
		TNT1 A 0 A_SpawnItemEx ("RLTerminatorFlashGrenadeFlashBECAUSEITREFUSESTOWORKSOMETIMES", 0, 0, 6, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("terminator/flashbang", 7, 1, 0, 0.8)
		Goto Player1Check
    Player1Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER1, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player2Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight1")
		Goto Player2Check
    CheckSight1:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE1", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player2Check
    SOLARFLARE1:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player2Check
		
    Player2Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER2, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player3Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight2")
		Goto Player3Check
    CheckSight2:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE2", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player3Check
    SOLARFLARE2:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player3Check
		
    Player3Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER3, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player4Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight3")
		Goto Player4Check
    CheckSight3:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE3", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player4Check
    SOLARFLARE3:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player4Check
		
    Player4Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER4, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player5Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight4")
		Goto Player5Check
    CheckSight4:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE4", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player5Check
    SOLARFLARE4:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player5Check
		
    Player5Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER5, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player6Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight5")
		Goto Player6Check
    CheckSight5:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE5", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player6Check
    SOLARFLARE5:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player6Check
		
    Player6Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER6, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player7Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight6")
		Goto Player7Check
    CheckSight6:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE6", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player7Check
    SOLARFLARE6:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player7Check
		
    Player7Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER7, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Goto Player8Check
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight7")
		Goto Player8Check
    CheckSight7:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE7", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player8Check
    SOLARFLARE7:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Goto Player8Check
		
    Player8Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER8, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TRACER)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TRACER)
		Stop
		TNT1 A 0 A_JumpIfTracerCloser(256, "CheckSight8")
		Stop
    CheckSight8:
		TNT1 A 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInTargetLOS("SOLARFLARE8", 110, JLOSF_DEADNOJUMP)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Stop
    SOLARFLARE8:
		TNT1 A 0 A_GiveToTarget ("RLTerminatorFlashGrenadeEffect", 1)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER)
		Stop
		
//========UNUSED================================================================
    WhooshEffect:
		TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SetTranslucent(0.99,1)
		Goto WhooshEffectLoop
    WhooshEffectLoop:
		TNT1 A 0 A_FadeTo (0, 0.08, 1)
		TBO1 C 1 Bright A_SetScale (scalex*1.3)
		Goto WhooshEffectLoop
    }
}

ACTOR RLTerminatorFlashGrenadeFlashBECAUSEITREFUSESTOWORKSOMETIMES
{
  Radius 8
  Height 8
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTONAUTOMAP
  +NOTIMEFREEZE
  Alpha 0.99
  RenderStyle Add
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetScale (scalex*1.3)
    TBO1 C 1 Bright A_FadeTo (0, 0.06, 1)
    Loop
  }
}

ACTOR RLTerminatorFlashGrenadeEffect : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_PlaySound("terminator/ringingnoise", 7, 1, 0, 25)
    TNT1 A 0 A_SetBlend("White", 0.99, 180)
    TNT1 A 0 A_Jump (256, "AngleIncrease", "AngleDecrease")
  AngleIncrease:
	TNT1 A 0 A_SetAngle(angle+random(0, 90))
    Goto PitchChoose
  AngleDecrease:
    TNT1 A 0 A_SetAngle(angle-random(0, 90))
    Goto PitchChoose
  PitchChoose:
    TNT1 A 0 A_Jump (256, "PitchIncrease", "PitchDecrease")
  PitchIncrease:
	TNT1 A 0 A_SetPitch(pitch+random(0, 45))
    Stop
  PitchDecrease:
	TNT1 A 0 A_SetPitch(pitch-random(0, 45))
    Stop
  }
}

actor RLTerminatorScatterGrenade
{
    Radius 12
    Height 16
    Speed 15
    Damage (15)
	DamageType "Melee"
	BounceType "Doom"
	Gravity 1.4
	BounceFactor 0.5
	BounceCount 4
	Scale 0.9
    Projectile
    -NOGRAVITY
    +BLOODSPLATTER
	+NOTIMEFREEZE
    SeeSound "rlmonsters/grenadelauncher"
    BounceSound "terminator/grenadebounce"
    DeathSound ""
    States
    {
    Spawn:
		TBO3 AABBCCDD 1 Bright
		Loop
    Death:
		TNT1 A 0 A_Stop
		TNT1 A 0 A_GiveToTarget ("PowerRLTerminatorScatterGrenadeCooldown", 1)
		TNT1 A 0 A_SpawnItemEx ("RLTerminatorScatterGrenadeActive", 0, 0, 0, 0 , 0, 0, 0, SXF_ABSOLUTEVELOCITY | SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
		Stop
    }
}

ACTOR RLTerminatorScatterGrenadeActive
{
  Radius 12
  Height 16
  Speed 1
  Health 40
  Mass 1200
  Scale 0.9
  SeeSound ""
  DeathSound "rlmonsters/largeexp"
  Species "RLTerminator"
  DamageFactor "Crush", 10
  Obituary "%o stumbled across a Terminator's scatterbomb."
  +THRUSPECIES
  +NOTIMEFREEZE
  +SHOOTABLE
  +NOTELEPORT
  +NOTELESTOMP
  +NOINFIGHTING
  +NOFEAR
  +NOPAIN
  +DONTHARMSPECIES
  +DONTDRAIN
  +NOBLOOD
  +DONTGIB
  States
  {
  Spawn:
	TNT1 A 0 A_Stop
	TBO3 A 25 Bright
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 B 12 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 C 9 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 D 7 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 A 5 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 A 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 B 4 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 A 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 C 3 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 AA 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 D 2 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
  ShootyLoop:
	TNT1 A 0 A_Wander
	TNT1 AAA 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 A 1 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 A 0 A_Wander
	TNT1 AAA 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TBO3 B 1 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 A 0 A_Wander
	TNT1 AAA 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
    TNT1 A 0 A_PlaySound("rlmonsters/hyperblaster", CHAN_WEAPON, 1, 0, 2)
	TBO3 C 1 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TNT1 A 0 A_Wander
	TNT1 AAA 0 A_CustomMissile("RLTerminatorScatterBlastSilent",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	TBO3 D 1 Bright A_CustomMissile("RLTerminatorScatterBlast",4,0,random(0, 359), CMF_AIMDIRECTION | CMF_TRACKOWNER, Random(5, 90))
	Goto ShootyLoop
  Death:
	TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SetTranslucent(0.90,1)
	TNT1 A 0 A_SetScale(2.6)
	TBO2 B 3 Bright A_Explode (128, 128, 0)
	TBO2 CDEF 3 Bright
   Stop
  }
}

actor RLTerminatorScatterBlast
{
    Radius 4
    Height 5
    Speed 8
    Damage (random(2, 6))
	DamageType "Plasma"
    +BLOODSPLATTER
    +NOTIMEFREEZE
	Scale 0.3
    Projectile
    DeathSound "rlmonsters/laserhit"
    States
    {
    Spawn:
		TB3X ABCDABCDABCDABCD 1 Bright
		TB3X EFGHEFGH 2 Bright
		TB3X IJKLIJKL 3 Bright
		TB3X MNOPMNOP 4 Bright
		Stop
    Death:
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SetTranslucent(0.98,1)
		TNT1 A 0 A_SetScale(0.6)
		TBO2 BCDEF 3 Bright
		Stop
    }
}

ACTOR RLTerminatorScatterBlastSilent : RLTerminatorScatterBlast
{
   DeathSound ""
}

Actor RLTerminatorGunState : Inventory
{
inventory.maxamount 1
}

ACTOR PowerRLTerminatorFlashGrenadeCooldown : Powerup
{
	Powerup.Duration -25
}

ACTOR PowerRLTerminatorNapalmGrenadeCooldown : Powerup
{
	Powerup.Duration -15
}

ACTOR PowerRLTerminatorPlasmaGrenadeCooldown : Powerup
{
	Powerup.Duration -15
}

ACTOR PowerRLTerminatorScatterGrenadeCooldown : Powerup
{
	Powerup.Duration -120
}

ACTOR RLCCTerminator : RLTerminator
{
  +TOUCHY
  States
  {
  Spawn:
    TERM C 10 A_Look
    Loop
  See:
    TERM ABCD 8
    Loop
  Melee:
    TERM E 8
    TERM F 8 Bright
    TERM E 2
    TERM J 8
    TERM KKKK 2 Bright
    TERM J 2
    Goto See
  Missile:
    TERM G 5
    TERM H 2 Bright
    TERM G 2
    TERM I 2 Bright
    TERM G 2
    TERM H 2 Bright
    TERM G 2
    TERM I 2 Bright
    TERM G 5
    Goto See
  Death:
    TERM L 1 A_Scream
    TERM L 46
    TERM M 6
    TERM N 4 
    TERM OPQRSTUV 4 Bright
    TERM W 4 
    TERM X 6 A_Fall
    TERM YZ 6
    TERM [ -1   
    Stop
  }
}
