actor BraceBarrierWep_NormalBar : NormalBar{args 4, 206}
actor BraceBarrierWep : BaseMM8BDMWep
{
Weapon.Ammouse 28
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_BRACEBARRIER"
Tag "$TAG_BRACEBARRIER"
Inventory.Pickupmessage "$PU_BRACEBARRIER"
weapon.ammotype "BraceBarrierAmmo"
inventory.icon "BRBRICON"
States
{
SpawnLoop:
BRBR Z 1
loop
Ready:
BRBH J 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_BRACEBARRIER)
BRBH J 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
BRBH J 0
goto DeselectSwap
Select:
BRBH K 0
goto SelectSwap
Fire:
BRBH J 0 A_JumpIfInventory("BraceBarrierCooldown",1,"NoAmmo")
BRBH J 0 A_JumpIfInventory("BraceBarrierTime",1,"NoAmmo")
BRBH J 0 A_JumpIfNoAmmo("NoAmmo")
BRBH K 3 A_GiveInventory("ShieldCheck",1)
BRBH K 0 A_TakeInventory("ShieldCheck",1)
BRBH J 0 A_TakeInventory("BraceBarrierAmmo",28,TIF_NOTAKEINFINITE)
BRBH A 0 A_GiveInventory("BraceBarrierPower",1)
BRBH M 0 A_GiveInventory("BraceBarrierTime", 420)
BRBH M 0 A_PlaySoundEx("weapon/BraceBarrier", "Weapon")
BRBH M 0 A_SpawnItemEx("BraceBarrierShield",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BRBH M 0 A_GiveInventory("BraceBarrierSpawner",1)
BRBH LMNOP 2
BRBH J 8
BRBH J 1 
goto Ready+1
NoAmmo:
BRBH J 1 ACS_NamedExecute("core_noammo",0)
goto Ready+1
}
}

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

actor BraceBarrierTime : Inventory
{
inventory.amount 1
inventory.maxamount 420 //12 seconds.
}

actor BraceBarrierPower : PowerProtection
{
Powerup.duration -12
damagefactor "Normal", 0.40
damagefactor "Crush", 1
damagefactor "Falling", 1
damagefactor "Fire", 1
damagefactor "Drowning", 1
damagefactor "Slime", 1
damagefactor "Ice", 1
damagefactor "Spiney", 1
}

actor BraceBarrierSpawner : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("BraceBarrierWatcher")
stop
}
}

actor BraceBarrierNORIP_ON : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeFlag("DONTRIP",1)
stop
}
}

actor BraceBarrierNORIP_OFF : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeFlag("DONTRIP",0)
stop
}
}

actor BraceBarrierWatcher
{
	+MISSILE
	+NOINTERACTION
	+DONTBLAST
	+NOGRAVITY
	-SOLID
	Height 1
	Radius 1
	var int user_countdown;
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1
			TNT1 A 0 A_TakeFromTarget("BraceBarrierTime",1)
			TNT1 A 0 A_GiveToTarget("BraceBarrierPower",1)
			TNT1 A 0 A_GiveToTarget("BraceBarrierNORIP_On",1)
			TNT1 A 0 A_SetUserVar("user_countdown", user_countdown + 1)
			TNT1 A 0 A_JumpIfInTargetInventory("ShieldCheck", 1, "DeathSilent")
			TNT1 A 0 A_JumpIf(user_countdown >= 420, "DeathSilent")
			TNT1 A 0 A_JumpIfInTargetInventory("BraceBarrierTime", 1, "Spawn")
			Goto Death
		Death:
			TNT1 AA 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		DeathSilent:
			TNT1 A 0 A_TakeFromTarget("BraceBarrierPower", 999)
			TNT1 A 0 A_TakeFromTarget("BraceBarrierTime", 9999)
			TNT1 A 0 A_GiveToTarget("BraceBarrierNORIP_OFF",1)
			TNT1 A 0 A_GiveToTarget("BraceBarrierCooldown", 1)
			TNT1 A 0 A_SpawnItemEx("BraceBarrierCooldowner", 1)
			TNT1 A 5
			stop
		End:
			TNT1 A 0
			TNT1 A 0 A_TakeFromTarget("BraceBarrierPower", 999)
			TNT1 A 0 A_TakeFromTarget("BraceBarrierTime", 9999)
			TNT1 A 0 A_GiveToTarget("BraceBarrierNORIP_OFF",1)
			TNT1 A 0 A_GiveToTarget("BraceBarrierCooldown", 1)
			TNT1 A 0 A_SpawnItemEx("BraceBarrierCooldowner", 1)
			stop
	}
}

actor BraceBarrierShield : BasicShieldWarper
{
+BRIGHT
Scale 1.75
renderstyle translucent
alpha 0.2
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient",1)
TNT1 A 1
TNT1 A 0 ACS_NamedExecuteAlways("core_shieldwarper_brace", 0, "test")
TNT1 A 0 A_Jump(256, "ShieldStart")
Goto ShieldStart
ShieldStart:
BRBA X 0 A_SetScale(3.0,3.0) BRBA X 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BRBA X 0 A_FadeIn(0.2)
BRBA X 0 A_SetScale(2.5,2.5) BRBA X 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BRBA X 0 A_FadeIn(0.2)
BRBA X 0 A_SetScale(2.0,2.0) BRBA Y 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BRBA X 0 A_FadeIn(0.2)
BRBA X 0 A_SetScale(1.75,1.75) BRBA Y 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BRBA X 0 A_FadeIn(1.0)
Shield:
BRBA XXYY 1 A_Warp(AAPTR_TARGET, 0, 0, -4, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
loop
Death:
TNT1 A 0
TNT1 A 2
stop
}
}


actor BraceBarrierCooldowner : BasicCooldowner
{
reactiontime 80
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 1 A_GiveInventory("BraceBarrierCooldownerFunc",1)
loop
Death:
TNT1 A 0 A_TakeFromTarget("BraceBarrierCooldown",1)
stop
}
}


actor BraceBarrierCooldownerFunc : BasicCooldownerFunc
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInTargetInventory("BraceBarrierCooldown",1,"PickupBasic")
goto PickupRemove
}
}


actor BraceBarrierCooldown : PowerUp
{
powerup.duration 80
}
