actor AtomicFireWep : BaseMM8BDMWep 10010
{
//$Category MM8BDM-Weapons
//$Title Atomic Fire
//$Sprite WEAPE0
Weapon.AmmoUse 1
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Inventory.Pickupmessage "$PU_ATOMICFIRE"
Obituary "$OB_ATOMICFIRE"
weapon.ammotype "AtomicFireAmmo"
Tag "$TAG_ATOMICFIRE"
inventory.pickupsound "weapon/weaponup"
inventory.icon "ATOMI"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
WEAP E -1
loop
Ready:
HEAT G 0 ACS_ExecuteAlways(998,0,3)
HEAT G 1 A_WeaponReady
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
HEAT G 1
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
HEAT G 1
Loop
Altfire:
HEAT G 0 A_JumpIfNoAmmo("NoAmmo")
HEAT G 4
Goto Fire1
Fire:
HEAT G 0 A_JumpIfNoAmmo("NoAmmo")
HEAT G 1 A_GunFlash
goto Hold
Hold:
HEAT G 0 A_JumpIfNoAmmo("NoAmmo")
HEAT G 0 A_JumpIfInventory("WeaponCharge",1,"Hold2Start")
HEAT G 2 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire
Goto Fire1
Hold2Start:
HEAT G 0 A_GunFlash("Sound.Heat", GFF_NOEXTCHANGE)//A_PlaySoundEx("weapon/heat1", "SoundSlot5", 1)
Hold2:
HEAT G 0 A_JumpIfInventory("WeaponCharge",35,"Hold3Start")
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT H 1 ACS_ExecuteAlways(991,0,60)
HEAT G 0 A_Refire("Hold2.a")
Goto Fire1
Hold2.a:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold2.b")
Goto Fire1
Hold2.b:
HEAT G 0 A_JumpIfInventory("WeaponCharge",35,"Hold3Start")
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 0 ACS_ExecuteAlways(991,0,60)
HEAT H 1 
HEAT G 0 A_Refire("Hold2.c")
Goto Fire1
Hold2.c:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold2.d")
Goto Fire1
Hold2.d:
HEAT G 0 A_JumpIfInventory("WeaponCharge",35,"Hold3Start")
HEAT G 0 ACS_ExecuteAlways(991,0,60)
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT H 1
HEAT G 0 A_Refire("Hold2.e")
Goto Fire1
Hold2.e:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_SpawnItemEx("AtomicFire1MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold2")
Goto Fire1
Hold3Start:
Hold3:
HEAT G 0 A_JumpIfInventory("WeaponCharge",65,"Hold4Start")
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT I 1 ACS_ExecuteAlways(991,0,61)
HEAT G 0 A_Refire("Hold3.a")
Goto Fire2
Hold3.a:
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold3.b")
Goto Fire2
Hold3.b:
HEAT G 0 A_JumpIfInventory("WeaponCharge",65,"Hold4Start")
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT I 1 ACS_ExecuteAlways(991,0,61)
HEAT G 0 A_Refire("Hold3.c")
Goto Fire2
Hold3.c:
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold3.d")
Goto Fire2
Hold3.d:
HEAT G 0 A_JumpIfInventory("WeaponCharge",65,"Hold4Start")
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT I 1 ACS_ExecuteAlways(991,0,61)
HEAT G 0 A_Refire("Hold3.e")
Goto Fire2
Hold3.e:
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_GiveInventory("WeaponCharge_RC",1)
HEAT G 0 A_Refire("Hold3")
Goto Fire2
BotFire:
HEAT G 0 A_Jump(16, "Fire3")
HEAT G 0 A_Refire("Hold4")
Goto Fire3
Hold4Start:
Hold4:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT J 1 ACS_ExecuteAlways(991,0,62)
HEAT G 0 A_Refire("Hold4.a")
Goto Fire3
Hold4.a:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_Refire("Hold4.b")
Goto Fire3
Hold4.b:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT J 1 ACS_ExecuteAlways(991,0,62)
HEAT G 0 A_Refire("Hold4.c")
Goto Fire3
Hold4.c:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_Refire("Hold4.d")
Goto Fire3
Hold4.d:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT J 1 ACS_ExecuteAlways(991,0,62)
HEAT G 0 A_Refire("Hold4.e")
Goto Fire3
Hold4.e:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 1 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_Refire("Hold4")
Goto Fire3
Fire1:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_TakeInventory("WeaponCharge",500)
HEAT G 0 A_ClearRefire
HEAT G 0 A_PlaySoundEx("weapon/atomicfire","Weapon")
HEAT G 0 A_TakeInventory("AtomicFireAmmo",1,TIF_NOTAKEINFINITE)
HEAT G 0 A_FireCustomMissile("AtomicFire1",0,0,8,0)
HEAT KL 2
Goto Ready+1
Fire2:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_TakeInventory("WeaponCharge",500)
HEAT G 0 A_ClearRefire
HEAT G 0 A_PlaySoundEx("weapon/atomicfire","Weapon")
HEAT G 0 A_JumpIfInventory("AtomicFireAmmo", 5, "Fire2r")
HEAT G 0 A_TakeInventory("AtomicFireAmmo",5,TIF_NOTAKEINFINITE)
HEAT G 0 A_FireCustomMissile("AtomicFire1",0,0,8,0)
HEAT KL 2
Goto Ready+1
Fire2r:
HEAT G 0 A_SpawnItemEx("AtomicFire2MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_TakeInventory("AtomicFireAmmo",5,TIF_NOTAKEINFINITE)
HEAT G 0 A_FireCustomMissile("AtomicFire2",0,0,8,0)
HEAT KL 2
Goto Ready+1
Fire3:
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_TakeInventory("WeaponCharge",500)
HEAT G 0 A_ClearRefire
HEAT G 0 A_PlaySoundEx("weapon/atomicfire","Weapon")
HEAT G 0 A_JumpIfInventory("AtomicFireAmmo", 14, "Fire3r")
HEAT G 0 A_JumpIfInventory("AtomicFireAmmo", 5, "Fire2r")
HEAT G 0 A_TakeInventory("AtomicFireAmmo",14,TIF_NOTAKEINFINITE)
HEAT G 0 A_FireCustomMissile("AtomicFire1",0,0,8,0)
HEAT KL 3
HEAT G 3
Goto Ready+1
Fire3r:
HEAT G 0 A_SpawnItemEx("AtomicFire3MELEE_1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
HEAT G 0 ACS_ExecuteAlways(991,0,3)
HEAT G 0 A_TakeInventory("AtomicFireAmmo",14,TIF_NOTAKEINFINITE)
HEAT G 0 A_FireCustomMissile("AtomicFire3",0,0,8,0)
HEAT KL 5
HEAT G 4
Goto Ready+1
NoAmmo:
HEAT G 1 ACS_Execute(979,0)
HEAT G 0 A_Refire
Goto Ready+1


Sound.Heat:
TNT1 A 0 A_JumpIfInventory("WeaponCharge",65,"Sound.Heat3")
TNT1 A 0 A_JumpIfInventory("WeaponCharge",35,"Sound.Heat2")
TNT1 A 4 A_PlaySoundEx("weapon/heat1", "Weapon", 0)
TNT1 A 1 A_JumpIfInventory("WeaponCharge",1,"Sound.Heat")
stop
Sound.Heat2:
TNT1 A 4 A_PlaySoundEx("weapon/heat2", "Weapon", 0)
TNT1 A 1 A_JumpIfInventory("WeaponCharge",1,"Sound.Heat")
stop
Sound.Heat3:
TNT1 A 4 A_PlaySoundEx("weapon/heat3", "Weapon", 0)
TNT1 A 1 A_JumpIfInventory("WeaponCharge",1,"Sound.Heat")
stop
}
}

actor AtomicFireAmmo : Ammo
{
+INVENTORY.IGNORESKILL
inventory.amount 1
inventory.maxamount 28
}

actor AtomicFire1
{
scale 2.5
PROJECTILE
+FORCEXYBILLBOARD
+BRIGHT
Radius 4
Height 4
Damage (16)
damagetype "AtomicFire1"
Obituary "$OB_ATOMICFIRE"
Speed 24
States
{
Spawn:
HEAT AB 3
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire2 : AtomicFire1
{
Radius 10
Height 10
Damage (47)
damagetype "AtomicFire2"
+DONTBLAST
speed 30
States
{
Spawn:
HEAT CD 3
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire3 : AtomicFire1
{
Radius 18
Height 18
+RIPPER
+DONTBLAST
damagetype "AtomicFire3"
Damage (100)
speed 10
States
{
Spawn:
HEAT EF 2
HEAT E 0 A_ScaleVelocity(2.0)
HEAT E 0 A_PlaySoundEx("weapon/atomicfire", "body")
HEAT EF 2 A_SpawnItemEx("AtomicFire3Trail")
HEAT E 0 A_ScaleVelocity(2.0)
Spawn2:
HEAT E 0 A_PlaySoundEx("weapon/atomicfire", "body")
HEAT E 2 A_SpawnItemEx("AtomicFire3Trail")
HEAT E 0 A_PlaySoundEx("weapon/atomicfire", "body")
HEAT F 2 A_SpawnItemEx("AtomicFire3Trail")
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire3Trail : AtomicFire1
{
Radius 15
Height 15
+RIPPER
+DONTBLAST
damagetype "AtomicFire3"
Damage (4)
speed 10
//renderstyle add
alpha 0.8
scale 2.0
States
{
Spawn:
HEAT E 0 
HEAT EF 3 A_FadeOut(0.15)
HEAT E 0 A_SetScale(scalex - 0.25,scaley - 0.25)
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire1MELEE_1
{
scale 2.5
PROJECTILE
+FORCEXYBILLBOARD
+RIPPER
+DONTBLAST
+BRIGHT
Radius 4
Height 4
Damage (8)
renderstyle add
alpha 0.8
damagetype "AtomicFireMelee"
Obituary "$OB_ATOMICFIRE"
Speed 24
States
{
Spawn:
HEAT A 0
HEAT A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire1MELEE_2 : AtomicFire1MELEE_1
{
States
{
Spawn:
HEAT B 0
HEAT B 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire2MELEE_1 : AtomicFire1MELEE_1
{
Radius 10
Height 10
Damage (13)
speed 30
States
{
Spawn:
HEAT C 0
HEAT C 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire2MELEE_2 : AtomicFire2MELEE_1
{
States
{
Spawn:
HEAT D 0
HEAT D 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}


actor AtomicFire3MELEE_1 : AtomicFire1MELEE_1
{
Radius 15
Height 15
Damage (17)
speed 10
States
{
Spawn:
HEAT E 0
HEAT E 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFire3MELEE_2 : AtomicFire3MELEE_1
{
States
{
Spawn:
HEAT F 0
HEAT F 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AtomicFireMeleeProtection : PowerProtection
{
damagefactor "AtomicFireMelee", 0.0
powerup.duration 4
}