actor FlameBargeWep_NormalBar : NormalBar{args 210,41}
actor FlameBargeWep_ScriptBar : ScriptBar{}

actor FlameBargeWep : BaseMM8BDMWep
{
Weapon.AmmoUse 3
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Inventory.Pickupmessage "$PU_FLAMEBARGE"
Obituary "$OB_FLAMEBARGE"
Tag "$TAG_FLAMEBARGE"
weapon.ammotype "FlameBargeAmmo"
inventory.icon "FMBGICON"
States
{
SpawnLoop:
FMBG Z 1
loop
Ready:
FMBG A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_FLAMEBARGE)
FMBG A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
FMBG A 0 
goto DeselectSwap
Select:
FMBG A 0 
goto SelectSwap
Fire:
FMBG A 0 A_JumpIfNoAmmo("NoAmmo")
Hold:
FMBG A 0 A_JumpIfNoAmmo("NoAmmo")
FMBG A 0 A_JumpIfInventory("WeaponCharge",1,"Hold2Start")
FMBG A 2 A_GiveInventory("WeaponCharge",1)
FMBG A 0 A_Refire
Goto Fire1
Hold2Start:
FMBG A 0 A_PlaySoundEx("weapon/heat1", "Weapon", 1)
Hold2:
FMBG I 0 A_JumpIfInventory("WeaponCharge",30,"ChargeTransition")
FMBG I 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE1,TCLR_CHARGE1)
FMBG I 0 A_Refire("Hold2.a")
Goto Fire1
Hold2.a:
FMBG J 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG J 1 A_GiveInventory("WeaponCharge",1)
FMBG J 0 A_Refire("Hold2")
Goto Fire1
Hold2e:
FMBG I 0 A_JumpIfInventory("WeaponCharge",30,"ChargeTransition")
Hold2f:
FMBG I 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE1,TCLR_CHARGE1)
FMBG I 0 A_Refire("Hold2f.a")
Goto Fire1
Hold2f.a:
FMBG J 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG J 1 A_GiveInventory("WeaponCharge",1)
FMBG J 0 A_Refire("Hold2e")
Goto Fire1
Hold3Start:
FMBG A 0 A_PlaySoundEx("weapon/heat2", "Weapon", 1)
Hold3:
FMBG A 0 A_JumpIfInventory("WeaponCharge",50,"ChargeTransition")
FMBG K 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE1,TCLR_CHARGE1)
FMBG A 0 A_Refire("Hold3.a")
Goto Fire1
Hold3.a:
FMBG L 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG A 0 A_GiveInventory("WeaponCharge",1)
FMBG A 0 A_Refire("Hold3")
Goto Fire1
Hold3e:
FMBG I 0 A_JumpIfInventory("WeaponCharge",30,"ChargeTransition")
Hold3f:
FMBG K 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE1,TCLR_CHARGE1)
FMBG A 0 A_Refire("Hold3f.a")
Goto Fire1
Hold3f.a:
FMBG L 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG A 0 A_GiveInventory("WeaponCharge",1)
FMBG A 0 A_Refire("Hold3e")
Goto Fire1
Hold4Start:
FMBG A 0 A_PlaySoundEx("weapon/heat3", "Weapon", 1)
Hold4:
FMBG M 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE2,TCLR_CHARGE2)
FMBG M 0 A_Refire("Hold4.a")
Goto Fire2
Hold4.a:
FMBG N 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG N 0 A_GiveInventory("WeaponCharge",1)
FMBG N 0 A_Refire("Hold4b")
Goto Fire2
Hold4b:
FMBG O 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE3,TCLR_CHARGE3)
"####" "#" 0 A_JumpIfInventory("IsBot", 1, "BotFire")
FMBG O 0 A_Refire("Hold4")
Goto Fire2
BotFire:
"####" "#" 0 A_Jump(16, "Fire2")
"####" "#" 0 A_Refire("Hold4")
Goto Fire3

Altfire:
FMBG A 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
FMBG A 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
FMBG A 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
Fire1:
FMBG A 0 A_StopSoundEx("Weapon")
FMBG A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG A 0 A_TakeInventory("WeaponCharge",9999)
//FlamePillar:
FMBG A 0 A_JumpIfInventory("FlameBargeAmmo",3,1)
goto NoAmmo
FMBG A 2 
FMBG F 0  A_PlaySoundEx("weapon/mbuster","Weapon")
FMBG F 0 A_FireCustomMissile("FlameBargePillarProjectile",random(-15,-10),0,8,0,0,random(10,12))
FMBG F 0 A_FireCustomMissile("FlameBargePillarProjectile",random(10, 15),0,8,0,0,random(10,12))
FMBG F 0 A_FireCustomMissile("FlameBargePillarProjectile",0,1,8,0,0,10)
FMBG CDEF 2
FMBG GHB 3
FMBG A 9
Goto Ready+1
Fire2:
FMBG A 0 A_StopSoundEx("Weapon")
FMBG A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG A 0 A_TakeInventory("WeaponCharge",9999)
FMBG A 0 A_JumpIfInventory("FlameBargeAmmo", 14, 1)
goto NoAmmo
FMBG OKI 2
FMBG A 0 A_PlaySound("weapon/atomicfire","Weapon")
FMBG A 0 A_PlaySound("weapon/flamebarge","Weapon")
FMBG I 0 A_TakeInventory("FlameBargeFlightAmmo",9999,TIF_NOTAKEINFINITE)
FMBG I 0 A_TakeInventory("FlameBargeAmmo",14,TIF_NOTAKEINFINITE)
FMBG I 1 ACS_NamedExecuteAlways("core_freezeplayer",0,0,1)
FMBG I 0 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,true)
TNT1 A 0 A_ChangeVelocity(66*cos(pitch),0,18*-sin(pitch)+8,CVF_RELATIVE|CVF_REPLACE)
DashLV3:
	FMBG P 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
	FMBG P 1 A_GiveInventory("FlameBargeBoost",1)
	FMBG Q 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE2,TCLR_CHARGE2)
	FMBG Q 1 A_GiveInventory("FlameBargeBoost",1)
	FMBG R 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGECHARGE3,TCLR_CHARGE3)
	FMBG R 1 A_GiveInventory("FlameBargeBoost",1)
	FMBG R 0 A_GiveInventory("FlameBargeFlightAmmo",1)
	FMBG R 0 A_JumpIf(CallACS("core_CheckFooting"),"DashEnd3")
	FMBG R 0 A_JumpIfInventory("FlameBargeFlightAmmo",15,"DashEnd3")
	Loop
DashEnd3:
FMBG I 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FLAMEBARGE,TCLR_NONE)
FMBG I 0 ACS_NamedExecuteAlways("core_freezeplayer",0,0,0)
FMBG IIIIIIIIIIIIIIIIIIIIIIIIII 1 A_CheckFloor("Dash3EndX")
Goto DashEndFalling
DashEndFalling:
FMBG I 0 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,false)
FMBG I 0 A_JumpIfInventory("FlameBargeGroundCheck",175,"Dash3EndX")
FMBG I 0 A_CheckFloor("Dash3EndX")
FMBG I 0 A_GiveInventory("FlameBargeGroundCheck", 1)
FMBG I 1
loop
Dash3EndX:
FMBG I 0 ACS_NamedExecuteAlways("core_flyplayer",0,0,0,1)
FMBG I 1 A_TakeInventory("FlameBargeGroundCheck",9999)
FMBG I 4 A_TakeInventory("FlameBargeFlightAmmo",9999)
FMBG AAAAA 2 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,false)
goto Ready+1
NoAmmo:
FMBG A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
ChargeTransition:
FMBG A 0 A_JumpIfInventory("WeaponCharge",50,"MovetoCharge2Check")
FMBG A 0 A_JumpIfInventory("WeaponCharge",30,"MovetoCharge1Check")
MovetoCharge1Check:
FMBG A 0 A_JumpIfInventory("FlameBargeAmmo", 5, "Hold3Start")
Goto Hold2f
MovetoCharge2Check:
FMBG A 0 A_JumpIfInventory("FlameBargeAmmo", 14, "Hold4Start")
Goto Hold3f
ClassAltfire:
FMBG A 0 
goto Super::Altfire
}
}


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

actor FlameBargePillarSpawn_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlameBargePFlag",1,"Death")
TNT1 A 0 A_SpawnItemEx("FlameBargePillarProjectile",0,0,4,0,0,12)
TNT1 A 0 A_GiveInventory("FlameBargePFlag",1)
stop
Death:
TNT1 A 0
stop
}
}
actor FlameBargePFlag : PowerUp {Powerup.Duration 2}


actor FlameBargePillarProjectile : BasicProjectile
{
+BRIGHT
PROJECTILE
Damage (CallACS("vile_cbm_damage",8))//1
Obituary "$OB_FLAMEBARGE"
damagetype "FlameBarge"
+RIPPER
+HEXENBOUNCE
-BOUNCEONFLOORS
wallbouncefactor 0.7
bouncefactor 0.7
-NOGRAVITY
Translation "40:47=41:41", "176:191=41:41","229:229=210:210"
Radius 16
Height 16
scale 2.5
speed 20
states
{
Spawn:
HEAM RST 3
loop
Death:
HEAM A 0 A_PlaySoundEx("weapon/atomicfire","Body")
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_SpawnItemEx("FlameBargePillar")
stop
}
}

actor FlameBargePillar : BasicProjectile
{
+BRIGHT
renderstyle translucent
PROJECTILE
Damage (CallACS("vile_cbm_damage",8))//1
+FLOORHUGGER
+RIPPER
Translation "40:47=41:41", "176:191=41:41","229:229=210:210"
damagetype "FlameBarge"
Obituary "$OB_FLAMEBARGE"
Radius 16
Height 64
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 19659, 512) // 6553 = 0.1 * 65536
FMBG STUVWXYWXYWXYWXYWXYWXYWXYWXYWXYWVUTS 3 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor FlameBargeDamager : BasicProjectile
{
PROJECTILE
Damage (CallACS("vile_cbm_damage",15))//2
Obituary "$OB_FLAMEBARGE"
damagetype "FlameBarge2"
Radius 48
Height 32
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 18 A_SpawnItemEx("FlameBargeFX",0,0,0)
stop
}
}

actor FlameBargeFX : BasicGraphicEffect
{
+NOGRAVITY
-SOLID
+NOINTERACTION
Translation "40:47=41:41", "176:191=41:41","229:229=210:210"
Radius 4
Height 4
scale 2.5
States
{
SpawnFrame:
HEAM NOPNOP 3
stop
}
}


actor FlameBargeProtection : PowerProtection
{Damagefactor "FlameBarge", 0.0 Powerup.Duration 5}

actor FlameBargeFlightAmmo : WeaponCharge {}
actor FlameBargeGroundCheck : WeaponCharge {}

Actor FlameBargeBoost : CustomInventory
  {
	States
	{
		Pickup:
		TNT1 P 0 ACS_NamedExecute("vile_statechange",0,2)
		TNT1 A 0 A_SpawnItemEx("FlameBargePillarProjectile",0,0,4,0,1,10)
		TNT1 A 0 A_SpawnItemEx("FlameBargePillarProjectile",0,0,4,0,-1,10)
		TNT1 P 0 A_SpawnItemEx("FlameBargeDamager",0,0,16,50)
		stop
	}
  }