actor BreakBarrierWep_NormalBar : NormalBar{args 85, 41}
actor BreakBarrierWep : BaseMM8BDMWep
{
Weapon.Ammouse 28
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_BREAKBARRIER"
Tag "$TAG_BREAKBARRIER"
Inventory.Pickupmessage "$PU_BREAKBARRIER"
weapon.ammotype "BreakBarrierAmmo"
inventory.icon "BRKBICON"
States
{
SpawnLoop:
BRKB Z 1
loop
Ready:
BKBH J 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_BREAKBARRIER)
BKBH J 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
BKBH J 0
goto DeselectSwap
Select:
BKBH K 0
goto SelectSwap
Fire:
BKBH J 0 A_JumpIfInventory("BreakBarrierFlag",1,"NoAmmo")
BKBH J 0 A_JumpIfNoAmmo("NoAmmo")
BKBH KK 1 A_GiveInventory("ShieldCheck",1)
BKBH K 0 A_TakeInventory("ShieldCheck",1)
BKBH K 0 A_SpawnItemEx("BreakBarrierGFX_Spawn")
BKBH LLMMNNOOPP 1 A_Stop
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
BKBH J 0 A_TakeInventory("BreakBarrierAmmo",28)
BKBH A 0 A_GiveInventory("BreakBarrierPower_P",1)
BKBH A 0 A_GiveInventory("BreakBarrierFlag",1)
BKBH M 0 A_PlaySoundEx("weapon/CopyVision", "Weapon")
BKBH M 0 A_SpawnItemEx("BreakBarrierShield",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BKBH M 0 A_GiveInventory("BreakBarrierSpawner",1)
BKBH J 8
BKBH J 1 
goto Ready+1
NoAmmo:
BKBH J 1 ACS_NamedExecute("core_noammo",0)
goto Ready+1
}
}

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

actor BreakBarrierPower_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_cbm_check"),"CBM")
BKBH A 0 A_GiveInventory("BreakBarrierPower",1)
BKBH A 0 A_GiveInventory("BreakBarrierAmount",150)
stop
CBM:
BKBH A 0 A_GiveInventory("BreakBarrierPowerC",1)
BKBH A 0 A_GiveInventory("BreakBarrierAmountC",1500)
stop
}
}
actor BreakBarrierPower : BasicArmorPickup
{
Armor.Savepercent 100
Armor.Saveamount 150
States
{
Spawn:
TNT1 A 0
loop
}
}


actor BreakBarrierPowerC : BasicArmorPickup
{
Armor.Savepercent 100
Armor.Saveamount 1500
States
{
Spawn:
TNT1 A 0
loop
}
}


actor BreakBarrierFlag : Once {}

actor BreakBarrierSpawner : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("BreakBarrierWatcher")
stop
}
}

actor BreakBarrierWatcher
{
	+MISSILE
	+NOINTERACTION
	+DONTBLAST
	+NOGRAVITY
	-SOLID
	Height 1
	Radius 1
	var int user_countdown;
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
			TNT1 A 0 A_GiveToTarget("BreakBarrierSoundCheck",1)
			TNT1 A 0 A_JumpIfInTargetInventory("ShieldCheck", 1, "DeathSilent")
			TNT1 A 0 A_JumpIfInTargetInventory("BasicArmor", 1, "Spawn")
			Goto Death
		Death:
			TNT1 AA 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
			TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Weapon",0)
		DeathSilent:
			TNT1 A 0 A_TakeFromTarget("BasicArmor",999)
			TNT1 A 0 A_TakeFromTarget("BreakBarrierAmount",999)
			TNT1 A 0 A_TakeFromTarget("BreakBarrierFlag",999)
			TNT1 A 0 A_GiveToTarget("BreakBarrierSlow",1)
			TNT1 A 5
			stop
		End:
			TNT1 A 0
			TNT1 A 0 A_TakeFromTarget("BasicArmor",999)
			TNT1 A 0 A_TakeFromTarget("BreakBarrierAmount",999)
			TNT1 A 0 A_TakeFromTarget("BreakBarrierFlag",999)
			TNT1 A 0 A_GiveToTarget("BreakBarrierSlow",1)
			stop
	}
}

actor BreakBarrierShield : BasicShieldWarper
{
translation "192:192=85:85", "198:198=41:41", "199:199=43:43"
Scale 2.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient",1)
TNT1 A 1
TNT1 A 0 ACS_NamedExecuteAlways("core_shieldwarper_break", 0, "test")
TNT1 A 0 A_Jump(256, "Shield")
Goto Shield
Shield:
BREK SSSTTTUUU 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
loop
Death:
TNT1 A 0
TNT1 AA 1
stop
}
}

actor BreakBarrierAmount : WeaponCharge
{inventory.maxamount 150}

actor BreakBarrierAmountC : WeaponCharge
{inventory.maxamount 1500}

actor BreakBarrierSoundCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_cbm_check"),"CBMCheck")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_breakcheck")-ACS_NamedExecuteWithResult("vile_checkarmor")>0,"Pickup2")
stop
CBMCheck:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_breakcheckC")-ACS_NamedExecuteWithResult("vile_checkarmor")>0,"PickupC")
stop
Pickup2:
TNT1 A 0 A_GiveInventory("BreakBarrierPainSound",1)
TNT1 A 0 A_TakeInventory("BreakBarrierAmount",999)
TNT1 A 0 A_GiveInventory("BreakBarrierAmount",ACS_NamedExecuteWithResult("vile_checkarmor"))
stop
PickupC:
TNT1 A 0 A_GiveInventory("BreakBarrierPainSound",1)
TNT1 A 0 A_TakeInventory("BreakBarrierAmountC",9999)
TNT1 A 0 A_GiveInventory("BreakBarrierAmountC",ACS_NamedExecuteWithResult("vile_checkarmor"))
stop
}
}


actor BreakBarrierPainSound : CustomInventory
{
	States
	{
		Pickup:
		Use:
			TNT1 A 0
			TNT1 A 0 A_PlaySoundEx("misc/mm4pain", "Body")
			stop
	}
}

actor BreakBarrierSlow : PowerSpeed { Speed 0.34 Powerup.Duration -5 }
actor BreakBarrierGFX : BasicGraphicEffect { States { SpawnFrame: MMFX CDECDECDE 2 A_Recoil(0) stop } }
actor BreakBarrierGFX_Spawn : BasicGraphicEffect
{
States
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,0)   TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,22.5)  TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,45)  TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,67.5)
TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,90)  TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,112.5) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,135) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,157.5)
TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,180) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,202.5) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,225) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,247.5)
TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,270) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,292.5) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,315) TNT1 A 0 A_SpawnItemEx("BreakBarrierGFX",500,0,32,-30,0,0,337.5)
TNT1 A 18 A_PlaySoundEx("weapon/BreakBarrierSpawn","Weapon")
TNT1 A 1
stop
}
}
