actor BadgeBarrierWep_NormalBar : NormalBar{args 4, 216}
actor BadgeBarrierWep_ScriptBar : ScriptBar{}
actor BadgeBarrierWep : BaseMM8BDMWep
{
Weapon.AmmoUse 14
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_BADGEBARRIER"
Obituary "$OB_BADGEBARRIER"
Tag "$TAG_BADGEBARRIER"
weapon.ammotype "BadgeBarrierAmmo"
inventory.icon "BBRRICON"
States
{
SpawnLoop:
BBRR Z 1
loop
Ready:
BBRR A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_BADGEBARRIER)
BBRR A 0 A_ClearRefire
BBRR A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
BBRR A 0 
BBRR A 0 A_TakeInventory("BadgeBarrierFlag",999)
BBRR A 0 A_TakeInventory("BadgeBarrierKill",999)
BBRR A 0 A_GiveInventory("BadgeBarrierTrigger",1)
goto  DeselectSwap
Select:
BBRR A 0
goto SelectSwap
Fire:
BBRR A 0 A_JumpifInventory("BadgeBarrierFlag",1,"FireEarly")

BBRR A 0 A_JumpIfNoAmmo("NoAmmo")
BBRR A 0 A_JumpIfInventory("BadgeBarrierTrigger",1,"NoAmmo")

BBRR A 0 A_TakeInventory("BadgeBarrierAmmo",14,TIF_NOTAKEINFINITE)
BBRR A 0 A_PlaySoundEx("weapon/timestopper", "Weapon")
BBRR A 0 A_SpawnItemEx("BadgeBarrierPart_1", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
BBRR A 0 A_SpawnItemEx("BadgeBarrierPart_2", 0, 0, 0, 0, 0, 0, 90, SXF_NOCHECKPOSITION)
BBRR A 0 A_SpawnItemEx("BadgeBarrierPart_3", 0, 0, 0, 0, 0, 0, 180, SXF_NOCHECKPOSITION)
BBRR A 0 A_SpawnItemEx("BadgeBarrierPart_4", 0, 0, 0, 0, 0, 0, 270, SXF_NOCHECKPOSITION)
BBRR BCCA 4 A_GiveInventory("BadgeBarrierFlag",7)
BBRR A 7 
Goto Ready2a

Altfire:
BBRR A 0 A_JumpIfInventory("BadgeBarrierFlag",1,"FireEarly")
goto Super::Altfire


Ready2a:
BBRR A 1 A_WeaponReady
BBRR A 0 A_PlaySoundEx("weapon/badgebullet", "Weapon")
BBRR B 0 ACS_NamedExecute("vile_statechange",0,2)
BBRR B 0 A_FireCustomMissile("BadgeBarrierBullet",0,0,8,0)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",1)
BBRR BCA 2 A_WeaponReady
BBRR B 0 A_JumpIfInventory("BadgeBarrierFlag",23,"Ready2a")
goto FireAssort

Ready3:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",7)
Ready3a:
BBRR A 1 A_WeaponReady
BBRR A 0 A_PlaySoundEx("weapon/badgebullet", "Weapon")
BBRR B 0 ACS_NamedExecute("vile_statechange",0,2)
BBRR B 0 A_FireCustomMissile("BadgeBarrierBullet",0,0,8,0)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",1)
BBRR BCA 2 A_WeaponReady
BBRR B 0 A_JumpIfInventory("BadgeBarrierFlag",16,"Ready3a")
goto FireAssort

Ready4:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",14)
Ready4a:
BBRR A 1 A_WeaponReady
BBRR A 0 A_PlaySoundEx("weapon/badgebullet", "Weapon")
BBRR B 0 ACS_NamedExecute("vile_statechange",0,2)
BBRR B 0 A_FireCustomMissile("BadgeBarrierBullet",0,0,8,0)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",1)
BBRR BCA 2 A_WeaponReady
BBRR B 0 A_JumpIfInventory("BadgeBarrierFlag",9,"Ready4a")
goto FireAssort

Ready5:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",21)
Ready5a:
BBRR A 1 A_WeaponReady
BBRR A 0 A_PlaySoundEx("weapon/badgebullet", "Weapon")
BBRR B 0 ACS_NamedExecute("vile_statechange",0,2)
BBRR B 0 A_FireCustomMissile("BadgeBarrierBullet",0,0,8,0)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",1)
BBRR BCA 2 A_WeaponReady
BBRR B 0 A_JumpIfInventory("BadgeBarrierFlag",2,"Ready5a")
goto FireAssort

FireEarly:
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",3,"FireEarly4")
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",2,"FireEarly3")
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",1,"FireEarly2")
BBRR B 0 A_Jump(256,"FireEarly1")
goto FireEarly1
FireEarly1:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",7)
goto FireAssort
FireEarly2:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",14)
goto FireAssort
FireEarly3:
BBRR B 0 A_GiveInventory("BadgeBarrierFlag",28)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",21)
goto FireAssort
FireEarly4:
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",21)
goto FireAssort

FireAssort:
BBRR B 0 A_GiveInventory("BadgeBarrierKill",1)
BBRR B 0 ACS_NamedExecute("vile_statechange",0,2)
BBRR A 0 A_PlaySoundEx("misc/sharktorpedo", "Weapon")
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",1)
BBRR B 0 A_FireCustomMissile("BadgeBarrierShot",0,0,8,0)
BBRR BCCA 2
goto FigureItOut

FigureItOut:
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",4,"FinishIt")
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",3,"Ready5")
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",2,"Ready4")
BBRR B 0 A_JumpIfInventory("BadgeBarrierKill",1,"Ready3")
BBRR A 10
goto FinishIt
FinishIt:
BBRR B 0 A_GiveInventory("BadgeBarrierTrigger",1)
BBRR B 0 A_GiveInventory("BadgeBarrierKill",1)
BBRR B 0 A_TakeInventory("BadgeBarrierFlag",28)
BBRR A 20
BBRR B 0 A_TakeInventory("BadgeBarrierKill",8)
goto Ready+2

NoAmmo:
BBRR A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+2
}
}

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

actor BadgeBarrierTrigger : Powerup {Powerup.Duration 16}
actor BadgeBarrierFlag : Inventory { inventory.amount 1 inventory.maxamount 28 }
actor BadgeBarrierKill : Inventory { inventory.amount 1 inventory.maxamount 4 }

actor BadgeBarrierBullet : BasicProjectile
{
PROJECTILE
Obituary "$OB_BADGEBARRIER"
damagetype "BadgeBarrier"
Radius 12
Height 12
Damage (CallACS("vile_cbm_damage",10))
Speed 40
scale 2.5
Species "BadgeBarrier"
+THRUSPECIES
States
{
Spawn:
BGBR T 1
loop
Death:
MMFX BCDE 3 A_Stop
stop
}
}

actor BadgeBarrierShot : MegaShot
{
Obituary "$OB_BADGEBARRIER"
damagetype "BadgeBarrier"
Radius 32
Height 32
Damage (CallACS("vile_cbm_damage",18))
Speed 42
scale 2.5
+DONTREFLECT
+DONTBLAST
Species "BadgeBarrier"
+THRUSPECIES
States
{
Spawn:
BGBR ABCD 3
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapons/mm4/dustcrushersplit", "Body")
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_1",random(-2,2),0,random(2,5),frandom(-2,2),random(-6,-9),frandom(1,6),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_2",random(-2,2),0,random(4,7),frandom(-2,2),random(-2,-5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_3",random(-2,2),0,random(6,9),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_4",random(-2,2),0,random(7,10),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_5",random(-2,2),0,random(8,11),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_6",random(-2,2),0,random(6,7),frandom(-2,2),random(2,5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("BadgeBreakFX_7",random(-2,2),0,random(2,5),frandom(-2,2),random(6,9),frandom(1,6),0,1)
stop
}
}

actor BadgeBarrierPart_1 : ProjSpawnFuncActor
{
	+MISSILE
	+NOINTERACTION
	+NOTARGETSWITCH
	+NOGRAVITY
	+THRUSPECIES +CANTSEEK //no foolery allowed.
    +BRIGHT
	renderstyle translucent
	
    Scale 2.5
    height 4
    radius 4
	damagetype "BadgeBarrier"
    Obituary "$OB_BADGEBARRIER"
    var int user_radius;
    var int user_angle;
    var int user_angleadd;
    var int user_expandtime;

    States
    {
    Spawn:
		BGBR A 0
		BGBR A 0 A_GiveInventory("MM8BDMProjSpawnFunc",1)
		BGBR A 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 13106, 100) // 13106 = 0.2 * 65536
		BGBR A 0 A_SetUserVar(user_radius, 8)
		BGBR A 0 A_SetUserVar(user_angleadd, 6)
		BGBR A 0 A_SetUserVar(user_expandtime, 10)
		BGBR A 0 A_SetUserVar(user_angle, angle)
		goto Expand
    SpawnLoop:
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		loop
    Expand:
		BGBR A 0 A_SetUserVar(user_angleadd, user_angleadd+2)
		BGBR A 0 A_SetUserVar(user_radius, user_radius+4)
		BGBR A 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		BGBR A 1 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)

		BGBR B 0 A_SetUserVar(user_radius, user_radius+4)
		BGBR B 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		BGBR B 1 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)

		BGBR A 0 A_SetUserVar(user_angleadd, user_angleadd+2)
		BGBR C 0 A_SetUserVar(user_radius, user_radius+4)
		BGBR C 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		BGBR C 1 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)

		BGBR D 0 A_SetUserVar(user_radius, user_radius+4)
		BGBR D 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		BGBR D 1 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		goto ExpandCheck
		ExpandCheck:
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
		goto Expand
    Death:
    Detonate:
    End:
		TNT1 A 0
		stop
    }
}

actor BadgeBarrierPart_2 : BadgeBarrierPart_1
{
    States
    {
    SpawnLoop:
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 2, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		loop
		ExpandCheck:
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
		goto Expand
    }
}

actor BadgeBarrierPart_3 : BadgeBarrierPart_1
{
    States
    {
    SpawnLoop:
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 3, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		loop
		ExpandCheck:
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
		goto Expand
    }
}

actor BadgeBarrierPart_4 : BadgeBarrierPart_1
{
    States
    {
    SpawnLoop:
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR A 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR A 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR A 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR B 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR B 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR B 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR B 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR C 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR C 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR C 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR C 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 

		BGBR D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR D 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 4, "Detonate")
		BGBR D 0 A_SpawnItemEx("BadgeBarrierHitbox")
		BGBR D 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BGBR D 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 		
		loop
		ExpandCheck:
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierTrigger", 1, "Detonate")
		BGBR A 0 A_JumpIfInTargetInventory("BadgeBarrierKill", 1, "Detonate")
		BGBR A 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
		goto Expand
    }
}

actor BadgeBarrierHitbox : BasicProjectile
{
PROJECTILE
+SHOOTABLE
-NOBLOCKMAP
+DONTRIP
+DONTREFLECT
+NOTARGETSWITCH
-SOLID
+NOBLOOD
+THRUSPECIES
+NORADIUSDMG
Health 99999
+MISSILE
species "BadgeBarrier"
damagetype "BadgeBarrierShield"
Obituary "$OB_BADGEBARRIER"
damage (CallACS("vile_cbm_damage",12))
Radius 32
Height 32
speed 0
painchance 256
States
{
Spawn:
TNT1 A 0
TNT1 D 1
goto Death
Crash:
XDeath:
Death:
TNT1 A 1 
stop
Pain:
TNT1 A 0 A_PlaySound("item/protoreflect")//A_Pain
TNT1 A 1 A_SpawnItemEx("BadgeBarrierDeathFX")
goto Death
}
}

actor BadgeBarrierDeathFX : BasicGraphicEffect
{
scale 2.5
+NOINTERACTION
+CLIENTSIDEONLY
alpha 0.9
renderstyle add
+BRIGHT
states
{
SpawnFrame:
BGBR E 0 A_SetScale(scaleX + 0.2, 3.0) 
BGBR E 1 A_FadeOut(0.1)
loop
}
}

actor BadgeBreakFX_1 : BasicGraphicEffect
{
-NOGRAVITY
-NOINTERACTION
height 4
radius 4
Speed 15
scale 1.90
States
{
SpawnFrame:
TNT1 A 0
BGBR FFFFFYFYFYFY 2
stop
}
}
actor BadgeBreakFX_2 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR GGGGGYGYGYGY 2
stop
}
}
actor BadgeBreakFX_3 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR HHHHHYHYHYHY 2
stop
}
}
actor BadgeBreakFX_4 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR IIIIIYIYIYIY 2
stop
}
}
actor BadgeBreakFX_5 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR JJJJJYJYJYJY 2
stop
}
}
actor BadgeBreakFX_6 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR KKKKKYKYKYKY 2
stop
}
}
actor BadgeBreakFX_7 : BadgeBreakFX_1
{
States
{
SpawnFrame:
TNT1 A 0
BGBR LLLLLYLYLYLY 2
stop
}
}

actor BadgeBarrierProtect : PowerProtection
{
Powerup.Duration 8
damagefactor "BadgeBarrierShield", 0.0
}