actor RPGAmmo : Ammo replaces RocketBox 19330
{
  inventory.pickupmessage "$D3D_RPGAMMO"
  inventory.amount 5
  inventory.maxamount 50
  inventory.icon "TNT1A0"
  ammo.backpackamount 5
  ammo.backpackmaxamount 100
  scale 0.55
  +INVENTORY.IGNORESKILL
  states
  {
  Spawn:
    RPGP B -1
    stop
  }
}

actor "RPG" : DefaultDukeWeapon replaces Rocketlauncher 19331
{
  Weapon.SelectionOrder 19
  Weapon.AmmoUse 1
  Weapon.AmmoGive 5
  Weapon.AmmoType "RPGAmmo"
  Obituary "%o was blown to pieces by %k's RPG."
  Inventory.Pickupmessage "$D3D_RPG"
  Inventory.PickupSound "misc/backpack"
  weapon.upsound "chaingun/select"
  weapon.kickback 0
  scale 0.75
  decal bulletchip
  +NOALERT
  Tag " "
  States
  {
  RReady2:
    RPGL A 1 A_WeaponReady
    goto RReady
  NoAmmo:
    RPGL A 5 A_WeaponReady(WRF_NOFIRE)
    RPGL A 5 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("RPGAmmo",1,"RReady")
    loop
  Deselect:
    RPGL A 0
    goto Super::Deselect
  Select:
    RPGL A 0
    goto Super::Select
  Fire:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("RPGAmmo", 1, 2)
    RPGL A 10 A_PlaySound("DRYFIRE", 1)
    Goto NoAmmo
    TNT1 A 0 A_PlayWeaponSound("rpg/shoot")
    TNT1 A 0 A_FireCustomMissile("RPGAttack",0,1,5,0)
    TNT1 A 0 A_FireCustomMissile("MuzzleFlashMedium",0,0,0)
    RPGL B 1 BRIGHT A_Recoil (2)
    RPGL B 1 BRIGHT A_ZoomFactorD3D("d3d_rrpg",0.97)
    RPGL C 1 BRIGHT offset(11,43) A_SetPitchD3D ("d3d_rrpg",-2)
    RPGL C 1 BRIGHT offset(14,46) A_ZoomFactor(1.0)
    RPGL C 1 BRIGHT offset(17,49) A_SetPitchD3D ("d3d_rrpg",0.8)
    RPGL A 1 BRIGHT offset(20,52) A_SetPitchD3D ("d3d_rrpg",0.6)
    RPGL A 1 BRIGHT offset(23,55) A_SetPitchD3D ("d3d_rrpg",0.4)
    RPGL A 1 BRIGHT offset(26,58) A_SetPitchD3D ("d3d_rrpg",0.2)
    RPGL A 1 BRIGHT offset(29,61)
    RPGL A 1 BRIGHT offset(32,64)
    RPGL A 1 BRIGHT offset(35,67)
    RPGL A 1 BRIGHT offset(38,70)
    RPGL A 1 BRIGHT offset(41,73)
    RPGL A 1 BRIGHT offset(38,70)
    TNT1 A 0 A_TakeInventory("Waiting",10)
    RPGL A 1 offset(35,67)
    RPGL A 1 offset(32,64)
    RPGL A 1 offset(26,58)
    RPGL A 1 offset(20,52)
    RPGL A 1 offset(14,46) 
    RPGL A 1 offset(8,40) 
    RPGL A 1 offset(4,36) 
    RPGL A 1 offset(0,32) 
    RPGL A 1 offset(4,36) 
    RPGL A 1 offset(8,40) 
    RPGL A 1 offset(11,43) A_FireCustomMissile("MonsterAlert",0,0,0)
    RPGL A 1 A_ReFire
    Goto RReady
  Spawn:
    RPGP A -1
    Stop
  }
}

actor RPGAttack : ZMissileP
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  Radius 6
  Height 6
  Speed 30
  Damage (140)
  Projectile
  DeathSound "rpg/blowup"
  Obituary "%o was blown to pieces by %k's RPG."
  scale 0.35
  decal DukeScorch
  DamageType "RocketExplosion"
  +THRUSPECIES
  Species "Dukes"
  States
  {
  Spawn:
    RPGB A 1 bright
    TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
    TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](160, 210), 2, random[RIDFX](-30, 30))
    loop
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SpawnItem("BigRicoChet")
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    TNT1 A 0 A_PlaySound("rpg/blowup")
    TNT1 A 0 A_PlayWeaponSound("rpg/blowup")
    TNT1 A 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 0 A_Explode(100,180,0)
    TNT1 A 0 A_Explode(100,180)
    TNT1 A 10
    stop
  }
}

actor AlienCommanderAttack : ZMissile
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  Radius 6
  Height 6
  Speed 16
  Damage (20)
  Projectile
  DeathSound "rpg/blowup"
  obituary "%o sucked down a commander's RPG."
  scale 0.35
  decal DukeScorch
  DamageType "RocketExplosion"
  -THRUSPECIES
  Species "none"
  States
  {
  Spawn:
    RPGB A 1 bright
    TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
    TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](160, 210), 2, random[RIDFX](-30, 30))
    loop
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SpawnItem("BigRicoChet")
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    TNT1 A 0 A_PlaySound("rpg/blowup")
    TNT1 A 0 A_PlayWeaponSound("rpg/blowup")
    TNT1 A 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 0 A_Explode(60,180)
    TNT1 A 10
    stop
  }
}

actor EmperorAttack : ZMissile
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  Radius 11
  Height 8
  Speed 17
  Damage (20)
  Projectile
  DeathSound "rpg/blowup"
  obituary "%o was annihilated by the Cycloid Emperor."
  scale 0.30
  decal DukeScorch
  DamageType "RocketExplosion"
  -THRUSPECIES
  Species "none"
  +RANDOMIZE
  seesound "rpg/shoot"
  States
  {
  Spawn:
    RPGB A 1 bright
    TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
    TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](160, 210), 2, random[RIDFX](-30, 30))
    loop
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SpawnItem("BigRicoChet")
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    TNT1 A 0 A_PlaySound("rpg/blowup")
    TNT1 A 0 A_PlayWeaponSound("rpg/blowup")
    TNT1 A 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 0 A_Explode(60,130)
    TNT1 A 10
    stop
  }
}

actor OverlordAttack : ZMissile
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  Radius 12
  Height 8
  Speed 16
  Damage (20)
  Projectile
  DeathSound "rpg/blowup"
  Obituary "none"
  scale 0.75
  decal DukeScorch
  DamageType "RocketExplosion"
  -THRUSPECIES
  Species "none"
  +BRIGHT
  seesound "rpg/shoot"
  States
  {
  Spawn:
    RPGB A 1 bright
    TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
    TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](160, 210), 2, random[RIDFX](-30, 30))
    loop
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SpawnItem("BigRicoChet")
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    TNT1 A 0 A_PlaySound("rpg/blowup")
    TNT1 A 0 A_PlayWeaponSound("rpg/blowup")
    TNT1 A 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 0 A_Explode(100,200,0)
    TNT1 A 10
    stop
  }
}

actor RPGExplosion
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.75
  states
  {
  Spawn:
    RPGB BCDEFGHIJKLMNOPQRSTUV 2 BRIGHT
    stop
  }
}