ACTOR FMarineFistClass : PlayerPawn
{
  Health 175
  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 175
  Player.ViewHeight 41
  Player.SoundClass "player"
  Player.JumpZ 8
 
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  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
  states
  {
  Spawn:
    UDM2 A 4
    loop
  See:
    UDM2 ABCD 4 
    Loop
  Pain:
    UDM2 G 4 
    UDM2 G 4 A_Pain
    Goto Spawn
  Missile:
    UDM2 E 4
    UDM2 F 4
    UDM2 A 9
    Goto See
  Death:
    UDM2 H 10 A_GiveToTarget ("MarineExp",1)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 5 A_GiveToTarget ("MarineExp",1)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    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

  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:
    UDM2 H 10 A_GiveToTarget ("MarineExp",4)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 J 0 A_SpawnItemEx ("FBersSplode",0,0,20,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 5 A_GiveToTarget ("MarineExp",4)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 Q 0 A_SpawnItemEx ("FBersSplode",0,0,20,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5
  XDeathWait:
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

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
  {
  Missile:
    UDM2 E 4
    UDM2 F 4 BRIGHT 
    UDM2 E 5
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MChainsaw",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",2)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MChainsaw",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",2)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

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

  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
  {
  Missile:
    UDM2 E 4
    UDM2 F 4 BRIGHT 
    UDM2 E 5
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MClip",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",2)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MClip",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",2)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

ACTOR FPistol : Pistol
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  -WEAPON.WIMPY_WEAPON
  +INVENTORY.UNDROPPABLE
  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
  {
  Missile:
    UDM2 E 4
    UDM2 F 4 BRIGHT 
    UDM2 E 9
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MShotgun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",4)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MShotgun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",4)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

ACTOR FShotgun : Shotgun
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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
  {
  Missile:
    UDM2 E 4
    UDM2 F 4 BRIGHT 
    UDM2 E 14
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",6)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",6)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

ACTOR FSuperShotgun : SuperShotgun
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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
  {
  Missile:
    UDM2 E 2
    UDM2 F 2 BRIGHT
    UDM2 E 2
    UDM2 F 2 BRIGHT 
    UDM2 E 9
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MChaingun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",6)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MChaingun",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",6)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

ACTOR FChaingun : Chaingun
{
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0 
  Weapon.AmmoType2 ""
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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
  {
  Missile:
    UDM2 E 8
    UDM2 F 8 BRIGHT 
    UDM2 E 8
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MRocketLauncher",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",6)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MRocketLauncher",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",6)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

ACTOR FRocketLauncher : RocketLauncher
{
  Weapon.AmmoUse 0
  Weapon.AmmoType2 ""
  Weapon.AmmoUse2 0	
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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:
    UDM2 A 4
    loop
  See:
    UDM2 ABCD 4 
    Loop
  Pain:
    UDM2 G 4 
    UDM2 G 4 A_Pain
    Goto Spawn
  Missile:
    UDM2 E 2
    UDM2 F 3 BRIGHT 
    UDM2 E 22
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MPlasmaRifle",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",6)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MPlasmaRifle",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",6)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

actor FPlasmaRifle : PlasmaRifle
{
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0	
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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
  {
  Missile:
    UDM2 E 20
    UDM2 F 20 BRIGHT 
    UDM2 E 40
    Goto See
  Death:
    UDM2 H 0 A_SpawnItemEx ("MBFG9000",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 H 10 A_GiveToTarget ("MarineExp",9)
    UDM2 I 10 A_Scream
    UDM2 J 10 A_NoBlocking
    UDM2 KLM 10
    UDM2 N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    UDM2 N 2 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    UDM2 O 0 A_SpawnItemEx ("MBFG9000",0,0,random(29,38),0,0,0,0,32,0)
    UDM2 O 5 A_GiveToTarget ("MarineExp",9)
    UDM2 P 5 A_XScream
    UDM2 Q 5 A_NoBlocking
    UDM2 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    UDM2 RSTU 5  
  XDeathWait:	
    UDM2 V 2 A_CheckSight("Removecorpse")
    loop
  }
}

actor FBFG9000 : BFG9000
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  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 : FMarinePlasmaClass { }
