actor JetblackRepulsorWep_NormalBar : NormalBar { args 236, 62 }
actor JetblackRepulsorWep_ScriptBar : ScriptBar {}

actor JetblackRepulsorWep : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 6
Obituary "$OB_JETBLACKREPULSOR"
Tag "$TAG_JETBLACKREPULSOR"
Inventory.Pickupmessage "$PU_JETBLACKREPULSOR"
weapon.ammotype "JetblackRepulsorAmmo"
inventory.icon "JBRPICON"
States
{
SpawnLoop:
JBRP Z -1
loop
Ready:
JBRP A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_JETBLACKREPULSOR)
JBRP A 1 A_WeaponReady
wait
ReadyC: Goto Ready+1
Deselect:
JBRP A 0 A_GiveInventory("JetblackRepulsorKill", 1)
goto DeselectSwap
Select:
JBRP A 0
goto SelectSwap
Fire:
JBRP A 0 A_JumpIfInventory("JetblackRepulsorCooldown",1,"NoAmmo")
JBRP A 0 A_JumpIfInventory("JetblackRepulsorExists",1,"Detonate")
JBRP A 0 A_JumpIfNoAmmo("NoAmmo")
JBRP A 0 A_GiveInventory("JetblackRepulsor_Fire_P")
JBRP BC 3
JBRP A 10
goto Ready+1
Detonate:
JBRP A 0 A_GiveInventory("JetblackRepulsorTrigger", 1)
JBRP DA 3
goto Ready+1
NoAmmo:
JBRP A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

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

actor JetblackRepulsorExists : Powerup
{
    powerup.duration 5
}

actor JetblackRepulsorKill : JetblackRepulsorExists {}

actor JetblackRepulsor_Fire_P : CustomInventory
{
    States
    {
    Pickup:
		TNT1 A 0 A_TakeInventory("JetblackRepulsorAmmo", 4, TIF_NOTAKEINFINITE)
        TNT1 A 0 A_SpawnItemEx("JetblackRepulsor", 0, 8, 32, cos(-pitch)*40, 0, sin(-pitch)*40, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
        stop
    PickupSpread:
        TNT1 A 0 A_SpawnItemEx("JetblackRepulsor", -48, 8+32, 32, cos(-pitch)*40, 0, sin(-pitch)*40, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("JetblackRepulsor", -48, 8-32, 32, cos(-pitch)*40, 0, sin(-pitch)*40, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        stop
    }
}

actor JetblackRepulsor : BasicProjectile
{
+NOTARGETSWITCH
+FORCEXYBILLBOARD
+RIPPER
+BRIGHT
Obituary "$OB_JETBLACKREPULSOR"
damagetype "JetblackRepulsor"
Radius 15
Height 8
damage (0)
speed 25
reactiontime 1
States
{
Spawn:
BRPS B 0
BRPS B 0 A_GiveInventory("JetblackRepulsorFlyFunc2", 1)
BRPS B 1 A_PlaySoundEx("weapons/mm9/blackholebombfly","Weapon",1)
SpawnLoop:
BRPS BBBCCCCDDDDEEEEB 1 A_GiveInventory("JetblackRepulsorFlyFunc", 1)
loop
Death:
Explode:
BRPS B 0 A_StopSound
BRPS B 0 A_SpawnItemEx("JetblackRepulsorExplosion",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)
stop
}
}

actor JetblackRepulsorDirect_CD : Powerup { powerup.duration 4 }

actor JetblackRepulsorFlyFunc : CustomInventory
{
	States
	{
	Pickup:
		TNT1 A 0 A_GiveToTarget("JetblackRepulsorExists", 1)
		TNT1 A 0 A_JumpIfInTargetInventory("JetblackRepulsorTrigger", 1, "Detonate")
		TNT1 A 0 A_JumpIfInTargetInventory("JetblackRepulsorKill", 1, "End")
		TNT1 A 0 A_GiveInventory("JetblackRepulsorDirect_CD", 1)
		stop
	Skip:
		TNT1 A 0
		stop
	Detonate:
		TNT1 AA 0 A_CountDown
		stop
	End:
		TNT1 A 0 A_CountDown
		stop
	}
}

// This version skips the JetblackExists flag for desync reasons
actor JetblackRepulsorFlyFunc2 : JetblackRepulsorFlyFunc
{
States
{
Pickup:
goto JetblackRepulsorFlyFunc::Pickup+1
}
}

actor JetblackRepulsorExplosion : BasicExplosion
{
Obituary "$OB_JETBLACKREPULSOR"
damagetype "JetblackRepulsor"
reactiontime 5
Scale 3.0
States
{
Spawn:
BRPS F 0
BRPS F 0 A_GiveToTarget("JetblackRepulsorCooldown", 1)
BRPS F 0 A_SpawnItemEx("JetblackRepulsorFXSpawner", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
BRPS F 0 A_PlaySoundEx("weapons/mm9/blackholebombexplode", "body", 1)
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS QQPP 1
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS OONN 1
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS MMLL 1
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS KKJJ 1
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS IIHH 1
BRPS F 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 156)
BRPS F 0 A_Explode(CallACS("vile_cbm_damage",14),128,0)
BRPS GGFF 1
BRPS F 0 A_Countdown
goto Spawn+3
Death:
TNT1 A 3//Finish the sound effect before stopping
TNT1 A 0 A_StopSound
stop
}
}

actor JetblackRepulsorFXSpawner : BasicGraphicEffect
{
reactiontime 18
States
{
	SpawnFrame:
		TNT1 A 0
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 AA 0 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 1 A_SpawnItemEx("JetblackRepulsorFX", 0, 0, 0, 0, 0, 0, random(0, 359), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_Countdown
		loop
	Death:
		TNT1 A 0
		stop
}
}

actor JetblackRepulsorFX : BasicGraphicEffect
{
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
BRPS TS 3
BRPS S 0 A_ChangeVelocity(16, 0, 0, CVF_RELATIVE|CVF_REPLACE)
BRPS RRRRRRRRRRRR 1 A_SpawnItemEx("JetblackRepulsorFX2",0,0,0,momx/1.5,momy/1.5,0,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION)
stop
}
}

actor JetblackRepulsorFX2 : JetblackRepulsorFX
{
States
{
Spawn:
BRPS R 5
stop
}
}

actor JetblackRepulsorTrigger : Powerup
{
	powerup.duration 3
}

actor JetblackRepulsorCooldown : Powerup
{
	powerup.duration 132
}