ACTOR FMarineFistClass : PlayerPawn
{
  Health 125
  gibhealth 99999 //added - actor can not be gibbed
  Radius 16
  Height 56
  Mass 100
  Speed 0.95
  PainChance 160
  Translation 0
  Player.MorphWeapon "FFist"
  Player.WeaponSlot 1, FFist
  Player.DisplayName "Marine"
  Player.MaxHealth 125
  Player.ViewHeight 41
  Player.SoundClass "player"
  Player.JumpZ 8
 
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.5
  DamageFactor "MarineRLDamage", 0.5
  DamageFactor "BFGSplash", 0.5
  DamageFactor "MarineRail", 0.35
  
  DamageFactor "CybRLDamage", 0.25
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "viledamage", 0
  DamageFactor "Control", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "Slime", 0
  +NOPAIN
  -PICKUP
  +NOSKIN
  -FRIENDLY
  +NOTARGET
  +LONGMELEERANGE //added
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    PLA1 A 4
    loop
  See:
    PLA1 ABCD 4 
    Loop
  Pain:
    PLA1 G 4 
    PLA1 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA1 E 4
    PLA1 F 4
    PLA1 A 9
    Goto See
  Death:
    PLA1 H 10 A_GiveToTarget ("MarineExp",1)
    PLA1 I 10 A_Scream
    PLA1 J 10 A_NoBlocking
    PLA1 K 10 Thing_changeTid(144,0)
    PLA1 LM 10
    PLA1 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA1 M -1
    stop	
  XDeath:
    PLAY O 5 A_GiveToTarget ("MarineExp",1)
    PLAY P 5 A_XScream
    PLAY Q 5 A_NoBlocking
    PLAY Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLAY R 5 Thing_changeTid(144,0)
    PLAY STUV 5  
	PLAY V -1
    stop	
  }
}

ACTOR FFist : Weapon
{
  OBITUARY "%o chewed on %k's fist."
  weapon.kickback 100
  Weapon.AmmoUse 0
  attacksound "marine/fists"
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.MELEEWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Ready:
    MPNG A 8 A_WeaponReady
    MPNG A 0 A_JumpIfInventory ("Mskull",0,3)
    MPNG A 8 A_WeaponReady
    MPNG A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	TNT1 A 0 HealThing(1)
	goto ready 
  Deselect:
    MPNG A 1 A_Lower
    loop
  Select: 
    MPNG A 1 A_Raise
    loop
  Fire:
    MPNG A 0 A_JumpIfInventory("MLeftFist",1,"Right")
    MPNG BCD 1
    MPNG E 1 A_CustomPunch (3,0,0,"MFistPuff",60)
    MPNG FGH 2
    MPNG A 2 A_GiveInventory("MLeftFist",1)
    Goto Ready
  Right:	
    MPNG IJK 1
    MPNG L 1 A_CustomPunch (3,0,0,"MFistPuff",60)
    MPNG MNO 2
    MPNG A 2 A_TakeInventory("MLeftFist",1)
    Goto Ready
  AltFire:
    MPNG A 5 ACS_ExecuteAlways (419,0,30)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineBerserkClass : FMarineFistClass
{
  Player.MorphWeapon "FBers"
  Player.WeaponSlot 1, FBers
  states
  {
  Death:
    PLA1 H 10 A_GiveToTarget ("MarineExp",4)
    PLA1 I 10 A_Scream
    PLA1 J 10 A_NoBlocking
    PLA1 J 0 A_SpawnItemEx ("FBersSplode",0,0,20,0,0,0,0,SXF_NOCHECKPOSITION,0)
    PLA1 K 10 Thing_changeTid(144,0)
    PLA1 LM 10
    PLA1 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA1 M -1
	stop
  XDeath:
    PLAY O 5 A_GiveToTarget ("MarineExp",4)
    PLAY P 5 A_XScream
    PLAY Q 5 A_NoBlocking
    PLAY Q 0 A_SpawnItemEx ("FBersSplode",0,0,20,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 A 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLAY R 5 Thing_changeTid(144,0)
    PLAY STUV 5
	PLAY V -1
	stop
  }
}

ACTOR FBers : FFist
{
  states
  {
  Ready:
    MPNG A 4 A_WeaponReady
    MPNG A 0 A_SpawnItemEx ("FBersRun",-5,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    MPNG A 4 A_WeaponReady
    MPNG A 0 A_SpawnItemEx ("FBersRun",-5,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    MPNG A 0 A_JumpIfInventory ("Mskull",0,6)
    MPNG A 4 A_WeaponReady
    MPNG A 0 A_SpawnItemEx ("FBersRun",-5,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    MPNG A 4 A_WeaponReady
    MPNG A 0 A_SpawnItemEx ("FBersRun",-5,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    MPNG A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	TNT1 A 0 HealThing(1)
	goto ready 
  Fire:
    MPNG A 0 A_JumpIfInventory("MLeftFist",1,"Right")
    MPNG BCD 1
    MPNG E 1 A_CustomPunch (23,0,0,"MFistPuff",60)
    MPNG FGH 2
    MPNG A 2 A_GiveInventory("MLeftFist",1)
    Goto Ready
  Right:	
    MPNG IJK 1
    MPNG L 1 A_CustomPunch (23,0,0,"MFistPuff",60)
    MPNG MNO 2
    MPNG A 2 A_TakeInventory("MLeftFist",1)
    Goto Ready
  AltFire:
    MPNG A 5 ACS_ExecuteAlways (419,0,31)
    goto ready
  }
}

ACTOR FMarineChainsawClass : FMarineFistClass
{
  Player.MorphWeapon "FChainsaw"
  Player.WeaponSlot 1, FChainsaw
  states
  {
  Spawn:
    PLA8 A 4
    loop
  See:
    PLA8 ABCD 4 
    Loop
  Pain:
    PLA8 G 4 
    PLA8 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA8 E 4
    PLA8 F 4 BRIGHT 
    PLA8 E 5
    Goto See
  Death:
    PLA8 H 0 A_SpawnItemEx ("MChainsaw",0,0,random(29,38),0,0,0,0,32,0)
    PLA8 H 10 A_GiveToTarget ("MarineExp",2)
    PLA8 I 10 A_Scream
    PLA8 J 10 A_NoBlocking
    PLA8 K 10 Thing_changeTid(144,0)
    PLA8 LM 10
    PLA8 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA8 M -1
    stop	
  XDeath:
    PLA8 O 0 A_SpawnItemEx ("MChainsaw",0,0,random(29,38),0,0,0,0,32,0)
    PLA8 O 5 A_GiveToTarget ("MarineExp",2)
    PLA8 P 5 A_XScream
    PLA8 Q 5 A_NoBlocking
    PLAS Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLA8 R 5 Thing_changeTid(144,0)
    PLA8 STUV 5
	PLAS V -1
    stop	
  }
}

actor FChainsaw : Chainsaw
{
  obituary "%o was mowed over by %k's chainsaw."
  Weapon.Kickback 0
  +NOEXTREMEDEATH
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.MELEEWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  States
  {
  Ready:
    SAWG CD 4 A_WeaponReady
    SAWG C 0 A_JumpIfInventory ("Mskull",0,4)
    SAWG CD 4 A_WeaponReady
    SAWG D 0 A_JumpIfInventory ("Mskull",3,1)
    loop
	TNT1 A 0 HealThing(1)
	goto ready 
  Deselect:
    SAWG C 1 A_Lower
    loop
  Select:
    SAWG C 1 A_Raise
    loop
  Fire:
    SAWG AB 4 A_Saw ("weapons/sawfull", "weapons/sawhit", 2, "FBulletPuff")
    SAWG B 0 A_ReFire
    goto Ready
  Spawn:
    CSAW A -1
    stop
  AltFire:
    SAWG C 5 ACS_ExecuteAlways (419,0,32)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarinePistolClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FPistol"
  Player.WeaponSlot 1, FPistol
  states
  {
  Spawn:
    PLA2 A 4
    loop
  See:
    PLA2 ABCD 4 
    Loop
  Pain:
    PLA2 G 4 
    PLA2 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA2 E 4
    PLA2 F 4 BRIGHT 
    PLA2 E 5
    Goto See
  Death:
    PLA2 H 0 A_SpawnItemEx ("MClip",0,0,random(29,38),0,0,0,0,32,0)
    PLA2 H 10 A_GiveToTarget ("MarineExp",2)
    PLA2 I 10 A_Scream
    PLA2 J 10 A_NoBlocking
    PLA2 K 10 Thing_changeTid(144,0)
    PLA2 LM 10
    PLA2 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA2 M -1
    stop	
  XDeath:
    PLA2 O 0 A_SpawnItemEx ("MClip",0,0,random(29,38),0,0,0,0,32,0)
    PLA2 O 5 A_GiveToTarget ("MarineExp",2)
    PLA2 P 5 A_XScream
    PLA2 Q 5 A_NoBlocking
    PLA2 Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLA2 R 5 Thing_changeTid(144,0)
    PLA2 STUV 5  
    PLA2 V -1
    stop
  }
}

ACTOR FPistol : Pistol
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  -WEAPON.WIMPY_WEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o was tickled by %k's pea shooter."
  States
  {
  Ready:
    PISG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    PISG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready 
  Fire:
    PISG A 4
    PISG B 0 A_FireBullets (3.5, 1.2, 1, 6, "FBulletPuff")
    PISG B 5 A_GunFlash
    PISG C 4
    PISG B 5 A_ReFire
    Goto Ready
  Flash:
    PISF A 6 Bright A_Light1
    PISF A 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    PISG A 5 ACS_ExecuteAlways (419,0,33)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineShotgunClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FShotgun"
  Player.WeaponSlot 1, FShotgun
  states
  {
  Spawn:
    PLA3 A 4
    loop
  See:
    PLA3 ABCD 4 
    Loop
  Pain:
    PLA3 G 4 
    PLA3 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA3 E 4
    PLA3 F 4 BRIGHT 
    PLA3 E 9
    Goto See
  Death:
    PLA3 H 0 A_SpawnItemEx ("MShotgun",0,0,random(29,38),0,0,0,0,32,0)
    PLA3 H 10 A_GiveToTarget ("MarineExp",4)
    PLA3 I 10 A_Scream
    PLA3 J 10 A_NoBlocking
    PLA3 K 10 Thing_changeTid(144,0)
    PLA3 LM 10
    PLA3 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA3 M -1
    stop	
  XDeath:
    PLA3 O 0 A_SpawnItemEx ("MShotgun",0,0,random(29,38),0,0,0,0,32,0)
    PLA3 O 5 A_GiveToTarget ("MarineExp",4)
    PLA3 P 5 A_XScream
    PLA3 Q 5 A_NoBlocking
    PLA3 Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLA3 R 5 Thing_changeTid(144,0)
    PLA3 STUV 5  
    PLA3 V -1
    stop
  }
}

ACTOR FShotgun : Shotgun
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o chewed on %k's boomstick."
  States
  {
  Ready:
    SHTG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    SHTG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    SHTG A 2
    SHTG A 0 A_FireBullets (5.6, 1.8, 8, 5, "FBulletPuff")
    SHTG A 7 A_GunFlash
    SHTG BCDEFG 2
    SHTG H 3
    SHTG GFEDCB 2
    SHTG A 3
    SHTG A 3 A_ReFire
    Goto Ready
  Flash:
    SHTF A 4 Bright A_Light1
    SHTF B 3 Bright A_Light2
    SHTF A 0 A_Light0
    Stop
  AltFire:
    SHTG A 5 ACS_ExecuteAlways (419,0,34)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineSSGClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FSuperShotgun"
  Player.WeaponSlot 1, FSuperShotgun
  states
  {
  Spawn:
    PLA5 A 4
    loop
  See:
    PLA5 ABCD 4 
    Loop
  Pain:
    PLA5 G 4 
    PLA5 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA5 E 4
    PLA5 F 4 BRIGHT 
    PLA5 E 14
    Goto See
  Death:
    PLA5 H 0 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)
    PLA5 H 10 A_GiveToTarget ("MarineExp",6)
    PLA5 I 10 A_Scream
    PLA5 J 10 A_NoBlocking
    PLA5 K 10 Thing_changeTid(144,0)
    PLA5 LM 10
    PLA5 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA5 M -1
	stop
  XDeath:
    PLA5 O 0 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)
    PLA5 O 5 A_GiveToTarget ("MarineExp",6)
    PLA5 P 5 A_XScream
    PLA5 Q 5 A_NoBlocking
    PLA5 Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLA5 R 5 Thing_changeTid(144,0)
    PLA5 STUV 5  
    PLA5 V -1
    stop
  }
}

ACTOR FSuperShotgun : SuperShotgun
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o was blown open by %k's super shotgun."
  States
  {
  Ready:
    SHT2 A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    SHT2 A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    SHT2 A 3
    SHT2 A 0 A_FireBullets (11.2, 7.1, 20, 5, "FBulletPuff")
    SHT2 A 7 A_GunFlash
    SHT2 B 0 A_CheckReload
    SHT2 BCDEF 3
    SHT2 F 0 A_OpenShotgun2
    SHT2 HUVKL 3
    SHT2 L 0 A_LoadShotgun2
    SHT2 OPQR 3
    SHT2 R 0 A_CloseShotgun2 
    SHT2 RS 3
    SHT2 A 3
    SHT2 A 5 A_ReFire
    Goto Ready
  Flash:
    SHT2 I 4 Bright A_Light1
    SHT2 J 3 Bright A_Light2
    SHT2 I 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    SHT2 A 5 ACS_ExecuteAlways (419,0,35)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineChaingunClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FChaingun"
  Player.WeaponSlot 1, FChaingun
  states
  {
  Spawn:
    PLA4 A 4
    loop
  See:
    PLA4 ABCD 4 
    Loop
  Pain:
    PLA4 G 4 
    PLA4 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA4 E 2
    PLA4 F 2 BRIGHT
    PLA4 E 2
    PLA4 F 2 BRIGHT 
    PLA4 E 9
    Goto See
  Death:
    PLA4 H 0 A_SpawnItemEx ("MChaingun",0,0,random(29,38),0,0,0,0,32,0)
    PLA4 H 10 A_GiveToTarget ("MarineExp",6)
    PLA4 I 10 A_Scream
    PLA4 J 10 A_NoBlocking
    PLA4 K 10 Thing_changeTid(144,0)
    PLA4 LM 10
    PLA4 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA4 M -1
    stop	
  XDeath:
    PLAY O 0 A_SpawnItemEx ("MChaingun",0,0,random(29,38),0,0,0,0,32,0)
    PLAY O 5 A_GiveToTarget ("MarineExp",6)
    PLAY P 5 A_XScream
    PLAY Q 5 A_NoBlocking
    PLAY Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLAY R 5 Thing_changeTid(144,0)
    PLAY STUV 5  
    PLAY V -1
    stop
  }
}

ACTOR FChaingun : Chaingun
{
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0 
  Weapon.AmmoType2 ""
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o was mowed down by %k's chaingun."
  States
  {
  Ready:
    CHGG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    CHGG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    CHGG A 0 A_Gunflash
    CHGG A 2 
    CHGG B 2 A_FireBullets (5.2, 1.4, 1, 6, "FBulletPuff")
    CHGG C 2
    CHGG D 2 A_FireBullets (5.2, 1.4, 1, 6, "FBulletPuff")
    CHGG A 0 A_ReFire
    CHGG ABCD 2
    CHGG ABCD 3 A_ReFire
    Goto Ready
  Flash: 
    CHGF A 2 bright A_Light1
    TNT1 A 2 A_Light2
    CHGF B 2 bright A_Light1
    TNT1 A 2 A_Light2
    TNT1 A 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    CHGG A 5 ACS_ExecuteAlways (419,0,36)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineRocketClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FRocketLauncher"
  Player.WeaponSlot 1, FRocketLauncher
  states
  {
  Spawn:
    PLAR A 4
    loop
  See:
    PLAR ABCD 4 
    Loop
  Pain:
    PLAR G 4 
    PLAR G 4 A_Pain
    Goto Spawn
  Missile:
    PLAR E 8
    PLAR F 8 BRIGHT 
    PLAR E 8
    Goto See
  Death:
    PLAR H 0 A_SpawnItemEx ("MRocketLauncher",0,0,random(29,38),0,0,0,0,32,0)
    PLAR H 10 A_GiveToTarget ("MarineExp",6)
    PLAR I 10 A_Scream
    PLAR J 10 A_NoBlocking
    PLAR K 10 Thing_changeTid(144,0)
    PLAR LM 10
    PLAR M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLAR M -1
    stop	
  XDeath:
    PLAR O 0 A_SpawnItemEx ("MRocketLauncher",0,0,random(29,38),0,0,0,0,32,0)
    PLAR O 5 A_GiveToTarget ("MarineExp",6)
    PLAR P 5 A_XScream
    PLAR Q 5 A_NoBlocking
    PLAR Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLAR R 5 Thing_changeTid(144,0)
    PLAR RSTUV 5  
    PLAR V -1
    stop
  }
}

ACTOR FRocketLauncher : RocketLauncher
{
  Weapon.AmmoUse 0
  Weapon.AmmoType2 ""
  Weapon.AmmoUse2 0	
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o rode %k's rocket."
  States
  {
  Ready:
    MISG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    MISG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    MISG B 8 A_GunFlash
    MISG B 12 A_FireCustomMissile ("PCybRocket")
    MISG B 0 A_ReFire
    Goto Ready
  Flash:
    MISF A 3 Bright A_Light1
    MISF B 4 Bright
    MISF CD 4 Bright A_Light2
    MISF A 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    MISG A 5 ACS_ExecuteAlways (419,0,37)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarinePlasmaClass : FMarineFistClass
{
  Speed 0.8
  Player.MorphWeapon "FPlasmaRifle"
  Player.WeaponSlot 1, FPlasmaRifle
  states
  {
  Spawn:
    PLA6 A 4
    loop
  See:
    PLA6 ABCD 4 
    Loop
  Pain:
    PLA6 G 4 
    PLA6 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA6 E 2
    PLA6 F 3 BRIGHT 
    PLA6 E 22
    Goto See
  Death:
    PLA6 H 0 A_SpawnItemEx ("MPlasmaRifle",0,0,random(29,38),0,0,0,0,32,0)
    PLA6 H 10 A_GiveToTarget ("MarineExp",6)
    PLA6 I 10 A_Scream
    PLA6 J 10 A_NoBlocking
    PLA6 K 10 Thing_changeTid(144,0)
    PLA6 LM 10
    PLA6 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA6 M -1
    stop	
  XDeath:
    PLAY O 0 A_SpawnItemEx ("MPlasmaRifle",0,0,random(29,38),0,0,0,0,32,0)
    PLAY O 5 A_GiveToTarget ("MarineExp",6)
    PLAY P 5 A_XScream
    PLAY Q 5 A_NoBlocking
    PLAY Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLAY R 5 Thing_changeTid(144,0)
    PLAY STUV 5  
    PLAY V -1
    stop
  }
}

actor FPlasmaRifle : PlasmaRifle
{
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0	
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  Obituary "%o was melted by %k's plasma gun."
  States
  {
  Ready:
    PLSG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    PLSG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    PLSG A 2 A_GunFlash
    PLSG A 3 A_FireCustomMissile ("FPlasmaBall")
    PLSG B 0 A_ReFire
    PLSG BCDE 2
    PLSG F 3
    PLSG EDCB 2
    Goto Ready
  Flash:
    PLSF A 2 Bright A_Light1
    PLSF B 3 Bright A_Light0
    PLSF A 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    PLSG A 5 ACS_ExecuteAlways (419,0,38)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineBFGClass : FMarineFistClass
{
  Speed 0.35
  Player.MorphWeapon "FBFG9000"
  Player.WeaponSlot 1, FBFG9000
  states
  {
  Spawn:
    PLA7 A 4
    loop
  See:
    PLA7 ABCD 4 
    Loop
  Pain:
    PLA7 G 4 
    PLA7 G 4 A_Pain
    Goto Spawn
  Missile:
    PLA7 E 20
    PLA7 F 20 BRIGHT 
    PLA7 E 40
    Goto See
  Death:
    PLA7 H 0 A_SpawnItemEx ("FBFG9000",0,0,random(29,38),0,0,0,0,32,0)
    PLA7 H 10 A_GiveToTarget ("MarineExp",9)
    PLA7 I 10 A_Scream
    PLA7 J 10 A_NoBlocking
    PLA7 K 10 Thing_changeTid(144,0)
    PLA7 LM 10
    PLA7 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	PLA7 M -1
    stop	
  XDeath:
    PLA7 O 0 A_SpawnItemEx ("FBFG9000",0,0,random(29,38),0,0,0,0,32,0)
    PLA7 O 5 A_GiveToTarget ("MarineExp",9)
    PLA7 P 5 A_XScream
    PLA7 Q 5 A_NoBlocking
    PLA7 Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    PLA7 R 5 Thing_changeTid(144,0)
    PLA7 STUV 5  
    PLA7 V -1
    stop
  }
}

actor FBFG9000 : BFG9000
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  States
  {
  Ready:
    BFGG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    BFGG A 8 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    BFGG A 20 A_BFGSound
    BFGG B 10 A_GunFlash
    BFGG B 10 A_FireCustomMissile ("FBFGBall")
    BFGG B 15
    BFGG B 15 A_ReFire
    goto Ready
  Flash:
    BFGF A 11 bright A_Light1
    BFGF B 6 bright A_Light2
    BFGF A 0 A_Light0
    Stop
  AltFlash:
    Stop
  AltFire:
    BFGG A 5 ACS_ExecuteAlways (419,0,40)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR FMarineRailgunClass : FMarineFistClass { }
