actor ArachnotronClass : Playerpawn
{
  health 500
  radius 56
  height 56
  mass 600
  speed 0.30
  painchance 128
  Player.DisplayName "Arachnotron"
  Player.MaxHealth 500
  Player.ViewHeight 48
  Player.SoundClass "ArachnotronClass"
  Player.JumpZ 0
  Player.MorphWeapon "ArPlasmaGun"
  Player.WeaponSlot 1, ArPlasmaGun
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  DamageFactor "MarineRail", 0.9
  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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    BSPI A 5 A_PlaySoundEx ("baby/active","body")
    BSPI B 5 // add some here
    BSPI A -1 	
    loop
  See:
    BSPI A 20
    BSPI A 3 A_PlaySoundEx ("baby/walk","body") 
    BSPI ABBCC 3 
    BSPI D 3 A_PlaySoundEx ("baby/walk","body") 
    BSPI DEEFF 3 
    goto See+1
  Missile:
    BSPI G 3
    BSPI H 4 bright
    BSPI G 10
    goto Spawn	
  Death:
    BSPI A 0 ACS_ExecuteAlways(426,0,4)
    BSPI A 0 A_GiveToTarget ("MarineExp",6)
    BSPI J 20 A_PlaySoundEx ("baby/death","body")
    BSPI K 7 A_NoBlocking
    BSPI LMNO 7 
    TNT1 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    BSPI P  2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop
  }
}

// Weapon

actor ArPlasmaGun : Weapon
{
  obituary "%o let %k get %h."
  weapon.kickback 100
  weapon.ammouse 0
  +WEAPON.NOALERT
  +Ammo_Optional
  +WEAPON.DONTBOB
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Deselect:
    ARPL A 0 ACS_ExecuteAlways(426,0,4)
    ARPL A 1 A_Lower
    loop
  Select:
    ARPL A 1 A_Raise
    loop
  Ready:
    ARPL ABCDCB 1 A_WeaponReady
    ARPL A 0 A_JumpIfInventory ("Mskull",0,15)
    ARPL ABCDCB 1 A_WeaponReady
    ARPL A 0 A_JumpIfInventory ("Mskull",4,8)
    ARPL ABCDCB 1 A_WeaponReady
    ARPL A 0 A_JumpIfInventory ("Mskull",2,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready 
  Fire:
    ARPL A 0 ACS_ExecuteAlways(426,0,2)
    ARPL E 2 bright A_Light1
    ARPL F 2 bright A_Light2  
    ARPL G 3 bright A_FireCustomMissile ("ArPlasm",0,1,0,0,0)
    ARPL A 0 A_refire
    ARPL A 0 ACS_ExecuteAlways(426,0,4)
    Goto Ready
  AltFire: 
    ARPL A 3 ACS_ExecuteAlways (419,0,10) 
  Goto Ready
    Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  }
}

//    Projectile

actor ArPlasm
{
  radius 12
  height 8
  speed 26
  damage 6
  renderstyle Add
  Alpha 0.75
  seesound "baby/attack"
  deathsound "baby/shotx"
  DamageType "ArachDamage"
  PROJECTILE
  +RANDOMIZE
  states
  {
  Spawn:
    APLS AB 3 bright
    loop
  Death:
    APBX ABCDE 5 bright
    stop
  }
}

actor ArachGunnerClass : Playerpawn
{
  health 400
  radius 56
  height 56
  mass 600
  speed 0.30
  painchance 128
  Player.DisplayName "Arachno-Gunner"
  Player.MaxHealth 400
  Player.ViewHeight 48
  Player.SoundClass "ArachGunnerClass"
  Player.JumpZ 0
  Player.MorphWeapon "ArChaingun"
  Player.WeaponSlot 1, ArChaingun
  
  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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    CSPI A 5 A_PlaySoundEx ("baby/active","body")
    CSPI B 5 // add some here
    CSPI A -1 	
    loop
  See:
    CSPI A 20
    CSPI A 3 A_PlaySoundEx ("baby/walk","body") 
    CSPI ABBCC 3 
    CSPI D 3 A_PlaySoundEx ("baby/walk","body") 
    CSPI DEEFF 3 
    goto See+1
  Missile:
    CHGG A 0 A_JumpIfInventory ("FHeat",100,"CantShot")
    CSPI H 2 bright 
    CSPI G 2
    CSPI H 2 bright 
    CSPI G 12
    goto Spawn
  CantShot:
    CSPI A 24
    goto Spawn
  Death:
    CSPI A 0 ACS_ExecuteAlways(426,0,4)
    CSPI A 0 A_GiveToTarget ("MarineExp",6)
    CSPI J 20 A_PlaySoundEx ("CSPI/death","body")
    CSPI K 7 A_NoBlocking
    CSPI LMNO 7 
    CSPI P 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    CSPI P  2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    CSPI P 0 Thing_Remove (0)
    stop
  }
}

ACTOR ArChaingun : Weapon
{
  OBITUARY "%o was perforated by %k."
  ATTACKSOUND "weapons/pistol"
  weapon.kickback 100
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Spawn:
    CHGG A 0 Thing_Remove (0)
    Stop
  Ready:
    CHGG A 6 A_WeaponReady	
    CHGG A 0 A_TakeInventory ("FHeat",2)
    CHGG A 0 A_JumpIfInventory ("Mskull",0,7)
    CHGG A 6 A_WeaponReady	
    CHGG A 0 A_TakeInventory ("FHeat",2)
    CHGG A 0 A_JumpIfInventory ("Mskull",4,4)
    CHGG A 6 A_WeaponReady	
    CHGG A 0 A_TakeInventory ("FHeat",2)
    CHGG A 0 A_JumpIfInventory ("Mskull",2,1)
    Loop
    CHGG A 0 HealThing(1)
    goto ready 
  DeSelect: 
    CHGG A 0 ACS_ExecuteAlways(426,0,4)
    CHGG A 1 A_Lower
    Loop
  Select:
    CHGG A 1 A_Raise
    goto ready
  Fire:
    CHGG A 0 A_JumpIfInventory ("FHeat",100,"Overheat")
    CHGG A 0 A_GiveInventory ("FHeat",2)
    CHGG A 0 ACS_ExecuteAlways(426,0,2)
    CHGG A 2 A_GunFlash
    CHGG B 2 A_FireBullets (7.5, 2.5, 2, 5, "FArachPuff")
    CHGG C 2
    CHGG D 2 A_FireBullets (7.5, 2.5, 2, 5, "FArachPuff")
    CHGG A 0 A_Refire
    CHGG A 0 A_TakeInventory ("FHeat",1)
    CHGG ABCD 2
    CHGG ABCD 3 A_Refire
    CHGG A 0 A_TakeInventory ("FHeat",3)
    CHGG A 0 ACS_ExecuteAlways(426,0,4)
    goto Ready
  AltFire:
    CHGG A 5 ACS_ExecuteAlways (419,0,42)
    goto ready
  Overheat:
    CHGG A 0 ACS_ExecuteAlways(426,0,2)
    CHGG A 0 A_PlaySoundEx ("cybie/overheat","body")
    CHGG A 24 ACS_ExecuteAlways (408)
    CHGG A 0 A_TakeInventory ("FHeat",4)
    CHGG A 0 ACS_ExecuteAlways(426,0,4)
    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
  }
}