actor DevastatorAmmo : Ammo replaces CellPack 19312
{
  inventory.pickupmessage "$D3D_DEVAMMO"
  inventory.amount 25
  inventory.maxamount 100
  inventory.icon "TNT1A0"
  ammo.backpackamount 25
  ammo.backpackmaxamount 200
  scale 1.0
  +INVENTORY.IGNORESKILL
  states
  {
  Spawn:
    DEVP B -1
    stop
  }
}

actor DevastatorSwitch : Inventory
{
  inventory.amount 0
  inventory.maxamount 1
}

actor "Devastator Weapon" : DefaultDukeWeapon replaces BFG9000 19313
{
  Weapon.SelectionOrder 16
  Weapon.AmmoUse 1
  Weapon.AmmoGive 15
  Weapon.AmmoType "DevastatorAmmo"
  Obituary "%o was devastated by %k's Devastator."
  Inventory.Pickupmessage "$D3D_DEV"
  Inventory.PickupSound "misc/backpack"
  weapon.upsound "chaingun/select"
  scale 0.85
  decal bulletchip
  +NOALERT
  Tag " "
  States
  {
  RReady2:
    DEVG A 1 A_WeaponReady
    goto RReady
  NoAmmo:
    DEVG A 5 A_WeaponReady(WRF_NOFIRE)
    DEVG A 5 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("DevastatorAmmo",1,"RReady")
    loop
  Deselect:
    DEVG A 0
    goto Super::Deselect
  Select:
    DEVG A 0
    goto Super::Select
  Fire:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("DevastatorAmmo", 1, 2)
    DEVG A 10 A_PlaySound("DRYFIRE", 1)
    Goto NoAmmo
    TNT1 A 0 A_JumpIfInventory("DevastatorSwitch",1,"FireLeft")
    TNT1 A 0 A_GiveInventory("DevastatorSwitch",1)
    TNT1 A 0 A_TakeInventory("Waiting",10)
    DEVG B 1 A_FireCustomMissile("MonsterAlert",0,0,0)
    TNT1 A 0 A_PlaySound("freezer/shoot")
    TNT1 A 0 A_PlayWeaponSound("rpg/shoot")
    TNT1 A 0 A_FireCustomMissile("MuzzleFlashSmall",0,0,10)
    TNT1 A 0 A_FireCustomMissile("DevastatorAttack",random[RIDPLAYERAT](0,3),1,10,-3)
    DEVG C 1 A_Recoil (1)
    TNT1 A 0 A_ZoomFactorD3D("d3d_rdevastator",0.97)
    TNT1 A 0 A_PlayWeaponSound("rpg/shoot")
    TNT1 A 0 A_FireCustomMissile("MuzzleFlashSmall",0,0,12)
    TNT1 A 0 A_FireCustomMissile("DevastatorAttack",random[RIDPLAYERAT](0,3),1,12,-1)
    DEVG D 1 bright A_SetPitchD3D ("d3d_rdevastator",-2.0)
    DEVG C 1 A_ZoomFactor(1.0)
    DEVG C 1 A_SetPitchD3D ("d3d_rdevastator",1.0)
    DEVG B 1 A_SetPitchD3D ("d3d_rdevastator",0.6)
    DEVG A 1 A_SetPitchD3D ("d3d_rdevastator",0.4)
    TNT1 A 0 A_ReFire
    Goto RReady
  FireLeft:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("DevastatorAmmo", 1, 2)
    DEVG A 10 A_PlaySound("DRYFIRE", 1)
    Goto NoAmmo
    TNT1 A 0 A_TakeInventory("DevastatorSwitch",1)
    TNT1 A 0 A_TakeInventory("Waiting",10)
    DEVG E 1 A_FireCustomMissile("MonsterAlert",0,0,0)
    TNT1 A 0 A_PlaySound("freezer/shoot")
    TNT1 A 0 A_PlayWeaponSound("rpg/shoot")
    TNT1 A 0 A_FireCustomMissile("MuzzleFlashSmall",0,0,-10)
    TNT1 A 0 A_FireCustomMissile("DevastatorAttack",random[RIDPLAYERAT](-3,0),1,-10,-3)
    DEVG F 1 A_Recoil (1)
    TNT1 A 0 A_ZoomFactorD3D("d3d_rdevastator",0.97)
    TNT1 A 0 A_PlayWeaponSound("rpg/shoot")
    TNT1 A 0 A_FireCustomMissile("MuzzleFlashSmall",0,0,-12)
    TNT1 A 0 A_FireCustomMissile("DevastatorAttack",random[RIDPLAYERAT](-3,0),1,-12,-1)
    DEVG G 1 bright A_SetPitchD3D ("d3d_rdevastator",-2.0)
    DEVG F 1 A_ZoomFactor(1.0)
    DEVG F 1 A_SetPitchD3D ("d3d_rdevastator",1.0)
    DEVG E 1 A_SetPitchD3D ("d3d_rdevastator",0.6)
    DEVG A 1 A_SetPitchD3D ("d3d_rdevastator",0.4)
    TNT1 A 0 A_ReFire
    Goto RReady
  Spawn:
    DEVP A -1
    Stop
  }
}

actor DevastatorAttack : ZMissileP
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  Radius 2
  Height 2
  Speed 30
  Damage (40)
  Projectile
  +RANDOMIZE
  DeathSound "rpg/blowup"
  Obituary "%o was devastated by %k's Devastator."
  scale 0.15
  decal DukeSmallScorch
  DamageType "RocketExplosion"
  +THRUSPECIES
  Species "Dukes"
  States
  {
  Spawn:
    RPGB A 1 bright
    TNT1 A 0 A_SpawnItem("RocketFlareTiny",-10,0)
    TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2Tiny")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2Tiny", 2, 0, random[RIDFX](160, 210), 2, random[RIDFX](-30, 30))
    loop
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavyTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavyTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFastTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("DevastatorExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22Tiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SpawnItem("BigRicoChet")
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffectTiny")
    TNT1 A 0 A_PlaySound("rpg/blowup")
    TNT1 A 0 A_PlayWeaponSound("rpg/blowup")
    TNT1 A 0 Radius_Quake(1, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 0 A_Explode(20,96,0)
    TNT1 A 0 A_Explode(20,96)
    TNT1 A 10
    stop
  }
}

actor DevastatorExplosion : RPGExplosion
{
  +RANDOMIZE
  scale 0.10
}