actor SuppressingFoamWep_NormalBar : NormalBar { args 197, 174 }
actor SuppressingFoamWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 84
Weapon.SlotNumber 3
Inventory.Pickupmessage "$PU_SUPPRESSINGFOAM"
Obituary "$OB_SUPPRESSINGFOAM"
Tag "$TAG_SUPPRESSINGFOAM"
weapon.ammotype "SuppressingFoamAmmo"
inventory.icon "SFOMICON"
States
{
SpawnLoop:
SFOM Z -1
loop
Ready:
SFOM A 0 ACS_NamedExecuteWithResult("core_weaponcolor", CLR_SUPPRESSINGFOAM)
SFOM A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SFOM A 0
goto DeselectSwap
Select:
SFOM A 0
goto SelectSwap
Fire:
SFOM B 0 A_JumpIfNoAmmo("NoAmmo")
SFOM B 0 A_PlaySoundEx("weapons/mmqg/suppressingfoamfire","Weapon")
SFOM B 2 A_FireCustomMissile("SuppressingFoam",random(-5,5),1,8,0,0,random(-3,3))
SFOM B 0 A_Refire("FireCont")
Goto Ready+1
FireCont:
SFOM B 0 A_JumpIfNoAmmo("NoAmmoEnd")
SFOM B 0 A_PlaySoundEx("weapons/mmqg/suppressingfoamfire","Weapon")
SFOM C 2 A_FireCustomMissile("SuppressingFoam",random(-5,5),1,8,0,0,random(-3,3))
SFOM B 0 A_Refire("FireCont")
SFOM CB 3
Goto Ready+1
NoAmmo:
SFOM A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
NoAmmoEnd:
SFOM A 0 ACS_NamedExecuteAlways("core_noammo",0)
SFOM CB 3
Goto Ready+1
}
}

actor SuppressingFoamAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 84
+INVENTORY.IGNORESKILL
}

actor SuppressingFoam : BasicProjectile
{
damagetype "SuppressingFoam"
Obituary "$OB_SUPPRESSINGFOAM"
Radius 8
-NOGRAVITY
Height 8
damage (CallACS("mmqg_cbm_damage",6))
speed 40
States
{
Spawn:
SFOM D 0
SFOM D 2 A_SpawnItemEx("SuppressingFoamFX", 0, 0, 0, random(2, 7), 0, random(-3, 3), 0, SXF_WEPFXCOLOR)
SFOM D 2
SFOM E 2 A_SpawnItemEx("SuppressingFoamFX", 0, 0, 0, random(2, 7), 0, random(-3, 3), 0, SXF_WEPFXCOLOR)
SFOM FN 2
SFOM F 0
Death:
SFOM FF 0 A_SpawnItemEx("SuppressingFoamFX", 0, 0, 0, random(-3, 3), 0, random(-3, 3), random(0, 359), SXF_WEPFXCOLOR)
stop
XDeath:
SFOM F 0 A_SpawnItemEx("SuppressingFoamFX", 0, 0, 0, random(-3, 3), 0, random(-3, 3), random(0, 359), SXF_WEPFXCOLOR)
SFOM F 0 A_SetScale(1.75,1.75)
SFOM MNO 2
stop
}
}

actor SuppressingFoamStack1 : PowerUp
{
Powerup.Duration 15
}

actor SuppressingFoamStack2 : SuppressingFoamStack1 {}
actor SuppressingFoamStack3 : SuppressingFoamStack1 {}
actor SuppressingFoamStack4 : SuppressingFoamStack1 {}
actor SuppressingFoamStack5 : SuppressingFoamStack1 {}

actor SuppressingFoamFX : BasicGraphicEffect
{
-NOINTERACTION
-NOGRAVITY
gravity 0.5
scale 1.75
States
{
SpawnFrame:
SFOM G 0 A_Jump(256,"Frame1","Frame2","Frame3","Frame4","Frame5","Frame6")
Frame1:
SFOM G 10
stop
Frame2:
SFOM H 10
stop
Frame3:
SFOM I 10
stop
Frame4:
SFOM J 10
stop
Frame5:
SFOM K 10
stop
Frame6:
SFOM L 10
stop
}
}

actor SuppressingFoamFX2 : SuppressingFoamFX
{
scale 1.15
+RIPPER damage (0)
radius 2
height 2
renderstyle "translucent"
alpha 1.0
gravity 0.1
States
{
SpawnFrame:
SFOM G 0 A_Jump(256,"Frame1","Frame2","Frame3","Frame4","Frame5","Frame6")
SFOM G 0
goto Frame1
Frame1:
SFOM G 5 A_ScaleVelocity(0.3)
SFOM G 5
SFOM GGG 2 A_FadeOut(0.3)
stop
Frame2:
SFOM H 5 A_ScaleVelocity(0.3)
SFOM H 5
SFOM HHH 2 A_FadeOut(0.3)
stop
Frame3:
SFOM I 5 A_ScaleVelocity(0.3)
SFOM I 5
SFOM III 2 A_FadeOut(0.3)
stop
Frame4:
SFOM J 5 A_ScaleVelocity(0.3)
SFOM J 5
SFOM JJJ 2 A_FadeOut(0.3)
stop
Frame5:
SFOM K 5 A_ScaleVelocity(0.3)
SFOM K 5
SFOM KKK 2 A_FadeOut(0.3)
stop
Frame6:
SFOM L 5 A_ScaleVelocity(0.3)
SFOM L 5
SFOM LLL 2 A_FadeOut(0.3)
stop
}

}

actor SuppressingDrip : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("PowerExtinguished5", 1, "Spawn5")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished4", 1, "Spawn4")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished3", 1, "Spawn3")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished2", 1, "Spawn2")
Spawn1:
TNT1 A 0 A_SpawnItemEx("SuppressingFoamFX2",random(-24,24),random(-24,24),random(16,48),0,0,frandom(-2,-1),0,SXF_NOCHECKPOSITION)
stop
Spawn2:
TNT1 AA 0 A_SpawnItemEx("SuppressingFoamFX2",random(-24,24),random(-24,24),random(16,48),0,0,frandom(-2,-1),0,SXF_NOCHECKPOSITION)
stop
Spawn3:
TNT1 AAA 0 A_SpawnItemEx("SuppressingFoamFX2",random(-24,24),random(-24,24),random(16,48),0,0,frandom(-2,-1),0,SXF_NOCHECKPOSITION)
stop
Spawn4:
TNT1 AAAA 0 A_SpawnItemEx("SuppressingFoamFX2",random(-24,24),random(-24,24),random(16,48),0,0,frandom(-2,-1),0,SXF_NOCHECKPOSITION)
TNT1 A 2
stop
Spawn5:
TNT1 AAAAA 0 A_SpawnItemEx("SuppressingFoamFX2",random(-24,24),random(-24,24),random(16,48),0,0,frandom(-2,-1),0,SXF_NOCHECKPOSITION)
stop
}
}

actor SuppressingExtinguished : CustomInventory
{
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Use:
TNT1 A 0 A_JumpIfInventory("PowerExtinguished", 1, 2)
TNT1 A 0 A_SpawnItemEx("SuppressingFoamWatcher")
TNT1 A 0 A_GiveInventory("PowerExtinguishedFade", 1)
TNT1 A 0 A_JumpIfInventory("PowerExtinguished4", 1, "Spawn5")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished3", 1, "Spawn4")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished2", 1, "Spawn3")
TNT1 A 0 A_JumpIfInventory("PowerExtinguished", 1, "Spawn2")
TNT1 A 0 A_GiveInventory("ExtinguishedPower", 1)
stop
Spawn5:
TNT1 A 0 A_GiveInventory("ExtinguishedPower", 1)
TNT1 A 0 A_GiveInventory("ExtinguishedPower5", 1)
Spawn4:
TNT1 A 0 A_GiveInventory("ExtinguishedPower", 1)
TNT1 A 0 A_GiveInventory("ExtinguishedPower4", 1)
Spawn3:
TNT1 A 0 A_GiveInventory("ExtinguishedPower", 1)
TNT1 A 0 A_GiveInventory("ExtinguishedPower3", 1)
Spawn2:
TNT1 A 0 A_GiveInventory("ExtinguishedPower", 1)
TNT1 A 0 A_GiveInventory("ExtinguishedPower2", 1)
stop
}
}

actor ExtinguishedPower : PowerupGiver
{
Speed 0.91
powerup.duration 50
powerup.type "PowerExtinguished"
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
states
{
Pickup:
TNT1 A 0 
TNT1 A 175
stop
}
}

actor ExtinguishedPower2 : ExtinguishedPower {powerup.type "PowerExtinguished2"}
actor ExtinguishedPower3 : ExtinguishedPower {powerup.type "PowerExtinguished3"}
actor ExtinguishedPower4 : ExtinguishedPower {powerup.type "PowerExtinguished4"}
actor ExtinguishedPower5 : ExtinguishedPower {powerup.type "PowerExtinguished5"}

actor PowerExtinguished : PowerSpeed {Speed 0.91}
actor PowerExtinguished2 : PowerSpeed {Speed 0.91}
actor PowerExtinguished3 : PowerSpeed {Speed 0.91}
actor PowerExtinguished4 : PowerSpeed {Speed 0.91}
actor PowerExtinguished5 : PowerSpeed {Speed 0.91}

actor PowerExtinguishedFade : Powerup
{
powerup.duration 0x7FFFFFFD
Powerup.Color "38 b8 f8", 0.23
}

actor SuppressingFoamWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0 
TNT1 A 3 A_GiveToTarget("SuppressingDrip", 1)
TNT1 A 0 A_JumpIfInTargetInventory("PowerExtinguished", 1, "Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("PowerExtinguished2", 1, "Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("PowerExtinguished3", 1, "Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("PowerExtinguished4", 1, "Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("PowerExtinguished5", 1, "Spawn")
TNT1 A 0 A_TakeFromTarget("PowerExtinguishedFade", 1)

TNT1 A 0 A_TakeFromTarget("PowerExtinguished", 1)
TNT1 A 0 A_TakeFromTarget("PowerExtinguished2", 1)
TNT1 A 0 A_TakeFromTarget("PowerExtinguished3", 1)
TNT1 A 0 A_TakeFromTarget("PowerExtinguished4", 1)
TNT1 A 0 A_TakeFromTarget("PowerExtinguished5", 1)
stop
}
}
