actor BlackHoleBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_VF"
dropitem "BlackHoleWepCDropped"
Weapon.SlotNumber 1
Obituary "$OB_ROCKBUSTER"
Inventory.Pickupmessage "insert dev meme here"
weapon.ammotype "BlackVortexAmmo"
weapon.ammotype2 "WhiteHoleAmmo"
//weapon.ammotype2 "BlackVortexAmmo"
inventory.icon "Sat1Icon"
States
{
	Spawn:
		C_00 C 1
	loop

	Ready:
		SAHD A 0 A_GunFlash
		SAHD A 0 ACS_ExecuteAlways(998,0,10965)
	Goto Ready2

	Ready2:
		SAHD A 0 A_JumpIfInventory("SaturnHoldAmmo",140,"Ready3")
		SAHD A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SAHD A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOSECONDARY)
		SAHD A 0 A_GiveInventory("SaturnHoldAmmo",3)
		SAHD A 0 A_GiveInventory("WhiteHoleAmmo",6)
	Goto Ready2
	
	Ready3:
		SAHD A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		SAHD A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SAHD A 0 A_GiveInventory("SaturnHoldAmmo",3)
		SAHD A 0 A_GiveInventory("WhiteHoleAmmo",6)
		SAHD A 0 A_JumpIfInventory("SaturnHoldAmmo",70,"Ready3")
	Goto Ready2

	Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		SAHD A 1 A_Lower
	Loop
	
	Select:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		SAHD A 1 A_Raise
	Loop

	Fire: 
		TNT1 A 0 //A_JumpIfInventory("SaturnRingRefireDelay",1,"Ready2")//Cambiaso
		SAHD A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SAHD A 1 offset(32,48)
		SAHD A 1 offset(64,64)
		SAHD D 1 offset(90,79)
		SAHD D 1 offset(60,65)
		SAHD D 1 offset(30,51)
		SAHD B 1 offset(10,44)
		SAHD B 1 offset(-20,36)
		SAHD B 0 A_GiveInventory("SaturnRingMainFlag",1)
		SAHD B 0 A_PlaySoundEx("weapon/saturnthrow","weapon")
		SAHD B 0 A_GiveInventory("SaturnMain_CI",1)
		SAHD C 1 offset(-50,29)
		SAHD C 1 offset(-83,23)
		SAHD C 1 offset(-116,18)
		SAHD C 1 offset(-152,14)
		SAHD C 1 offset(-188,11)
		SAHD C 0 A_Refire("Hold")
	Goto Hold2
	Hold:
		TNT1 A 0 A_ClearRefire
	Hold1:
		TNT1 A 0 A_JumpIfInventory("SaturnRingAmmoTimer",15,1)
	Goto Hold1+2
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 1 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 0 A_JumpIfInventory("WhiteHoleAmmo",8,"HoldMore")
	goto Hold2
	HoldMore:
		TNT1 A 0 A_TakeInventory("WhiteHoleAmmo",8)
		TNT1 A 0 A_Refire("Hold")
	Hold2:
		TNT1 A 0 A_GiveInventory("SaturnRingReturnFlag",1)
		TNT1 A 0 A_GiveInventory("SaturnRingMainFlag",1)
	ReturnWait:
		TNT1 A 0 A_JumpIfInventory("SaturnRingReturnTimer",35,"Returned")
	Goto ReturnWait+4
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 0 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 1 A_GiveInventory("SaturnRingReturnTimer",1)
	Goto ReturnWait
	Returned:
		TNT1 A 11 offset(-64,64)
		SAHD A 3 offset(-64,64)
		SAHD A 3 offset(-32,48)
		SAHD A 10 A_WeaponReady
	goto Ready2
  
	Reload://Cambiaso
		SAHD A 1 A_JumpIfInventory("DonSaturnDelayA",1,"ReloadNoFire")
	goto ReloadYes
   ReloadYes:
		SAHD A 1 offset(32,48)A_PlaySoundEX("weapon/quazarblast","weapon")
		SAHD A 1 offset(64,64)
		SAHD D 1 offset(90,79)
		SAHD D 1 offset(60,65)
		SAHD D 1 offset(30,51)
		SAHD B 1 offset(10,44)
		SAHD B 1 offset(-20,36)
		SAHD C 1 offset(-50,29)
		SAHD C 1 offset(-83,23)
		SAHD C 1 offset(-116,18)
		SAHD C 1 offset(-152,14)
		SAHD C 1 offset(-188,11)
		PROC D 0 //A_TakeInventory("WhiteHoleAmmo",360)
		//PROC FFFFFFFFFFFFFFFFFFFFF 0 A_SpawnItemEx("BlackVortexHelperFX",0,0,0,0,0,0,0,1)
        PROC D 0 A_SpawnItemEx("DonSaturnDelayHelper")
	    PROC D 0 A_GiveInventory("DonSaturnDelayA",35)
		PROC D 0 A_GiveInventory("SaturnReload_CI",1)
		TNT1 A 11 offset(-64,64)
		SAHD A 2 offset(-64,64)
		SAHD A 2 offset(-32,48)
		SAHD A 7 A_WeaponReady(WRF_NOFIRE)
	goto Ready2
	
	ReloadNoFire:
		SAHD A 1 A_GiveInventory("SaturnHoldAmmo",3)
		SAHD A 0 A_GiveInventory("WhiteHoleAmmo",6)
	goto Ready2

	Altfire:
		SAHD A 1 A_JumpIfInventory("SaturnHoldAmmo",140,1)
		goto Ready2
		SAHD A 0 ACS_NamedExecute("BULL_SetState",0,1)
		SAHD A 1 offset(-32,48)
		SAHD A 1 offset(-64,64)
		TNT1 A 1 Offset(1, 64)
		SAHD H 1 Offset(0, 64)
		SAHD H 1 Offset(0, 48)
		SAHD I 1 Offset(0, 32)
		SAHD I 1 Offset(0, 24)
		SAHD I 0 Offset(0, 24)A_SpawnItemEx("SaturnAmmoHelper")
		SAHD I 0 Offset(0, 24)A_SpawnItemEx("SaturnProjectileSucker")
	AltSuck:
		SAHD E 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SAHD E 0 ACS_NamedExecute("BULL_SetState",0,1)
		SAHD E 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
		SAHD E 0 A_FireCustomMissile("SaturnSuckExplode")
		//SAHD EE 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD E 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SAHD EE 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD E 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck2
		
	AltSuck2:
		SAHD F 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SAHD F 0 ACS_NamedExecute("BULL_SetState",0,1)
		SAHD F 0 A_FireCustomMissile("SaturnSuckExplode")
		//SAHD FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SAHD FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck3
		
	AltSuck3:
		SAHD G 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SAHD G 0 //ACS_ExecuteAlways(512,0,1)
		SAHD G 0 A_FireCustomMissile("SaturnSuckExplode")
		//SAHD GG 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD G 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SAHD GG 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD G 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck4
		
	AltSuck4:
		SAHD F 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SAHD F 0 ACS_NamedExecute("BULL_SetState",0,1)
		SAHD F 0 A_FireCustomMissile("SaturnSuckExplode")
		//SAHD FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SAHD FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SAHD F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		SAHD F 0 A_Refire("AltSuck")
	Goto AltEnd
	
	AltEnd:
		SAHD E 0 A_GiveInventory("SaturnHelperChecker")
		SAHD E 0 A_GiveInventory("SaturnAbsorbChecker")
		SAHD I 1 Offset(0, 24)A_ClearRefire
		SAHD I 1 Offset(0, 32)
		SAHD H 1 Offset(0, 48)
		SAHD H 1 Offset(0, 64)
		SAHD H 1 Offset(0, 96)
		SAHD H 1 Offset(0, 128)
		TNT1 A 3 offset(-64,64)
		SAHD A 2 offset(-64,64)
		SAHD A 2 offset(-32,48)
	Goto Ready2
	
	AltSuckNone:
		SAHD H 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
		SAHD HIHIHIHI 1 A_GiveInventory("SaturnAbsorbChecker")
		SAHD H 0 A_FireCustomMissile("SaturnSuckExplode")
		SAHD HIHIHIHI 1 A_GiveInventory("SaturnAbsorbChecker")
		SAHD H 0 A_FireCustomMissile("SaturnSuckExplode")
		SAHD H 0 A_Refire("AltSuckNone")
	Goto AltEnd
	
	Flash:
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("BasicArmor",1,"FlashFX")
	goto Flash
	FlashFX:
		TNT1 A 0 A_SpawnItemEx("SaturnArmorFX1", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359),1)
		TNT1 A 0 A_SpawnItemEx("SaturnArmorFX2", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359),1)
	goto Flash
}
}

actor BlackerHoleBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_VF2"
dropitem "BlackHoleWepCDropped"
Weapon.SlotNumber 2
Obituary "$OB_ROCKBUSTER"
Inventory.Pickupmessage "insert dev meme here"
weapon.ammotype "BlackVortexAmmo"
weapon.ammotype2 "WhiteHoleAmmo"
//weapon.ammotype2 "BlackVortexAmmo"
inventory.icon "Sat2Icon"
States
{
	Spawn:
		C_00 C 1
	loop

	Ready:
		SAHD A 0 A_GunFlash
		SATN A 0 ACS_ExecuteAlways(998,0,10965)
	Goto Ready2

	Ready2:
		SATN A 0 A_JumpIfInventory("SaturnHoldAmmo",140,"Ready3")
		SATN A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SATN A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOSECONDARY)
		SATN A 0 A_GiveInventory("SaturnHoldAmmo",3)
		SATN A 0 A_GiveInventory("WhiteHoleAmmo",6)
	Goto Ready2
	
	Ready3:
		SATN A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		SATN A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SATN A 0 A_GiveInventory("SaturnHoldAmmo",3)
		SATN A 0 A_GiveInventory("WhiteHoleAmmo",6)
		SATN A 0 A_JumpIfInventory("SaturnHoldAmmo",140,"Ready3")
	Goto Ready2

	Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		SATN A 1 A_Lower
	Loop
	
	Select:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		SATN A 1 A_Raise
	Loop

	Fire:
		SATN A 1 A_JumpIfInventory("BlackVortexAmmo",7,1)
	goto NoFire
	FireReal:
		SATN A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SATN A 1 offset(32,48)
		SATN A 1 offset(64,64)
		SATN D 1 offset(90,79)
		SATN D 1 offset(60,65)
		SATN D 1 offset(30,51)
		SATN B 1 offset(10,44)
		SATN B 1 offset(-20,36)
		SATN B 0 A_GiveInventory("SaturnRingMainFlag",1)
		SATN B 0 A_PlaySoundEx("weapon/saturnthrow","weapon")
		SATN B 0 A_GiveInventory("SaturnMain2_CI",1)
		SATN C 1 offset(-50,29)
		SATN C 1 offset(-83,23)
		SATN C 1 offset(-116,18)
		SATN C 1 offset(-152,14)
		SATN C 1 offset(-188,11)
		SATN C 0 A_Refire("Hold")
	Goto Hold2
	Hold:
		TNT1 A 0 A_ClearRefire
	Hold1:
		TNT1 A 0 A_JumpIfInventory("SaturnRingAmmoTimer",15,1)
	Goto Hold1+2
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 1 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 0 A_JumpIfInventory("WhiteHoleAmmo",8,"HoldMore")
	goto Hold2
		HoldMore:
		TNT1 A 0 A_TakeInventory("WhiteHoleAmmo",8)
		TNT1 A 0 A_Refire("Hold")
	Hold2:
		TNT1 A 0 A_GiveInventory("SaturnRingReturnFlag",1)
		TNT1 A 0 A_GiveInventory("SaturnRingMainFlag",1)
	ReturnWait:
		TNT1 A 0 A_JumpIfInventory("SaturnRingReturnTimer",35,"Returned")
	Goto ReturnWait+4
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 0 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 1 A_GiveInventory("SaturnRingReturnTimer",1)
	Goto ReturnWait
	Returned:
		TNT1 A 11 offset(-64,64)
		SATN A 3 offset(-64,64)
		SATN A 3 offset(-32,48)
		SATN A 10 A_WeaponReady(WRF_NOPRIMARY)
	goto Ready2
	
	NoFire:
		TNT1 A 0 //A_JumpIfInventory("SaturnRingRefireDelay",1,"Ready2")//Cambiaso
		SATN A 0 A_TakeInventory("SaturnRingReturnFlag",1)
		SATN A 1 offset(32,48)
		SATN A 1 offset(64,64)
		SATN D 1 offset(90,79)
		SATN D 1 offset(60,65)
		SATN D 1 offset(30,51)
		SATN B 1 offset(10,44)
		SATN B 1 offset(-20,36)
		SATN B 0 A_GiveInventory("SaturnRingMainFlag",1)
		SATN B 0 A_PlaySoundEx("weapon/saturnthrow","weapon")
		SATN B 0 A_GiveInventory("SaturnMain_CI",1)
		SATN C 1 offset(-50,29)
		SATN C 1 offset(-83,23)
		SATN C 1 offset(-116,18)
		SATN C 1 offset(-152,14)
		SATN C 1 offset(-188,11)
		SATN C 0 A_Refire("Hold")
	Goto Hold2
	Hold:
		TNT1 A 0 A_ClearRefire
	Hold1:
		TNT1 A 0 A_JumpIfInventory("SaturnRingAmmoTimer",15,1)
	Goto Hold1+2
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 1 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 0 A_JumpIfInventory("WhiteHoleAmmo",8,"HoldMore")
	goto Hold2
	HoldMore:
		TNT1 A 0 A_TakeInventory("WhiteHoleAmmo",8)
		TNT1 A 0 A_Refire("Hold")
	Hold2:
		TNT1 A 0 A_GiveInventory("SaturnRingReturnFlag",1)
		TNT1 A 0 A_GiveInventory("SaturnRingMainFlag",1)
	ReturnWait:
		TNT1 A 0 A_JumpIfInventory("SaturnRingReturnTimer",35,"Returned")
	Goto ReturnWait+4
		TNT1 A 0 A_TakeInventory("SaturnRingAmmoTimer",15)
		TNT1 A 0 A_GiveInventory("SaturnRingAmmoTimer",1)
		TNT1 A 1 A_GiveInventory("SaturnRingReturnTimer",1)
	Goto ReturnWait
	Returned:
		TNT1 A 11 offset(-64,64)
		SATN A 3 offset(-64,64)
		SATN A 3 offset(-32,48)
		SATN A 10 A_WeaponReady
	goto Ready2
	
	Reload://cambiaso
		SATN A 1 A_JumpIfInventory("DonSaturnDelayA",1,"ReloadNoFire")
	goto ReloadYes
   ReloadYes: 
		SATN A 1 offset(32,48)A_PlaySoundEX("weapon/quazarblast","weapon")
		SATN A 1 offset(64,64)
		SATN D 1 offset(90,79)
		SATN D 1 offset(60,65)
		SATN D 1 offset(30,51)
		SATN B 1 offset(10,44)
		SATN B 1 offset(-20,36)
		SATN C 1 offset(-50,29)
		SATN C 1 offset(-83,23)
		SATN C 1 offset(-116,18)
		SATN C 1 offset(-152,14)
		SATN C 1 offset(-188,11)
		PROC D 0 //A_TakeInventory("WhiteHoleAmmo",360)
		//PROC FFFFFFFFFFFFFFFFFFFFF 0 A_SpawnItemEx("BlackVortexHelperFX",0,0,0,0,0,0,0,1)
        PROC D 0 A_SpawnItemEx("DonSaturnDelayHelper")
	    PROC D 0 A_GiveInventory("DonSaturnDelayA",35)
		PROC D 0 A_GiveInventory("SaturnReload_CI",1)
		TNT1 A 11 offset(-64,64)
		SATN A 2 offset(-64,64)
		SATN A 2 offset(-32,48)
		SATN A 7 A_WeaponReady(WRF_NOFIRE)
	goto Ready2

 







	Altfire:
		SATN A 1 A_JumpIfInventory("SaturnHoldAmmo",140,1)
		goto Ready2
		SATN A 0 ACS_NamedExecute("BULL_SetState",0,1)
		SATN A 1 offset(-32,48)
		SATN A 1 offset(-64,64)
		TNT1 A 1 Offset(1, 64)
		SATN H 1 Offset(0, 64)
		SATN H 1 Offset(0, 48)
		SATN I 1 Offset(0, 32)
		SATN I 1 Offset(0, 24)
		SATN I 0 Offset(0, 24)A_SpawnItemEx("SaturnAmmoHelper")
		SATN I 0 Offset(0, 24)A_SpawnItemEx("SaturnProjectileSucker")
	AltSuck:
		SATN E 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SATN E 0 ACS_NamedExecute("BULL_SetState",0,1)
		SATN E 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
		SATN E 0 A_FireCustomMissile("SaturnSuckExplode")
		//SATN EE 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN E 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SATN EE 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN E 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck2
		
	AltSuck2:
		SATN F 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SATN F 0 ACS_NamedExecute("BULL_SetState",0,1)
		SATN F 0 A_FireCustomMissile("SaturnSuckExplode")
		//SATN FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SATN FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck3
		
	AltSuck3:
		SATN G 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SATN G 0 //ACS_ExecuteAlways(512,0,1)
		SATN G 0 A_FireCustomMissile("SaturnSuckExplode")
		//SATN GG 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN G 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SATN GG 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN G 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
	Goto AltSuck4
		
	AltSuck4:
		SATN F 0 A_JumpIfInventory("SaturnHoldAmmo",1,1)
	Goto AltEnd
		SATN F 0 ACS_NamedExecute("BULL_SetState",0,1)
		SATN F 0 A_FireCustomMissile("SaturnSuckExplode")
		//SATN FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		//SATN FF 0 A_SpawnItemEx("Saturn_Catcher",0,0,0,momx,momy,momz,0,8,0)
		SATN F 1 Offset(0, 24)A_GiveInventory("SaturnAltSuction_P")
		SATN F 0 A_Refire("AltSuck")
	Goto AltEnd
	
	AltEnd:
		SATN E 0 A_GiveInventory("SaturnHelperChecker")
		SATN E 0 A_GiveInventory("SaturnAbsorbChecker")
		SATN I 1 Offset(0, 24)A_ClearRefire
		SATN I 1 Offset(0, 32)
		SATN H 1 Offset(0, 48)
		SATN H 1 Offset(0, 64)
		SATN H 1 Offset(0, 96)
		SATN H 1 Offset(0, 128)
		TNT1 A 3 offset(-64,64)
		SATN A 2 offset(-64,64)
		SATN A 2 offset(-32,48)
	Goto Ready2
	
	AltSuckNone:
		SATN H 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
		SATN HIHIHIHI 1 A_GiveInventory("SaturnAbsorbChecker")
		SATN H 0 A_FireCustomMissile("SaturnSuckExplode")
		SATN HIHIHIHI 1 A_GiveInventory("SaturnAbsorbChecker")
		SATN H 0 A_FireCustomMissile("SaturnSuckExplode")
		SATN H 0 A_Refire("AltSuckNone")
	Goto AltEndX
	
	ReloadNoFire:
		SATN A 1 A_GiveInventory("SaturnHoldAmmo",3)
		SATN A 0 A_GiveInventory("WhiteHoleAmmo",6)
	goto Ready2

	Flash:
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("BasicArmor",1,"FlashFX")
	goto Flash
	FlashFX:
		TNT1 A 0 A_SpawnItemEx("SaturnArmorFX1", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359),1)
		TNT1 A 0 A_SpawnItemEx("SaturnArmorFX2", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359),1)
	goto Flash
}
}

actor DonSaturnDelayHelper : BasicHelper
{//cambiaso
reactiontime 35
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("DonSaturnDelayA",1)
TNT1 A 2 A_Countdown
loop
}
}

actor DonSaturnDelayA : Inventory
{
inventory.amount 1
inventory.maxamount 35
}

actor SuckerActiveFlag : OnceC{}

actor SaturnProjectileSucker
{
PROJECTILE
Obituary "lol"
+DONTBLAST
+DONTREFLECT
+THRUACTORS
+NOINTERACTION
+NOTARGETSWITCH
radius 1
height 1
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_GiveInventory("SuckerActiveFlag",1)
TNT1 A 0 ACS_NamedExecuteWithResult("BULL_ProjectileSucker", 600, 40, 48)
SpawnLOOP:
TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_SetPitch(CallACS("Bull_CheckFor",AAPTR_Target,4), 0)
TNT1 A 0 A_Warp(AAPTR_Target, 32*cos(pitch), 0, 16 + 32*sin(-pitch), 0, WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("SaturnAbsorbChecker",1,"Death")
loop

Death:
TNT1 A 1 A_TakeInventory("SuckerActiveFlag")
stop
}
}

/*actor SaturnMainChecker : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SaturnItemConfirm",1,"Pickup2")
PickupNone:
TNT1 A 0 A_GiveInventory("SaturnMain_CI")
TNT1 A 0 //A_TakeInventory("WhiteHoleAmmo",70)
stop

Pickup2:
TNT1 A 0 A_JumpIfInventory("BlackVortexAmmo",7,"Pickup3")
goto PickupNone

Pickup3:
TNT1 A 0 A_GiveInventory("SaturnMain2_CI")
TNT1 A 0 //A_TakeInventory("WhiteHoleAmmo",70)
TNT1 A 0 A_TakeInventory("BlackVortexAmmo",7)
stop

}
}

actor SaturnItem : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "SATITE"
scale 2.0
inventory.pickupmessage "insert dev meme here"
+INVBAR
states
{
Spawn:
TNT1 A 1
loop

Use:
TNT1 A 0 A_PlaySoundEx("weapon/BoobeamBeep","SoundSlot6")
TNT1 A 0 A_JumpIfInventory("SaturnItemConfirm",1,"Use2")
TNT1 A 0 A_GiveInventory("SaturnItemConfirm",1)
fail

Use2:
TNT1 A 0 A_PlaySoundEx("weapon/BoobeamBeep","SoundSlot6")
TNT1 A 0 A_TakeInventory("SaturnItemConfirm",1)
fail
}
}*/

actor HoldFlag : Inventory
{
inventory.amount 1
inventory.maxamount 2
}

actor SaturnArmorFX1
{
renderstyle add
+NOGRAVITY
//+FLOATBOB
+THRUACTORS
+CLIENTSIDEONLY
+NOINTERACTION
+FORCEXYBILLBOARD
+MISSILE
+DONTBLAST
+BRIGHT
Damage(0)
Scale 1
Height 0
Radius 0
alpha 0.5
var int User_Angle;//Angle
var int User_Z;//Z  offset
var int User_X;//X offset
States
{
Spawn:
STFX A 0 A_RearrangePointers(0,0,2)
STFX A 1 A_SetUserVar("User_Angle", 90)
STFX A 0 A_SetUserVar("User_Z", -20)
STFX A 0 A_SetUserVar("User_X", 50)
Goto Up
Up:
STFX "#" 1 A_Warp(AAPTR_TARGET, User_X, 0, User_Z, User_Angle,40)
STFX A 0 A_SetUserVar("User_Angle", User_Angle + 12)
STFX A 0 A_SetUserVar("User_Z", User_Z + 6)
STFX A 0 A_FadeOut(0.01)
STFX A 0 A_JumpIf(User_Z>=70,"Down")
loop
Down:
STFX "#" 1 A_Warp(AAPTR_TARGET, User_X, 0, User_Z, User_Angle, 40)
STFX A 0 A_SetUserVar("User_Angle", User_Angle + 12)
STFX A 0 A_SetUserVar("User_Z", User_Z - 6)
STFX A 0 A_FadeOut(0.01)
STFX A 0 A_JumpIf(User_Z<=0,1)
loop
STFX A 0 A_SetUserVar("User_Angle", 90)
Goto Up
}
}

actor SaturnArmorFX2 : SaturnArmorFx1
{
States
{
Spawn:
STFX A 0 A_RearrangePointers(0,0,2)
STFX B 1 A_SetUserVar("User_Z", -20)
STFX A 0 A_SetUserVar("User_Angle", 90)
STFX A 0 A_SetUserVar("User_X", -50)
Goto Down
}
}

actor SaturnWhiteRing
{//cambiaso
Translation "192:192=215:215", "198:198=223:223"
PROJECTILE
Obituary "%o was thrusted away by %k's white hole ring."
damagetype "SaturnWhiteRing1"
+DONTSPLASH
+DONTREFLECT
+SKYEXPLODE
+RIPPER
+HEXENBOUNCE
+DONTBLAST
bouncecount 10
bouncefactor 0.75
wallbouncefactor 0.75
damage (15)
Radius 24
Height 16
speed 42
scale 2.5
reactiontime 5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 //ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI A 3 //A_SpawnItemEx("SaturnRingTossFX",0,0,0,0,0,0,0,1)
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI A 0 //A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI G 3 //A_SpawnItemEx("SaturnRingTossFX",0,0,0,0,0,0,0,1)
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI A 0 //A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI B 3 //A_SpawnItemEx("SaturnRingTossFX",0,0,0,0,0,0,0,1)
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI A 0 //A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI G 3 //A_SpawnItemEx("SaturnRingTossFX",0,0,0,0,0,0,0,1)
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI A 0 //A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"SpawnEnd")
SARI A 0 A_JumpIfInTargetInventory("IsDead",1,"SpawnEnd")
loop
SpawnEnd:
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI AG 3 A_ScaleVelocity(0.75)
SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
SARI BG 3 A_ScaleVelocity(0.75)
goto Death

Death:
SARI A 1 A_SpawnItemEx("SaturnWhiteRingReturner", 0, 0, 0, 0, 0, 0, 0, 1)
stop
}
}

actor SaturnWhiteRingB : SaturnWhiteRing{Translation "192:192=205:205","198:198=74:74"}
actor SaturnWhiteRingR : SaturnWhiteRing{Translation "192:192=171:171","198:198=41:41"}
actor SaturnWhiteRingO : SaturnWhiteRing{Translation "192:192=104:104","198:198=128:128"}
actor SaturnWhiteRingP : SaturnWhiteRing{Translation "192:192=229:229","198:198=232:232"}

Actor SaturnReturnerSound : BasicHelper {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_PlaySoundEx("weapon/CutterCatch","Weapon")
		Stop
	}
}

Actor SaturnWhiteRingReturner {
	PROJECTILE
	+DONTSPLASH
	//+HEXENBOUNCE
	+SKYEXPLODE
	-NOGRAVITY
	+FORCEXYBILLBOARD
	+THRUGHOST
	BounceFactor 1.0
	WallBounceFactor 1.0
	Radius 25
	Height 40
	Scale 2.5
	+NOINTERACTION
	+SEEKERMISSILE
	+DONTBLAST
	+DONTREFLECT
	ReactionTime 87//about 10 seconds
	Speed 40
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 //ACS_NamedExecuteAlways("BULL_Tidifier", 0)
		SpawnLOOP:
			SARI A 0
			SARI A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)//Target >> Tracer
			SARI A 0 A_FaceTarget
		Goto Spawn2
		Spawn2:
			SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
			SARI A 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI A 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI A 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI A 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
			SARI B 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI B 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI B 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI B 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI B 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI B 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI A 0 A_GiveToTarget("SaturnRingRefireDelay")
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI G 1 A_SpawnItemEx("SaturnCrusherExploder", 0, 0, 0, momx, momy, momz, 0, 8)
			SARI G 0 A_JumpIfCloser(46, "Death")
			SARI AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			SARI G 0 A_CountDown
			SARI G 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0, "Death")
		Loop
		Death:
			TNT1 A 0 A_PlaySoundEx("weapon/CutterCatch","SoundSlot7")
			TNT1 A 1
		Stop
	}
}

actor SaturnCrusherExploder
{
PROJECTILE
damagetype "DMGNoHitstun"
Obituary "%o was thrusted away by %k's white hole ring."
+RIPPER
+DONTBLAST
+DONTREFLECT
damage (3)
Radius 24
Height 16
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
stop
}
}

actor SaturnBlackRing
{//cambiaso
var int user_damage;
Translation "192:192=3:3", "198:198=0:0"
PROJECTILE
Obituary "%o couldn't escape from %k's black hole ring."
damagetype "SaturnWhiteRing1"
+DONTSPLASH
+DONTREFLECT
+SKYEXPLODE
+RIPPER
+HEXENBOUNCE
+DONTBLAST
bouncecount 10
bouncefactor 0.75
wallbouncefactor 0.75
damage (15-user_damage)
Radius 24
Height 16
speed 42
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 //ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SARI B 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI B 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI B 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI B 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI B 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI B 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI B 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI B 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI B 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI B 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI B 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI B 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI A 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI A 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI A 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI A 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI A 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI A 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI A 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI A 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI A 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI A 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
//SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
SARI G 0 A_JumpIfInTargetInventory("SaturnRingReturnFlag",1,"Spawn2")
SARI G 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
SARI G 1 //A_SpawnItemEx("SaturnRingTossFX2",0,0,0,0,0,0,0,1)
SARI G 0 A_Blast(0, 255, 80, 20, "SaturnNothing", "weapon/saturnnothing")
SARI G 0 A_SpawnItemEx("TomahawkRangeGleam",random(-8,8),random(-16,16),random(-8,8))
loop

Spawn2:
SARI B 0 A_SetUserVar("user_damage",7)//i recommend 7
SARI B 0 A_Stop
SARI B 0 A_TakeFromTarget("BlackVortexAmmo",7)
SARI B 0 A_GiveInventory("SuckerActiveFlag",1)
SARI B 0 ACS_NamedExecuteWithResult("BULL_ProjectileSuckerLegacy", 250, 10, 24)
Spawn2.a:
SARI C 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
SARI C 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI A 1
SARI C 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI A 1
SARI D 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI G 1
SARI D 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI G 1
SARI E 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI B 1
SARI E 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI B 1
SARI D 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI G 1
SARI D 1 A_SpawnItemEx("BlackHoleXHelperFX",0,0,0,0,0,0,0,1)
SARI G 1
SARI G 0 A_GiveInventory("WeaponCharge",1)
SARI G 0 A_JumpIfInventory("WeaponCharge",2,"Spawn3")
goto Spawn2.a

Spawn3:
SARI C 0 A_PlaySoundEx("Weapon/blackhole","Weapon")
SARI CACADGDGEBEBDGDG 1
SARI AGBG 4
goto Death

Death:
SARI G 0 A_SpawnItemEx("SaturnWhiteRingReturner", 0, 0, 0, 0, 0, 0, 0, 1)
stop
}
}

actor SaturnBlackRingB : SaturnBlackRing{Translation "192:192=74:74","198:198=244:244"}
actor SaturnBlackRingR : SaturnBlackRing{Translation "192:192=41:41","198:198=191:191"}
actor SaturnBlackRingO : SaturnBlackRing{Translation "192:192=128:128","198:198=135:135"}
actor SaturnBlackRingP : SaturnBlackRing{Translation "192:192=232:232","198:198=234:234"}

actor AccretionAOE : BasicExplosion
{
Translation "192:192=215:215","198:198=235:235"
Damagetype "SaturnShot"
Obituary "$OB_SATURNAOE"
scale 10
states
{
Spawn:
TNT1 A 0
TNT1 A 0 
SpawnLOOP:
TNT1 A 0 A_Explode(12,128,0,0,64)
BHLE FFEEDDCCBBCCDDEE 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
stop
}
}

actor AccretionAOEB : AccretionAOE{Translation "192:192=205:205","198:198=74:74"}
actor AccretionAOER : AccretionAOE{Translation "192:192=171:171","198:198=41:41"}
actor AccretionAOEO : AccretionAOE{Translation "192:192=104:104","198:198=128:128"}
actor AccretionAOEP : AccretionAOE{Translation "192:192=229:229","198:198=232:232"}

actor AccretionShot
{
	Translation "192:192=215:215", "198:198=235:235"
    PROJECTILE
    +FORCEXYBILLBOARD
    +BRIGHT
    Radius 16
    Height 10
    scale 2.5
    damage (6)
    Damagetype "DMGNoHitstun"
	Obituary "$OB_SATURNAOE"
    speed 0
    var int user_speed;
    var int user_maxturn;
    var int user_turndivisor;
    var int user_turndivisor_add;
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_SetUserVar("user_speed", 50)
        TNT1 A 0 A_SetUserVar("user_maxturn", 1500)
        TNT1 A 0 A_SetUserVar("user_turndivisor", 40)
        TNT1 A 0 A_SetUserVar("user_turndivisor_add", 5)
    Spawn2:
        TNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)
        STRN B 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
        TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
        TNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)
        STRN B 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
        TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
        TNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)
        STRN C 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
        TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
        TNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)
        STRN C 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
        TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
        loop
    Death:
        STRN DEFG 2
        stop
    }
}

actor AccretionShotB : AccretionShot{Translation "192:192=205:205","198:198=74:74"}
actor AccretionShotR : AccretionShot{Translation "192:192=171:171","198:198=41:41"}
actor AccretionShotO : AccretionShot{Translation "192:192=104:104","198:198=128:128"}
actor AccretionShotP : AccretionShot{Translation "192:192=229:229","198:198=232:232"}

actor BlackVortexHelperFX : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0
TNT1 A 0 A_SetPitch(random(-1,1)*10)//(random(0,1)*2-1)
TNT1 AA 0 //A_SpawnItemEx("BlackVortexXFX1",0,0,0,Cos(pitch)*224,0,-sin(pitch)*224,random(0,359),513)
TNT1 AA 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(10)
TNT1 A 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 0 A_SetPitch(10)
TNT1 A 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(10)
TNT1 A 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 0 A_SetPitch(10)
TNT1 A 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(10)
TNT1 AA 0 A_SpawnItemEx("BlackVortexXFX1",0,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
stop
}
}

actor BlackVortexXFX : BasicClientSide
{
+FORCEXYBILLBOARD
States
{
Spawn:
BLKH TS 3
BLKH S 0 A_ChangeVelocity(-16,0,0,3)
BLKH RRRRRRRRRRRRRRRR 1 A_SpawnItemEx("BlackHoleBombXFX2",0,0,16,momx/1.5,momy/1.5,0,0,9)
stop
}
}

actor BlackVortexXFX1 : BlackVortexXFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_ScaleVelocity(0.00390625)
BLKH TS 3
BLKH S 0 A_ChangeVelocity(Cos(pitch)*-14,0,-sin(pitch)*14,3)//A_ScaleVelocity(-16.0)
BLKH RRRRRRRRRRRRRRRR 1 A_SpawnItemEx("BlackVortexXFX2",0,0,16,momx/1.5,momy/1.5,momz/1.5,0,9+16384)
stop
}
}

actor BlackVortexXFX2 : BlackVortexXFX
{
States
{
Spawn:
BLKH R 5
stop
}
}

actor BlackVortexXFX3 : BlackVortexXFX
{
Scale 1.5
States
{
Spawn:
BLKH TSRRR 3
stop
}
}

actor SaturnRingReturnFlag : OnceC{}//Ring tells itself to return


actor SaturnRingMainFlag : Inventory
{
inventory.amount 1
inventory.maxamount 10
}

actor SaturnRingReturnTimer : Inventory
{
inventory.amount 1
inventory.maxamount 35
}

actor SaturnRingAmmoTimer : Inventory
{
inventory.amount 1
inventory.maxamount 15
}

actor SaturnProtect1 : PowerProtection
{
Powerup.Duration 15
DamageFactor "SaturnWhiteRing1", 0.205
}

actor SaturnShotProtect : PowerProtection
{
Powerup.Duration 10
DamageFactor "SaturnShot", 1.0
}

actor SaturnNothing : BasicClientside
{
states
{
Spawn:
TNT1 A 1
stop
}
}

actor SaturnRingTossFX : BasicClientside
{
scale 2.5
alpha 0.75
states
{
Spawn:
SARI AGBG 1 A_FadeOut(0.20)
loop
}
}

actor ImpatientFX : BasicClientside
{
scale 2.5
alpha 0.75
states
{
Spawn:
STRN A 0 ThrustThingZ(0,5,0,1)
STRN A 1 A_FadeOut(0.05)
loop
}
}

actor SaturnRingTossFX2 : SaturnRingTossFX
{
states
{
Spawn:
SARI B 1 A_FadeOut(0.20)
loop
}
}

actor SaturnAmmoHelper : BasicHelper
{
scale 2.5
+NOCLIP
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 1
TNT1 A 0 A_TakeFromTarget("SaturnHoldAmmo",4)
TNT1 A 0 A_JumpIfInTargetInventory("SaturnHelperChecker",1,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("SaturnHoldAmmo",1,"Spawn2")
goto Death

Death:
TNT1 A 0
stop
}
}

actor Saturn_Catcher
{
var int user_USER;
-SOLID
+NOGRAVITY
+DONTDRAIN
renderstyle "none"
Species "SaturnSuck"
health 1
radius 40
height 56
scale 2.5
States
{
Spawn:
PLAY A 0
PLAY A 0 A_SetUserVar("user_USER",ACS_ExecuteWithResult(257,0))
PLAY A 0 A_ChangeFlag("SHOOTABLE",1)
PLAY A 0 A_ChangeFlag("DONTRIP",1)
PLAY A 1
PLAY A 1
stop
Death:
PLAY A 0
PLAY A 0 ACS_ExecuteWithResult("Saturn_AltfireSnatch",1,user_USER,ACS_ExecuteWithResult(147,0))
PLAY A 1
stop
}
}
  
actor SaturnSuckExplode
{
var int user_USER;
translation "202:202=210:210"
PROJECTILE
damagetype "DMGNoHitstun"
Obituary "%o was spaghettified by %k's Black Hole Vortex."
+THRUSPECIES
Species "SaturnSuck"
reactiontime 1
damage (0)
Radius 20
Height 20
speed 40
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_CountDown
wait
Death:
TNT1 A 0 A_Explode(1,64,0,0,65)
TNT1 A 1
stop
}
}

actor SaturnAltSuction_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("SaturnSuckIn",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("SaturnSuckInGrab",0,0,0,0)
TNT1 AA 0 A_FireCustomMissile("SaturnSuckIn2",random(-10,10),0,random(-10,10),random(-10,10),0,random(-10,10))
stop
}
}

actor SaturnSuckIn
{
PROJECTILE
+NOINTERACTION
+THRUSPECIES
Species "SaturnSuck"
height 0
radius 0
speed 0
states
{
Spawn:
TNT1 A 0
TNT1 A 0 
TNT1 A 3
stop
}
}

actor SaturnSuckInGrab : FastProjectile
{
PROJECTILE
+SKYEXPLODE
+DONTBLAST
+DONTSPLASH
+DONTREFLECT
+THRUSPECIES
Species "SaturnSuck"
Speed 650//450
Damage (0)
radius 12
height 12
States
{
Spawn:
TNT1 A 1
goto Death
Crash:
XDeath:
Death:
TNT1 A 0 A_Stop
TNT1 A 1 A_SpawnItemEx("SaturnSuckInGrabber")
stop
}
}

actor SaturnSuckIn2 : DustSuckerGrab
{
+THRUSPECIES
Species "SaturnSuck"
States
{
Spawn:
//TNT1 A 0
TNT1 A 1
goto Death
Crash:
XDeath:
Death:
TNT1 A 0 A_Stop
TNT1 A 1 A_CustomMissile("VacuumParticle2", 0, 0, 0, 0)
stop
}
}

actor VacuumParticle2
{
PROJECTILE
+CLIENTSIDEONLY
+DONTSPLASH
+DONTBLAST
//+NOINTERACTION
-SOLID
+NOGRAVITY
+THRUSPECIES
Species "SaturnSuck"
height 5
radius 5
Scale 2.5
Speed 68
States
{
Spawn:
COSS BBBBBBBBBBBBBBBB 1 A_JumpIfCloser(60,"Death")
stop
Death:
TNT1 A 1
stop
}
}

actor SaturnSuckInGrabber
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+DONTBLAST
+DONTREFLECT
+NOGRAVITY
+MISSILE
+THRUSPECIES
Species "SaturnSuck"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 Thing_ChangeTID(0,(ACS_ExecuteWithResult(147,0)+800))
stop
}
}

actor SaturnCatchSuccess : Powerup
{
powerup.duration 4
}

actor SaturnRingRefireDelay : Powerup
{
powerup.duration 5
}

actor SaturnCatchPickup : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SaturnCatchSuccess",1,"No")
TNT1 A 0 A_GiveInventory("SaturnCatchSuccess",1)
TNT1 A 0 A_PlaySoundEx("item/JunkPick","Body")
TNT1 A 0 A_JumpIfInventory("BlackVortexAmmo",28,"Pickup2")
TNT1 A 0 A_GiveInventory("BlackVortexAmmo",1)
TNT1 A 0 A_GiveInventory("SaturnCatchArmor",1)
//TNT1 A 0 A_GiveInventory("WhiteHoleAmmo",10)
//TNT1 A 0 A_TakeInventory("SaturnHoldAmmo",10)
stop

Pickup2:
TNT1 A 0 A_GiveInventory("BlackVortexAmmo",1)
TNT1 A 0 A_GiveInventory("SaturnCatchArmor",2)
stop

No:
TNT1 A 0
stop
}
}

actor SaturnArmorHelper : BasicHelper
{
scale 2.5
+NOCLIP
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_TakeFromTarget("BasicArmor",1)
loop

Death:
TNT1 A 0
stop
}
}

actor SaturnCatchArmor : BasicArmorBonus
{
  armor.maxsaveamount 75
  armor.savepercent 30.001
  armor.saveamount 5
  states
  {
  Spawn:
    TNT1 A 1 //A_GiveToTarget("SaturnArmorFlag",1)
    loop
  }
}

actor SaturnBlackProjectile
{
PROJECTILE
+RIPPER
damagetype "DMGNoHitstun"
Obituary ""
damage (4)
Radius 18
Height 18
Speed 39
Scale 1.25
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SARI G 1 //A_Weave(8, 8, 3, 3)
SARI G 0 A_SpawnItemEx("SaturnBlackProjectileFX",0,0,0,0,0,0,0,1)
LOOP
XDeath:
Death:
SARI G 1 A_FadeOut(.15)
SARI G 0 A_SetScale(ScaleX-0.3125)
SARI G 1 A_FadeOut(.15)
SARI G 0 A_SetScale(ScaleX-0.3125)
SARI G 1 A_FadeOut(.15)
SARI G 0 A_SetScale(ScaleX-0.3125)
SARI G 1 A_FadeOut(.15)
SARI G 0 A_SetScale(ScaleX-0.3125)
stop
}
}

actor SaturnBlackProjectileFX : BasicClientSide
{
+FORCEXYBILLBOARD
ReactionTime 4
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SARI G 1 A_CountDown
SARI G 0 A_FadeOut
SARI G 0 A_SetScale(scaleX-0.3125)
loop
}
}

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

actor WhiteHoleAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 360
+INVENTORY.IGNORESKILL
}

actor SaturnHoldAmmo : Inventory
{
inventory.amount 1
inventory.maxamount 280
+INVENTORY.IGNORESKILL
}

actor SaturnItemConfirm : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor SaturnHelperChecker : Powerup
{
Powerup.Duration 3
}

actor SaturnAbsorbChecker : Powerup
{
Powerup.Duration 3
}

actor SaturnMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("SaturnWhiteRing",0,1,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("SaturnWhiteRingB",0,1,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("SaturnWhiteRingR",0,1,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("SaturnWhiteRingO",0,1,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("SaturnWhiteRingP",0,1,-8,0)
goto Done
}
}

actor SaturnMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("SaturnBlackRing",0,1,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("SaturnBlackRingB",0,1,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("SaturnBlackRingR",0,1,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("SaturnBlackRingO",0,1,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("SaturnBlackRingP",0,1,-8,0)
goto Done
}
}

actor SaturnReload_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("AccretionAoe",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",60,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",120,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",180,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",240,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShot",300,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("AccretionAOEB",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",60,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",120,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",180,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",240,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotB",300,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("AccretionAOER",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",60,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",120,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",180,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",240,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotR",300,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("AccretionAOEO",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",60,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",120,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",180,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",240,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotO",300,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("AccretionAOEP",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",60,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",120,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",180,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",240,0,0,0)
TNT1 A 0 A_FireCustomMissile("AccretionShotP",300,0,0,0)
goto Done
}
}