actor BURST_MoonGasWep_NormalBar { args 59, 249 }

actor BURST_MoonGasWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 140
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_BURST_MOONGAS"
Obituary "$OB_BURST_MOONGAS"
Tag "$TAG_BURST_MOONGAS"
weapon.ammotype "BURST_MoonGasAmmo"
inventory.icon "BMGSI0"
States
{
SpawnLoop:
BMGS A 1
loop
Ready:
BMGS B 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_BURST_MOONGAS)
BMGS B 1 A_WeaponReady
Goto Ready+1
Deselect:
BMGS B 0
goto DeselectSwap
Select:
BMGS B 0
goto SelectSwap
Fire:
BMGS C 0 A_JumpIfNoAmmo("NoAmmo")
BMGS C 0 A_PlaySoundEx("misc/gamma2jet","Weapon")
BMGS C 0 A_TakeInventory("BURST_MoonGas_F",1)
BMGS CD 2
FireL:
BMGS D 0 A_JumpIfNoAmmo("FireE")
BMGS D 1 A_GiveInventory("BURST_MoonGas_CI")
BMGS D 0 A_GiveInventory("BURST_MoonGasSFX")
BMGS D 0 A_Refire("FireL")
FireE:
BMGS DC 6
goto Ready+1
NoAmmo:
BMGS B 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor BURST_MoonGasAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 140
+INVENTORY.IGNORESKILL
}

actor BURST_MoonGas_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PlayerPropertyRage",1,"R")
TNT1 AAAAA 0 A_FireCustomMissile("BURST_MoonGas",frandom(-3.5,3.5),0,8,0)
TNT1 A 0 A_TakeInventory("BURST_MoonGasAmmo",1)
stop
R:
TNT1 AAAAAAAAAA 0 A_FireCustomMissile("BURST_MoonGas",frandom(-3.5,3.5),0,8,0)
TNT1 A 0 A_TakeInventory("BURST_MoonGasAmmo",2)
stop
}
}

actor BURST_MoonGasSFX : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BURST_MoonGas_F",1,"P2")
TNT1 A 0 A_GiveInventory("BURST_MoonGas_F")
stop
P2:
BMGS D 0 A_PlaySoundEx("misc/gamma2jet","Weapon")
BMGS D 0 A_TakeInventory("BURST_MoonGas_F")
stop
}
}

actor BURST_MoonGas_F : CutterFlag {}

actor BURST_MoonGas : BasicProjectile
{
+BRIGHT
+RIPPER
+HEXENBOUNCE

+CANBOUNCEWATER
+DONTSPLASH
+FORCEXYBILLBOARD

Renderstyle "Translucent"
Alpha 0.02
damagetype "BURST_MoonGas"
Obituary "$OB_BURST_MOONGAS"
Speed 18
Damage (CallACS("burst_cbm_damage",6)) //8//6
radius 10
height 10
reactiontime 210
Scale 3
States
{
Spawn:
TNT1 A 0
//TNT1 A 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_ALL, 9830.4, 192) //0.15x
TNT1 A 0 ThrustThingZ(0,frandom(-3.5,3.5),0,1)
TNT1 A 0 A_ScaleVelocity(frandom(0.9,1.1))
BMGS EFGH 2 A_FadeIn(0.055)
BMGS IJK 2 A_ScaleVelocity(0.60)
SpawnL:
BMGS KKLL 1 A_Countdown 
loop
Death:
BMGS LLKKJJIIHHGGFFEE 1 A_FadeOut(Alpha/17)
stop
}
}

actor BURST_MoonGasProtection : PowerProtection {powerup.duration 17 Damagefactor "BURST_MoonGas", 0.0}
actor BURST_MoonGasSpeed : PowerSpeed {powerup.duration 30 Speed 0.9 +INVENTORY.ADDITIVETIME +POWERSPEED.NOTRAIL}
actor BURST_MoonGasSpeed2 : BURST_MoonGasSpeed {powerup.duration 0x7FFFFFFD}
actor BURST_MoonGasSpeed3 : BURST_MoonGasSpeed2 {}
actor BURST_MoonGasSpeed4 : BURST_MoonGasSpeed2 {}
actor BURST_MoonGasSpeed5 : BURST_MoonGasSpeed2 {}
actor BURST_MoonGasSpeed6 : BURST_MoonGasSpeed2 {}
actor BURST_MoonGasSpeed7 : BURST_MoonGasSpeed2 {}

actor BURST_MoonGas_P : CustomInventory
{
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Use:
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed", 1, "Use2")
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasWatcher")
UseE:
TNT1 A 0 A_GiveInventory("BURST_MoonGasPower", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade", 1)
stop
Use2:
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed", 1)
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed2", 1, "Use3")
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade2", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed2", 1)
goto UseE
Use3:
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed2", 1)
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed3", 1, "Use4")
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade3", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed3", 1)
goto UseE
Use4:
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed3", 1)
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed4", 1, "Use5")
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade4", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed4", 1)
goto UseE
Use5:
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed4", 1)
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed5", 1, "Use6")
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade5", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed5", 1)
goto UseE
Use6:
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed5", 1)
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed6", 1, "Use7")
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade6", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed6", 1)
goto UseE
Use7:
TNT1 A 0 A_GiveInventory("BURST_MoonGasFade7", 1)
TNT1 A 0 A_GiveInventory("BURST_MoonGasSpeed7", 1)
goto UseE
}
}

actor BURST_MoonGasPower : PowerupGiver
{
Speed 0.9
powerup.duration 30
powerup.type "BURST_MoonGasSpeed"
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.ADDITIVETIME
-INVBAR
states
{
Pickup:
TNT1 A 0 

TNT1 A 105
stop
}
}

actor BURST_MoonGasFade : Powerup
{
powerup.duration 0x7FFFFFFD
Powerup.Color "A7 00 00", 0.33
}

actor BURST_MoonGasFade2 : BURST_MoonGasFade {Powerup.Color "9B 00 00", 0.41} //0.38
actor BURST_MoonGasFade3 : BURST_MoonGasFade {Powerup.Color "8B 00 00", 0.49} //0.43
actor BURST_MoonGasFade4 : BURST_MoonGasFade {Powerup.Color "7F 00 00", 0.57} //0.48
actor BURST_MoonGasFade5 : BURST_MoonGasFade {Powerup.Color "73 00 00", 0.65} //0.53
actor BURST_MoonGasFade6 : BURST_MoonGasFade {Powerup.Color "67 00 00", 0.73} //0.58
actor BURST_MoonGasFade7 : BURST_MoonGasFade {Powerup.Color "5B 00 00", 0.81} //0.63

actor BURST_MoonGasWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0 
TNT1 A 3 A_GiveToTarget("BURST_MoonGasFX", 1)
TNT1 A 0 A_JumpIfInTargetInventory("BURST_MoonGasSpeed", 1, "Spawn")
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade2", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade3", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade4", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade5", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade6", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasFade7", 1)

TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed2", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed3", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed4", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed5", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed6", 1)
TNT1 A 0 A_TakeFromTarget("BURST_MoonGasSpeed7", 1)
stop
}
}

actor BURST_MoonGasFX : CustomInventory
{
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Use:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasGFX", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359))
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed7",1,"Use7")
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed6",1,"Use6")
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed5",1,"Use5")
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed4",1,"Use4")
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed3",1,"Use3")
TNT1 A 0 A_JumpIfInventory("BURST_MoonGasSpeed2",1,"Use2")
Use2:
TNT1 A 0 A_Jump(12,"SH","BH","SW","BW","MB")
stop
Use3:
TNT1 A 0 A_Jump(14,"SH","BH","SW","BW","MB")
stop
Use4:
TNT1 A 0 A_Jump(16,"SH","BH","SW","BW","MB")
stop
Use5:
TNT1 A 0 A_Jump(18,"SH","BH","SW","BW","MB")
stop
Use6:
TNT1 A 0 A_Jump(20,"SH","BH","SW","BW","MB")
stop
Use7:
TNT1 A 0 A_Jump(22,"SH","BH","SW","BW","MB")
stop
SH:
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_SH_H", random(160, 480), 0, Random(160,480))
stop
BH:
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_BH_H", random(160, 480), 0, Random(160,480))
stop
SW:
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_SW_H", random(160, 480), 0, Random(160,480))
stop
BW:
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_BW_H", random(160, 480), 0, Random(160,480))
stop
MB:
TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_MB_H",0,0,0,35,random(-60,60),random(-60,60),0,SXF_TRANSFERPOINTERS)
stop
}
}

actor BURST_MoonGasGFX : BasicGraphicEffect
{
+FLOATBOB
+FORCEXYBILLBOARD
+BRIGHT
Height 0
Radius 0
States
{
Spawn:
BMGS EEFFGGHHIIJJKKLL 1 A_Fadeout(1/32)
loop
}
}

/*
actor BURST_MoonGasFX_SH_H : BasicWatcher
{
-NOGRAVITY
-NOINTERACTION
radius 16
height 16
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Log("Spawn")
TNT1 A 1 A_CheckFloor("Floor")
wait
Floor:
TNT1 A 1 A_SpawnItemEx("BURST_MoonGasFX_SH",0,0,z-floorz)
TNT1 A 0 A_Log("Floor")
stop
}
}*/

actor BURST_MoonGasFX_SH_H : BasicProjectile
{
+THRUACTORS -NOGRAVITY +DONTBLAST
States
{
Spawn: TNT1 A 35
loop
death: TNT1 A 0 A_CheckFloor("floorGas") stop
floorGas: TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_SH")
stop
}
}

actor BURST_MoonGasFX_BH_H : BURST_MoonGasFX_SH_H
{
States
{
floorGas: TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_BH")stop
}
}

actor BURST_MoonGasFX_SW_H : BURST_MoonGasFX_SH_H
{
States
{
floorGas: TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_SW")stop
}
}

actor BURST_MoonGasFX_BW_H : BURST_MoonGasFX_SH_H
{
States
{
floorGas: TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_BW")stop
}
}

actor BURST_MoonGasFX_SH : BasicGraphicEffect
{
reactiontime 30
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("theburst_moongas_fx",0)
TNT1 A 1 A_JumpIf(CallACS("theburst_moongas_IsPointerClient",2)==1,"Spawn2")
stop
Spawn2:
HBAL AAAAAABBBBBB 1 A_JumpIfCloser(32,"Spawn3")
HBAL B 0 A_Countdown
loop
Spawn3:
TNT1 A 0 A_PlaySoundEx("item/energyup","Voice")
TNT1 A 0 A_Jump(256,"Spawn4")
goto Spawn4
Spawn4:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Warp(AAPTR_TARGET, 8, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor BURST_MoonGasFX_BH : BURST_MoonGasFX_SH
{
States
{
Spawn2:
HBAL CCCCCCDDDDDD 1 A_JumpIfCloser(32,"Spawn3")
HBAL B 0 A_Countdown
loop
Spawn3:
TNT1 A 0 A_PlaySoundEx("item/energyup/large","Voice")
TNT1 A 0 A_Jump(256,"Spawn4")
goto Spawn4
}
}

actor BURST_MoonGasFX_SW : BURST_MoonGasFX_SH
{
States
{
Spawn:
TNT1 A 0
EBAL A 0 A_JumpIf(tid!=0, 2)
EBAL A 0 Thing_ChangeTID(0,999)
EBAL A 0
TNT1 A 0 ACS_NamedExecuteAlways("theburst_moongas_fx",0)
TNT1 A 1 A_JumpIf(CallACS("theburst_moongas_IsPointerClient",2)==1,"Spawn2")
stop
Spawn2:
EBAL AAAAAABBBBBB 1 A_JumpIfCloser(32,"Spawn3")
EBAL B 0 A_Countdown
loop
}
}

actor BURST_MoonGasFX_BW : BURST_MoonGasFX_SW
{
States
{
Spawn2:
EBAL CCCCCCDDDDDD 1 A_JumpIfCloser(32,"Spawn3")
EBAL B 0 A_Countdown
loop
}
}

actor BURST_MoonGasFX_MB_H : BURST_MoonGasFX_SH_H
{
+NOGRAVITY
+NOTARGETSWITCH
States
{
death: TNT1 A 0 A_SpawnItemEx("BURST_MoonGasFX_MB",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)stop
}
}

actor BURST_MoonGasFX_MB : BasicGraphicEffect
{
+BRIGHT
+NOTARGETSWITCH
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("theburst_moongas_fx",0)
TNT1 A 0 A_PlaySoundEx("weapons/busters/megabusterfire","Voice")
TNT1 A 0 A_FaceTarget
TNT1 A 1 A_JumpIf(CallACS("theburst_moongas_IsPointerClient",2)==1,"Spawn2")
stop
Spawn2:
TNT1 AA 1 A_FaceTarget
BUST A 1 
wait
}
}