actor IncineratorAmmo : Ammo replaces Cell 19318
{
  inventory.pickupmessage "$D3D_FLAMEAMMO"
  inventory.amount 50
  inventory.maxamount 200
  inventory.icon "TNT1A0"
  ammo.backpackamount 50
  ammo.backpackmaxamount 400
  scale 0.5
  +INVENTORY.IGNORESKILL
  states
  {
  Spawn:
    INGA ABC 5 BRIGHT
    loop
  }
}

actor "Incinerator Flamethrower" : DefaultDukeWeapon replaces PlasmaRifle 19319
{
  Weapon.SelectionOrder 20
  Weapon.AmmoUse 1
  Weapon.AmmoGive 25
  Weapon.AmmoType "IncineratorAmmo"
  Obituary "%o was burnt out by %k's Incinerator."
  Inventory.Pickupmessage "$D3D_FLAME"
  Inventory.PickupSound "misc/backpack"
  weapon.upsound "chaingun/select"
  weapon.kickback 0
  scale 0.75
  +NOALERT
  Tag " "
  States
  {
  RReady2:
    INCI AAEE 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI FFAA 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI EEFF 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI AAEE 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI FFAA 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI EEFF 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI AAEE 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    INCI FF 1 A_WeaponReady
    goto RReady
  NoAmmo:
    INCI G 5 A_WeaponReady(WRF_NOFIRE)
    INCI G 5 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory("IncineratorAmmo",1,"RReady")
    loop
  Deselect:
    INCI G 0
    goto Super::Deselect
  Select:
    INCI G 0
    goto Super::Select
  Fire:
    TNT1 A 0 A_JumpIf(waterlevel>=3,2)
    TNT1 A 0 A_JumpIfInventory("IncineratorAmmo", 1, 2)
    INCI A 10 A_PlaySound("DRYFIRE", 1)
    Goto NoAmmo
    INCI A 0 A_GunFlash
    INCI B 1 bright offset(0, 34) A_PlayWeaponSound("duke/flame")
    TNT1 A 0 A_ZoomFactorD3D("d3d_rincinerator",0.99)
    INCI C 1 bright offset(-2, 31) A_FireCustomMissile("FlameBreath",0,1,Random[RIDPLAYERAT](3,7),0)
    TNT1 A 0 A_ZoomFactor(1.0)
    INCI D 1 bright offset(1, 32) A_FireCustomMissile("MonsterAlert",0,0,0)
    TNT1 A 0 A_ZoomFactorD3D("d3d_rincinerator",0.99)
    INCI B 1 bright offset(2, 29) A_FireCustomMissile("FlameBreath",0,1,Random[RIDPLAYERAT](3,7),0)
    TNT1 A 0 A_ZoomFactor(1.0)
    INCI C 1 bright offset(0, 30) 
    TNT1 A 0 A_TakeInventory("Waiting",10)
    INCI G 1 bright A_Refire
    Goto RReady
  AltFire:
    TNT1 A 0 A_JumpIf(waterlevel>=3,2)
    TNT1 A 0 A_JumpIfInventory("IncineratorAmmo", 5, 2)
    INCI A 0 A_PlaySound("DRYFIRE", 1)
    Goto NoAmmo
    INCI A 0 A_GunFlash
    INCI B 2 bright offset(0, 34) A_PlayWeaponSound("duke/flame")
    TNT1 A 0 A_ZoomFactorD3D("d3d_rincinerator",0.99)
    INCI C 2 bright offset(-2, 31) A_FireCustomMissile("BigFireBall",0,1,Random[RIDPLAYERAT](3,7),0)
    TNT1 A 0 A_TakeInventory("IncineratorAmmo",5)
    TNT1 A 0 A_ZoomFactor(1.0)
    INCI D 2 bright offset(1, 32) A_FireCustomMissile("MonsterAlert",0,0,0)
    INCI B 2 bright offset(2, 29)
    INCI C 2 bright offset(0, 30)
    INCI D 2 bright
    INCI B 2 bright
    INCI C 2 bright
    INCI D 2 bright
    INCI B 2 bright
    INCI C 2 bright
    INCI D 2 bright
    INCI B 2 bright
    INCI C 2 bright
    TNT1 A 0 A_TakeInventory("Waiting",10)
    INCI G 1 bright A_Refire
    Goto RReady
  Flash:
  AltFlash:
    TNT1 AAAAAA 1 A_FireCustomMissile("MuzzleFlashIncinerator",0,0,random[RIDFX](-2,2))
    stop
  Spawn:
    INCP A -1
    Stop
  }
}

Actor FlameBreath : ZMissileP
{
  Radius 8
  Height 8
  Speed 15
  RenderStyle Add
  Scale 0.5
  Projectile
  Damage 5
  Decal DukeScorch
  +RIPPER
  +BLOODLESSIMPACT
  +THRUGHOST
  SeeSound "duke/flame"
  DamageType "Fire"
  -NOGRAVITY
  Gravity 0.2
  +THRUSPECIES
  Species "Dukes"
  States
  {
  Spawn:
    XPLO A 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO AA 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO BB 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO C 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO CC 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO DD 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO E 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO EE 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO FF 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO G 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO GG 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO H 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO HH 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO I 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO II 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO J 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO JJ 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO K 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO KK 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO L 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO LL 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO M 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO MM 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO N 1 BRIGHT {A_Explode(5,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO NN 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO OOOPPPQQQRRRSSSTTTUUU 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 AA 0 A_CustomMissile ("ExplosionSmoke", 32, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    Stop
  Death:
    TNT1 A 0 A_Explode(9,128,0)
    TNT1 A 0 A_Explode(3,128)
    TNT1 A 1 A_SpawnItemEx("FlameExplosion",0,0,0,0,0,0,0,0)
    stop  
  }
}

Actor FireFlyFlameBreath : ZMissile
{
  Radius 8
  Height 8
  Speed 15
  RenderStyle Add
  Scale 0.5
  Projectile
  Damage 1
  Decal DukeScorch
  +RIPPER
  +BLOODLESSIMPACT
  +THRUGHOST
  SeeSound "duke/flame"
  DamageType "Fire"
  -NOGRAVITY
  Gravity 0.0
  -THRUSPECIES
  Species "none"
  States
  {
  Spawn:
    XPLO A 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO A 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO C 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO C 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO E 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO E 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO G 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO G 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz+1, CVF_REPLACE)
    XPLO H 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO H 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO I 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO I 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO J 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO J 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO K 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO K 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO L 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO L 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO M 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO M 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz+1, CVF_REPLACE)
    XPLO N 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO N 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(0, 0, velz+2, CVF_REPLACE)
    XPLO O 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO OOPPQQRRSSTTUU 1 BRIGHT {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.1);}
    TNT1 AA 0 A_CustomMissile ("ExplosionSmoke", 32, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    Stop
  Death:
    TNT1 A 0 A_Explode(2,128)
    TNT1 A 1 A_SpawnItemEx("FlameExplosion",0,0,0,0,0,0,0,0)
    stop  
  }
}

Actor CycloidIncineratorFlameBreath : FireFlyFlameBreath
{
  Radius 11
  Height 11
  Scale 0.7
  States
  {
  Spawn:
    XPLO A 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO A 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO A 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO A 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO B 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO B 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO C 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO C 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO C 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO C 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO D 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO D 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO E 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO E 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO E 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO E 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO F 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO F 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO G 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO G 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO G 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO G 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz+1, CVF_REPLACE)
    XPLO H 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO H 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO H 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO H 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO I 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO I 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO I 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO I 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO J 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO J 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO J 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO J 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO K 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO K 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO K 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO K 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO L 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO L 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO L 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO L 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
    XPLO M 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO M 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO M 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO M 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz+1, CVF_REPLACE)
    XPLO N 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO N 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO N 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    XPLO N 1 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    TNT1 A 0 A_ChangeVelocity(0, 0, velz+2, CVF_REPLACE)
    XPLO O 1 BRIGHT {A_Explode(1,64,0); A_SpawnItem("RedFlareMedium",0,0);}
    XPLO OOPPQQRRSSTTUU 1 BRIGHT {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.1);}
    TNT1 AA 0 A_CustomMissile ("ExplosionSmoke", 32, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    Stop
  Death:
    TNT1 A 0 A_Explode(2,128)
    TNT1 A 1 A_SpawnItemEx("FlameExplosion",0,0,0,0,0,0,0,0)
    stop  
  }
}

ACTOR BigFireBall : ZMissileP
{
  Radius 6
  Height 8
  Speed 20
  Damage (random[RIDPLAYERAT](170,170))
  Projectile 
  Scale 0.6
  +FORCEXYBILLBOARD
  +THRUGHOST
  +GHOST
  +BLOODLESSIMPACT
  RenderStyle Add
  DamageType "Fire"
  ExplosionRadius 150
  ExplosionDamage 8
  Alpha 1
  Decal DukeScorch
  SeeSound "duke/flame"
  -NOGRAVITY
  Gravity 0.2
  +THRUSPECIES
  Species "Dukes"
  ThruBits 1
  States
  {
  Spawn:
    TNT1 A 0 A_SpawnItem("RedFlareMedium")
    BLHD AB 1 BRIGHT A_SpawnItem ("FireballExplosionFlamesSmall")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](70, 110), 2, random[RIDFX](0, 360))
    Loop
  Death:
    TNT1 A 0 A_Explode(10, 50, 0)
    TNT1 AA 0 A_SpawnItemEx ("RedFlareMedium",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 A 0 A_CheckFloor("Lavapool")
    TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 0 A_CustomMissile ("ExplosionParticleVeryFast", 10, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 1 A_SpawnItemEx("FlameExplosion",0,0,0,0,0,0,0,0)
    Stop
  Lavapool:
    TNT1 A 0 A_SpawnItemEx("DukeLavaDrop")
    TNT1 A 0 A_SpawnItemEx("DukeLavaPool")
    TNT1 A 1
    Stop
  }
}

ACTOR FireFlyBigFireBall : ZMissile
{
  Radius 6
  Height 8
  Speed 20
  Damage (random[RIDMONSTERAT](40,40))
  Projectile 
  Scale 0.6
  +FORCEXYBILLBOARD
  +THRUGHOST
  +GHOST
  +BLOODLESSIMPACT
  RenderStyle Add
  DamageType BulletFlame
  ExplosionRadius 150
  ExplosionDamage 8
  Alpha 1
  Decal DukeScorch
  SeeSound "duke/flame"
  -NOGRAVITY
  Gravity 0.2
  -THRUSPECIES
  Species "none"
  ThruBits 1
  States
  {
  Spawn:
    TNT1 A 0 A_SpawnItem("RedFlareMedium")
    BLHD AB 1 BRIGHT A_SpawnItem ("FireballExplosionFlamesSmall")
    TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random[RIDFX](70, 110), 2, random[RIDFX](0, 360))
    Loop
  Death:
    TNT1 A 0 A_Explode(4, 50, 0)
    TNT1 AA 0 A_SpawnItemEx ("RedFlareMedium",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 A 0 A_CheckFloor("Lavapool")
    TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 0 A_CustomMissile ("ExplosionParticleVeryFast", 10, 0, random[RIDFX](0, 360), 2, random[RIDFX](40, 90))
    TNT1 A 1 A_SpawnItemEx("FlameExplosion",0,0,0,0,0,0,0,0)
    Stop
  Lavapool:
    TNT1 A 0 A_SpawnItemEx("DukeLavaDrop")
    TNT1 A 0 A_SpawnItemEx("DukeLavaPool")
    TNT1 A 1
    Stop
  }
}

actor DukeLavaPool : ZDukeLavaPool
{
  radius 1
  height 1
  mass 1
  Health 600
  RenderStyle Normal
  Alpha 0.99
  +NOTELEPORT
  +FORCEXYBILLBOARD
  +MOVEWITHSECTOR
  +FLOORCLIP
  +MISSILE
  +DONTSPLASH
  +NOBLOCKMONST
  Scale 0.3
  states
  {
  Spawn:
    LAVP B 1
  Grow:
    LAVP B 1 A_SetScale( min(ScaleX+0.06,2.0) , min(ScaleY+0.06,2.0) )
    "####" "#" 0 A_JumpIf(ScaleX < 2.0 && ScaleY < 2.0, "Grow")

    LAVP BCDEBCDEBCDEBCDE 5 A_SpawnItemEx ("DukeLavaBubble", Random[RIDFX](-20,20), Random[RIDFX](-20,20), 2, 0,0,0,0,0,224)
    LAVP BCDEBCDEBCDEBCDE 5 A_SpawnItemEx ("DukeLavaBubble", Random[RIDFX](-20,20), Random[RIDFX](-20,20), 2, 0,0,0,0,0,224)
    LAVP BCDEBCDEBCDEBCDE 5 A_SpawnItemEx ("DukeLavaBubble", Random[RIDFX](-20,20), Random[RIDFX](-20,20), 2, 0,0,0,0,0,224)
    LAVP BCDEBCDEBCDEBCDE 5 A_SpawnItemEx ("DukeLavaBubble", Random[RIDFX](-20,20), Random[RIDFX](-20,20), 2, 0,0,0,0,0,224)

  Shrink:
    LAVP B 1 A_SetScale( max(ScaleX-0.06,0) , max(ScaleY-0.06,0) )
    "####" "#" 0 A_JumpIf(ScaleX > 0 && ScaleY > 0, "Shrink")
    Stop
  }
}

actor DukeLavaDrop
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.3
  +FORCEXYBILLBOARD
  states
  {
  Spawn:
    LAVD ABCDE 5 BRIGHT
    stop
  }
}

actor DukeLavaBubble
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.3
  +FORCEXYBILLBOARD
  states
  {
  Spawn:
    LAVB ABCDEFG 2 BRIGHT
    stop
  }
}