actor CyberdemonClass : PlayerPawn
{
  Speed 0.3
  Health 4000
  Radius 40
  Height 110
  Mass 1000
  PainChance 0
  MaxStepHeight 32
  player.maxhealth 4000
  player.soundclass "CyberDemonClass"
  Player.DisplayName "CyberDemon"
  Player.MorphWeapon "CyberDemonRL"
  Player.WeaponSlot 1, CyberDemonRL
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  DamageFactor "MarineRail", 0.9
  DamageFactor "CybRLDamage", 0
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "viledamage", 0

  DamageFactor "Control", 0
  DamageFactor "Slime", 0
  
  Player.JumpZ 0
  Player.ViewHeight 90
  -PICKUP
  +NORADIUSDMG
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    CYBR AB 10
    loop
  See:
    CYBR A 3 A_PlaySoundEx ("cyber/hoof","body") 
    CYBR ABBCC 3 
    CYBR D 6 A_PlaySoundEx ("spider/walk","body")
    goto Spawn
  Missile:
    CYBR A 0 A_JumpIfInventory ("FHeat",19,"CantShot")
    CYBR E 8 
    CYBR F 9 bright
    CYBR E 8 
    CYBR F 9 bright
    CYBR E 8 
    CYBR F 9 bright
    CYBR E 13 
    goto Spawn
  CantShot:
    //  CYBR E 14
    goto spawn
  Death:
    CYBR H 10 A_GiveToTarget ("MarineExp",40)
    CYBR I 10 A_PlaySoundEx ("cyber/death","body",0,1)
    CYBR JKL 10
    CYBR M 10 A_NoBlocking
    CYBR A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    CYBR NO 10
  DeathWait:
    CYBR P 4 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop	
  }
}

// Weapon

actor CyberDemonRL : DoomWeapon
{
  obituary "%o was splattered by a cyberdemon."
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +ammo_optional
  +Alt_Ammo_Optional
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  States
  {
  Ready:
    CYBW A 7 A_WeaponReady
    CYBW A 0 A_TakeInventory ("FHeat",3)
    CYBW A 0 A_JumpIfInventory ("Mskull",0,2)
    CYBW A 7 A_WeaponReady
    CYBW A 0 A_TakeInventory ("FHeat",3)
    CYBW A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    CYBW A 0 HealThing(2)
    goto ready 
  Deselect:
    CYBW A 1 A_Lower
    Loop
  Select:
    CYBW A 1 A_Raise
    Loop
  Fire:
    CYBW A 0 A_JumpIfInventory ("FHeat",38,"Overheat")
    CYBW A 0 SetPlayerProperty (0, 1, 0)
    CYBW A 0 A_GiveInventory ("FHeat",12)
    CYBW ABC 4 bright
    CYBW D 5 bright A_FireCustomMissile ("PCybRocket",-1,0,-15,11,1,1)
    CYBW ABC 4 bright
    CYBW D 5 bright A_FireCustomMissile ("PCybRocket",-1,0,-15,11,1,1)
    CYBW ABC 4 bright
    CYBW D 5 bright A_FireCustomMissile ("PCybRocket",-1,0,-15,11,1,1)
    CYBW A 12
    CYBW A 0 SetPlayerProperty (0, 0, 0)
    Goto Ready
  Altfire:
    CYBW A 5 ACS_ExecuteAlways (419,0,13)
    goto Ready
  Overheat:
    //  CYBW A 0 SetPlayerProperty (0, 1, 0)
    CYBW A 0 A_PlaySoundEx ("cybie/overheat","body")
    CYBW A 28 ACS_ExecuteAlways (408)
    CYBW A 0 A_TakeInventory ("FHeat",10)
    //  CYBW A 0 SetPlayerProperty (0, 0, 0)
    goto ready
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  }
}

actor PCybRocket : Rocket replaces Rocket
{
 DamageType "CybRLDamage"
}

actor CyberAnniClass : PlayerPawn
{
  Speed 0.2
  Health 3250
  Radius 40
  Height 110
  Mass 1000
  PainChance 0
  MaxStepHeight 32
  player.maxhealth 3250
  player.soundclass "CyberAnniClass"
  Player.DisplayName "CyberAnnihilator"
  Player.MorphWeapon "CyberAnniRL"
  Player.WeaponSlot 1, CyberAnniRL
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  DamageFactor "MarineRail", 0.8
  DamageFactor "CybRLDamage", 0
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "viledamage", 0

  DamageFactor "Control", 0
  DamageFactor "Slime", 0
  
  Player.JumpZ 0
  Player.ViewHeight 90
  -PICKUP
  +NORADIUSDMG
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    ANNI AB 10
    loop
  See:
    ANNI A 4 A_PlaySoundEx ("monster/anhoof", "body")
    ANNI ABB 4 
    ANNI C 4 A_PlaySoundEx ("monster/anhoof", "body")
    ANNI CDD 4 
    goto Spawn
  Missile:
    ANNI A 0 A_JumpIfInventory ("FHeat",19,"CantShot")
    ANNI E 9 
    ANNI F 9 bright
    ANNI E 9 
    ANNI F 9 bright
    ANNI E 9 
    ANNI F 9 bright
    ANNI E 23 
    goto Spawn
  CantShot:
    //  ANNI E 14
    goto spawn
  Death:
    ANNI H 10 A_GiveToTarget ("MarineExp",45)
    ANNI I 10 A_PlaySoundEx ("cyber/death","body",0,1)
    ANNI JKL 10
    ANNI M 10 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    ANNI NO 10
  DeathWait:
    ANNI P 4 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop	
  }
}

// Weapon

actor CyberAnniRL : DoomWeapon
{
  obituary "%o was gibbed by the Cyber Annihilator."
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +ammo_optional
  +Alt_Ammo_Optional
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  States
  {
  Ready:
    CYBD A 7 A_WeaponReady
    CYBD A 0 A_TakeInventory ("FHeat",3)
    CYBD A 0 A_JumpIfInventory ("Mskull",0,4)
    CYBD A 7 A_WeaponReady
    CYBD A 0 A_TakeInventory ("FHeat",3)
    CYBD A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    CYBD A 0 HealThing(2)
    goto ready 
  Deselect:
    CYBD A 1 A_Lower
    Loop
  Select:
    CYBD A 1 A_Raise
    Loop
  Fire:
    CYBD A 0 A_JumpIfInventory ("FHeat",38,"Overheat")
    CYBD A 0 SetPlayerProperty (0, 1, 0)
    CYBD A 0 A_GiveInventory ("FHeat",14)
    CYBD ABC 4 bright
    CYBD D 0 bright A_FireCustomMissile ("PCybRocket",3,0,15,11,1,1)
    CYBD D 6 bright A_FireCustomMissile ("PCybRocket",-3,0,-15,11,1,1)
    CYBD ABC 4 bright
    CYBD D 0 bright A_FireCustomMissile ("PCybRocket2",1,0,15,11,1,1)
    CYBD D 6 bright A_FireCustomMissile ("PCybRocket2",-1,0,-15,11,1,1)
    CYBD ABC 4 bright
    CYBD D 0 bright A_FireCustomMissile ("PCybRocket",-2,0,15,11,1,1)
    CYBD D 6 bright A_FireCustomMissile ("PCybRocket",2,0,-15,11,1,1)
    CYBD A 22
    CYBD A 0 SetPlayerProperty (0, 0, 0)
    Goto Ready
  Altfire:
    CYBD A 5 ACS_ExecuteAlways (419,0,45)
    goto Ready
  Overheat:
    //  CYBD A 0 SetPlayerProperty (0, 1, 0)
    CYBD A 0 A_PlaySoundEx ("cybie/overheat","body")
    CYBD A 28 ACS_ExecuteAlways (408)
    CYBD A 0 A_TakeInventory ("FHeat",10)
    //  CYBD A 0 SetPlayerProperty (0, 0, 0)
    goto ready
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  }
}