ACTOR TerminatorClass : PlayerPawn
{
  Speed 1
  Health 100
  Radius 16
  Height 56
  Mass 75
  PainChance 255
  Player.ColorRange 112, 127
  Player.DisplayName "Terminator"
  Player.CrouchSprite "PLYC"
  player.startitem "TerminatorPlasmaRifle", 1
  player.startitem "TerminatorGrenade", 1
  player.startitem "HandGrenadeAmmo", 30
  player.startitem "Cell", 300
  player.startitem "greenarmor", 1
  Player.ForwardMove 0.90, 0.90
  Player.SideMove 0.90, 0.90
  damagefactor "rocket", 0
  limitedtoteam 1
  +NOSKIN
  States
  {
  Spawn:
    TMP1 A 0
	TMP1 A 35
	TMP1 A 0 A_JumpIf (health>=50, 2)
	TMP1 A 0 ACS_Execute(110,0)
	TMP1 A 0 A_JumpIfInventory("Cell", 0, "Spawn")
	TMP1 A 0 ACS_Execute(114,0)
    Loop
  See:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Step",1,4)
	TMP1 A 6 A_SpawnItemEx ("FootStep", 0, 0, 0, 0, 0, -1, 0,0, 0)
	TMP1 B 6
	TNT1 A 0 A_GiveInventory("Step",1)
	TMP1 C 6 A_SpawnItemEx ("FootStep", 0, 0, 0, 0, 0, -1, 0,0, 0)
	TMP1 D 6
	TNT1 A 0 A_TakeInventory("Step",1)
	Goto Spawn
  Missile:
    TMP1 E 12 
    Goto Spawn
  Melee:
    TMP1 F 6 BRIGHT
    Goto Missile
  Pain:
    TMP1 G 4 
    TMP1 G 4 A_Pain
    Goto Spawn
  Death:
    TMP1 H 10 A_SpawnItemEx ("TerminatorGibs",0,0,0,0,0,0,0,128)
    TMP1 I 10 A_PlayerScream
    TMP1 J 10 A_NoBlocking
    TMP1 KLM 10
    TMP1 N -1
    Stop
  XDeath:
    TMP1 H 10 A_SpawnItemEx ("TerminatorGibs",0,0,0,0,0,0,0,128)
    TMP1 I 10 A_PlayerScream
    TMP1 J 10 A_NoBlocking
    TMP1 KLM 10
    TMP1 N -1
    Stop
  }
}

ACTOR TerminatorPlasmaRifle : Weapon
{
  Game Doom
  Weapon.SelectionOrder 100
  Weapon.AmmoUse 3
  Weapon.AmmoGive 40
  Weapon.AmmoType "Cell"
  Inventory.PickupMessage "Picked up a Terminator's plasma rifle!"
  States
  {
  Ready:
    PLSG A 1 A_WeaponReady
    Loop
  Deselect:
    PLSG A 1 A_Lower
    Loop
  Select:
    PLSG A 1 A_Raise
    Loop
  Fire:
    PLSG A 3
	PLSG A 0 A_PlaySound("PlasmaFire")
	PLSG A 0 A_GunFlash
    PLSG A 3 A_FireCustomMissile("TerminatorPlasmaBall",0,1,0,0,0)
	PLSG A 0 A_FireCustomMissile("TerminatorPlasmaBall",-4,0,0,0,0)
	PLSG A 0 A_FireCustomMissile("TerminatorPlasmaBall",4,0,0,0,0)
	PLSG B 1 A_ReFire
	PLSG DEF 1
	PLSG GF 3
	PLSG EDCBA 2
	Goto Ready
  Flash:
    PLSF B 2 Bright A_Light0
    PLSF A 1 Bright A_Light2
    Goto LightDone
  Spawn:
    PLAS A -1
    Stop
  }
}

actor TerminatorPlasmaBall
{
  Game Doom
  Radius 13
  Height 8
  Speed 40
  Damage 5
  Projectile
  +RANDOMIZE
  RenderStyle Add
  Alpha 0.75
  DeathSound "weapons/plasmax"
  Obituary "%o was cooked up by %k's plasma rifle."
  States
  {
  Spawn:
    PLSS AB 6 bright
    loop
  Death:
    PLSE ABCDE 4 bright
    stop
  }
}

actor TerminatorPlasmaBallRed : TerminatorPlasmaBall
{
  Translation "192:207=176:191"
}

actor TerminatorPlasmaBallArmy : TerminatorPlasmaBall
{
  Translation "192:207=152:159"
}

actor TerminatorPlasmaBallGreen : TerminatorPlasmaBall
{
  Translation "192:207=112:127"
}

ACTOR TerminatorGrenade : Weapon
{
   Inventory.PickupMessage "You got a hand grenade!"
   Weapon.AmmoType "HandGrenadeAmmo"
   Weapon.AmmoGive 1
   Weapon.AmmoUse 1
   Weapon.AmmoType2 "ThrowPower" 
   Weapon.AmmoGive2 0 
   Weapon.AmmoUse2 0 
   +NOALERT
   +WEAPON.NOAUTOAIM
   +SKYEXPLODE
   States
   {
   Spawn:
      PGRN D -1
      Loop
   Ready: 
      HNDG A 1 A_WeaponReady
      Loop
   Deselect:
      HNDG A 1 A_Lower 
      Loop
   Select:
      HNDG A 0 A_TakeInventory("ThrowPower",999) 
      HNDG A 1 A_Raise
      Loop
   Fire:
      HNDG A 0 A_JumpIfInventory("ThrowPower",1,9)
      HNDG BCD 2
      HNDG E 2 A_PlaySound("weapons/grnpullpin")
      HNDG FGHH 2
      NULL A 2 A_GiveInventory("ThrowPower",1)
      NULL A 0 A_Refire
      HNDG I 2 A_PlaySound("weapons/grntoss") 
      HNDG A 0 A_JumpIfInventory("ThrowPower",30,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",29,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",28,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",27,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",26,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",25,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",24,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",23,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",22,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",21,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",20,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",19,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",18,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",17,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",16,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",15,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",14,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",13,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",12,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",11,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",10,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",9,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",8,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",7,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",6,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",5,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",4,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",3,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",2,30)
      HNDG A 0 A_JumpIfInventory("ThrowPower",1,30) 
      
      HNDG J 0 A_FireCustomMissile("ThrownGrenade30",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade29",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade28",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade27",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade26",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade25",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade24",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade23",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade22",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade21",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade20",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade19",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade18",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade17",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade16",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade15",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade14",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade13",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade12",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade11",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade10",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade9",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade8",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade7",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade6",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade5",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade4",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade3",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade2",0,1,0,0)
      Goto Fire +72
      HNDG J 0 A_FireCustomMissile("ThrownGrenade1",0,1,0,0)
      Goto Fire +72  
      
      HNDG J 0 A_PlaySound("weapons/grntoss")
      HNDG JKLMNOPQ 2
      HNDG A 0 A_TakeInventory("ThrowPower",999)
      NULL A 12 A_CheckReload
      HNDG XWVUTS 1
      
      Goto Ready
   
   }
}

ACTOR HandGrenadeAmmo : Ammo
{
   Inventory.Amount 1
   Inventory.MaxAmount 30
   Ammo.BackpackAmount 1
   Ammo.BackpackMaxAmount 30
   Inventory.PickupMessage "You should not see this message, the weapon is the ammo"
   Inventory.Icon PGRND0
   Scale 0.5
   States
   {
   Spawn:
      NULL D -1
      Loop
   }
}

ACTOR ThrowPower : Ammo
{
   Inventory.MaxAmount 30
   Ammo.BackpackMaxAmount 30
   Inventory.Icon THROW
}

ACTOR ThrownGrenade1
{
   Radius 5
   Height 5
   Speed 2
   ExplosionDamage 150
   ExplosionRadius 172
   Scale 0.6
   ReactionTime 25
   BounceCount 4
   SeeSound "weapons/grnbounce"
   Obituary "%o played hot potato with %k's grenade."
   PROJECTILE
   -NOGRAVITY
   +HEXENBOUNCE
   +EXTREMEDEATH
   +CANBOUNCEWATER
   +SKYEXPLODE
   DamageType Grenade
   States
   {
   Spawn:
      HGRN A 0 A_Countdown
      HGRN ABCDEF 4 A_AlertMonsters
      Loop
   Death:
	  NKXP A 0 A_PlaySound("weapons/explode")
      NKXP A 0 A_Explode
	  NKXP A 0 A_NoGravity
      NKXP BCDEFGHIJKLMNOPQRSTUV 1 BRIGHT
      Stop
   }
}


ACTOR ThrownGrenade2 : ThrownGrenade1
{
   Speed 4
}

ACTOR ThrownGrenade3 : ThrownGrenade1
{
   Speed 6
}

ACTOR ThrownGrenade4 : ThrownGrenade1
{
   Speed 8
}

ACTOR ThrownGrenade5 : ThrownGrenade1
{
   Speed 10
}

ACTOR ThrownGrenade6 : ThrownGrenade1
{
   Speed 12
}

ACTOR ThrownGrenade7 : ThrownGrenade1
{
   Speed 14
}

ACTOR ThrownGrenade8 : ThrownGrenade1
{
   Speed 16
}

ACTOR ThrownGrenade9 : ThrownGrenade1
{
   Speed 18
}

ACTOR ThrownGrenade10 : ThrownGrenade1
{
   Speed 20
}

ACTOR ThrownGrenade11 : ThrownGrenade1
{
   Speed 22
}

ACTOR ThrownGrenade12 : ThrownGrenade1
{
   Speed 24
}

ACTOR ThrownGrenade13 : ThrownGrenade1
{
   Speed 26
}

ACTOR ThrownGrenade14 : ThrownGrenade1
{
   Speed 28
}

ACTOR ThrownGrenade15 : ThrownGrenade1
{
   Speed 30
}

ACTOR ThrownGrenade16 : ThrownGrenade1
{
   Speed 32
}

ACTOR ThrownGrenade17 : ThrownGrenade1
{
   Speed 34
}

ACTOR ThrownGrenade18 : ThrownGrenade1
{
   Speed 36
}

ACTOR ThrownGrenade19 : ThrownGrenade1
{
   Speed 38
}

ACTOR ThrownGrenade20 : ThrownGrenade1
{
   Speed 40
}

ACTOR ThrownGrenade21 : ThrownGrenade1
{
   Speed 42
}

ACTOR ThrownGrenade22 : ThrownGrenade1
{
   Speed 44
}

ACTOR ThrownGrenade23 : ThrownGrenade1
{
   Speed 46
}

ACTOR ThrownGrenade24 : ThrownGrenade1
{
   Speed 48
}

ACTOR ThrownGrenade25 : ThrownGrenade1
{
   Speed 50
}

ACTOR ThrownGrenade26 : ThrownGrenade1
{
   Speed 52
}

ACTOR ThrownGrenade27 : ThrownGrenade1
{
   Speed 54
}

ACTOR ThrownGrenade28 : ThrownGrenade1
{
   Speed 56
}

ACTOR ThrownGrenade29 : ThrownGrenade1
{
   Speed 58
}

ACTOR ThrownGrenade30 : ThrownGrenade1
{
   Speed 60
}