actor SaturnOrbiterWep_NormalBar : NormalBar { args 216, 233 }
actor SaturnOrbiterWep : BaseMM8BDMWep
{
    Weapon.AmmoUse 4
    Weapon.AmmoGive 28
    Weapon.SlotNumber 7
    Inventory.Pickupmessage "$PU_SATURNORBITER"
    damagetype "SaturnOrbiter"
	Obituary "$OB_SATURNORBITER"
    Tag "$TAG_SATURNORBITER"
    weapon.ammotype "SaturnOrbiterAmmo"
    inventory.icon "SAORICON"
    States
    {
    SpawnLoop:
        SAOR Z -1
        loop
    Ready:
		SAOR I 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SATURNORBITER)
        SAOR I 1 A_WeaponReady
        Goto Ready+1
		ReadyC: Goto Ready+1
    Deselect:
        TNT1 A 0 A_JumpIfInventory("ShieldCheck", 1, "Detonate")
        SAOR I 0
        goto DeselectSwap
    Select:
        SAOR I 0
        goto SelectSwap
    Fire:
        SAOR I 0 A_JumpIfInventory("ShieldCheck", 1, "Detonate")
        SAOR I 0 A_JumpIfNoAmmo("NoAmmo")
        SAOR I 0 A_JumpIfInventory("SaturnOrbiterTrigger", 1, "NoAmmo")
        TNT1 A 2
        SAOR LM 1
        SAOR I 0 A_PlaySoundEx("weapon/blackholestart","Weapon")
        SAOR I 0 A_GiveInventory("ShieldCheck", 1)
        SAOR I 0 A_GiveInventory("SpawnSaturnOrbiter", 1)
        SAOR NOP 1
        TNT1 A 2
        SAOR JK 2
    Active:
        SAOR KKKKKKKK 1 A_WeaponReady //KKKKKKKKKKKKKKKKKK
		SAOR K 0 A_TakeInventory("SaturnOrbiterAmmo", 1, TIF_NOTAKEINFINITE)
        SAOR K 0 A_JumpIfInventory("SaturnOrbiterAmmo", 1, "Active")
        goto Detonate
	Altfire:
		SAOR K 0 A_JumpIfInventory("ShieldCheck",1,"Detonate")
		goto Super::Altfire

    Detonate:
        SAOR I 0 A_PlaySoundEx("weapon/blackholestart","Weapon")
        SAOR I 0 A_GiveInventory("SaturnOrbiterTrigger", 1)
        SAOR I 0 A_TakeInventory("ShieldCheck", 1)
        SAOR I 0 A_TakeInventory("SaturnOrbiterAmmo", 4,TIF_NOTAKEINFINITE)
        SAOR QR 1
        SAOR S 10
        SAOR RQ 1
        SAOR I 10
        SAOR I 0 A_ClearRefire
        goto Ready+1
    NoAmmo:
        SAOR I 1 ACS_NamedExecute("core_noammo",0)
        Goto Ready+1
    }
}

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

// actor SaturnOrbiterTrigger : Once {}

actor SpawnSaturnOrbiter : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterSpawner", 0, 0, 32)
        TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
        stop
    PickupSpread:
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterSpawnerA", 64, 0, 32, 0, 0, 0, 0)
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterSpawnerB", -32, -64, 32, 0, 0, 0, 0)
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterSpawnerC", -32, 64, 32, 0, 0, 0, 0)
        stop
    }
}

actor SaturnOrbiterTrigger : Powerup
{
    powerup.duration 35
}

const int SATURNORBITER_PARTMAX = 6;

actor SaturnOrbiterSpawner : BasicWatcher
{
    radius 1
    height 1
    +MISSILE
    +NOINTERACTION
    var int user_part;
    var int user_InFloor;
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
        TNT1 A 0 A_SetUserVar(user_InFloor, (z-floorz < 32))
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterCore", 0, 0, !user_InFloor * -32 + user_InFloor * -(z-floorz), 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
        TNT1 A 0 A_SetUserVar(user_part, SATURNORBITER_PARTMAX)
    SpawnWait:
		TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 32, 1, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
        TNT1 A 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        loop
    Detonate:
        TNT1 A 0 A_PlaySoundEx("weapon/blackholestart","auto")
        TNT1 A 15
        TNT1 A 0 A_PlaySoundEx("weapon/blackholeexplode","auto")
        TNT1 A 1
    SpawnSpiral:
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterSpiral", 0, 0, user_InFloor * (z-floorz), 1, 0, 0, user_part*(360/SATURNORBITER_PARTMAX))
        TNT1 A 0 A_SetUserVar(user_part, user_part-1)
        TNT1 A 0 A_JumpIf(user_part>0, "SpawnSpiral")
        TNT1 A 1 A_JumpIf(true, "End")
        wait
    End:
        TNT1 A 0
        stop
    }
}

actor SaturnOrbiterSpawnerA : SaturnOrbiterSpawner
{
    States
    {
	Spawn:
        TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
        TNT1 A 0 A_SetUserVar(user_InFloor, (z-floorz < 32))
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterCoreA", 0, 0, !user_InFloor * -32 + user_InFloor * -(z-floorz), 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
        TNT1 A 0 A_SetUserVar(user_part, SATURNORBITER_PARTMAX)
    SpawnWait:
		TNT1 A 0 A_Warp(AAPTR_TARGET, 64, 0, 32, 1, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
        TNT1 A 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        loop
    }
}
actor SaturnOrbiterSpawnerB : SaturnOrbiterSpawner
{
    States
    {
	Spawn:
        TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
        TNT1 A 0 A_SetUserVar(user_InFloor, (z-floorz < 32))
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterCoreB", 0, 0, !user_InFloor * -32 + user_InFloor * -(z-floorz), 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
        TNT1 A 0 A_SetUserVar(user_part, SATURNORBITER_PARTMAX)
    SpawnWait:
		TNT1 A 0 A_Warp(AAPTR_TARGET, -64, 64, 32, 1, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
        TNT1 A 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        loop
    }
}
actor SaturnOrbiterSpawnerC : SaturnOrbiterSpawner
{
    States
    {
	Spawn:
        TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
        TNT1 A 0 A_SetUserVar(user_InFloor, (z-floorz < 32))
        TNT1 A 0 A_SpawnItemEx("SaturnOrbiterCoreC", 0, 0, !user_InFloor * -32 + user_InFloor * -(z-floorz), 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
        TNT1 A 0 A_SetUserVar(user_part, SATURNORBITER_PARTMAX)
    SpawnWait:
		TNT1 A 0 A_Warp(AAPTR_TARGET, -64, -64, 32, 1, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
        TNT1 A 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        loop
    }
}


actor SaturnOrbiterCore : ProjSpawnFuncActor
{
    +NOGRAVITY
	+ISMONSTER
	-SHOOTABLE
    +NOTARGETSWITCH
    +THRUACTORS
    +FORCEXYBILLBOARD
    +MOVEWITHSECTOR
    +BRIGHT
    height 1
    radius 1
    maxstepheight 0
    renderstyle translucent
    alpha 0.8
    Scale 2.5
	damagetype "SaturnOrbiter"
    Obituary "$OB_SATURNORBITER"
	TRANSLATION "235:235=233:233", "210:210=216:216", "198:198=233:233", "192:192=216:216"
    var int user_part;
    var int user_partmax;
    States
    {
    Spawn:
        BHOL B 0
        BHOL G 0 A_RearrangePointers(AAPTR_TRACER, AAPTR_DEFAULT, AAPTR_DEFAULT)
        BHOL B 0 A_SetUserVar(user_partmax, 16)
        BHOL B 0 A_SetUserVar(user_part, user_partmax)
    SpawnParts:
        BHOL B 0 A_SpawnItemEx("SaturnOrbiterPart", 0, 0, 0, 0, 0, 0, user_part*(360/SATURNORBITER_PARTMAX), SXF_SETMASTER|SXF_TRANSFERPOINTERS)
        BHOL B 0 A_SetUserVar(user_part, user_part-1)
        BHOL B 0 A_JumpIf(user_part<=0, "Active")
        BHOL B 1 A_JumpIf(true, "SpawnParts")
        wait
    Active:
		TNT1 AAAAAAAA 0 A_SpawnItemEx("GigaChargeShotFXSP", random(-128,128), frandom(-128, 128), frandom(-12, 8),0,0,0,0,1)
		BHOL G 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 128)
		BHOL G 0 A_Explode(CallACS("vile_cbm_damage",7),128,0,0,96)
		BHOL B 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL C 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		TNT1 AAAAAAAA 0 A_SpawnItemEx("GigaChargeShotFXSP", random(-128,128), frandom(-128, 128), frandom(-12, 8),0,0,0,0,1)
		BHOL G 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 128)
		BHOL G 0 A_Explode(CallACS("vile_cbm_damage",10),128,0,0,96)
		BHOL D 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL E 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		TNT1 AAAAAAAA 0 A_SpawnItemEx("GigaChargeShotFXSP", random(-128,128), frandom(-128, 128), frandom(-12, 8),0,0,0,0,1)
		BHOL G 0 ACS_NamedExecuteAlways("core_radiuspull", 0, -6, 128)
		BHOL G 0 A_Explode(CallACS("vile_cbm_damage",7),128,0,0,96)
		BHOL F 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 0, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")

        loop
    Detonate:
        BHOL A 0 A_KillChildren
        BHOL BCDEFBCDEFBCDEF 1
        stop
    End:
        TNT1 A 0
        stop
    }
}

actor SaturnOrbiterCoreA : SaturnOrbiterCore
{
    States
    {
    Active:
		BHOL B 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL C 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL D 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL E 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL F 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, 64, 0, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")

        loop
    }
}
actor SaturnOrbiterCoreB : SaturnOrbiterCore
{
    States
    {
    Active:
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, 64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")

        loop
    }
}
actor SaturnOrbiterCoreC : SaturnOrbiterCore
{
    States
    {
    Active:
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL B 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL B 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL C 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL C 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL D 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL D 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, -48, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL E 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL E 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		BHOL F 0 A_Warp(AAPTR_TARGET, -32, -64, 48, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL F 1 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")

        loop
    }
}

actor SaturnOrbiterPart : ProjSpawnFuncActor
{
    +NOCLIP
    +NOGRAVITY
    +DROPOFF
    +MISSILE
    +ACTIVATEIMPACT
    +ACTIVATEPCROSS
    +SHOOTABLE
    +DONTREFLECT
    +DONTSPLASH
    +DONTBLAST
    +DONTRIP
    +INVULNERABLE
    +NOBLOOD
    +FORCEXYBILLBOARD
    +MOVEWITHSECTOR
    +NOTAUTOAIMED
    +BRIGHT
    painchance 255
    maxstepheight 0
    Scale 2.5
    height 32
    radius 32
	damagetype "SaturnOrbiter"
    Obituary "$OB_SATURNORBITER"
    var int user_radius;
    var int user_angle;
    var int user_angleadd;
    var int user_expandtime;
	var int user_TranslateWhiteColors;
	TRANSLATION "235:235=233:233", "210:210=216:216"

    States
    {
    Spawn:
        BHOL G 0
        BHOL G 0 A_SetUserVar(user_radius, 16)
        BHOL G 0 A_SetUserVar(user_angleadd, 12)
        BHOL G 0 A_SetUserVar(user_expandtime, 30)
        BHOL G 0 A_SetUserVar(user_angle, angle)
        goto Expand
    SpawnLoop:
        BHOL H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
        BHOL H 0 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL G 0 A_SetUserVar(user_angle, user_angle+12)
        BHOL G 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
        BHOL H 0 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL G 0 A_SetUserVar(user_angle, user_angle+12)
        BHOL G 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)  
		BHOL H 0 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL H 0 A_SetUserVar(user_angle, user_angle+12)
        BHOL H 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL H 0 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        BHOL H 0 A_SetUserVar(user_angle, user_angle+12)
        BHOL H 1 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)  
        loop
    Expand:
        BHOL H 0 A_SetUserVar(user_angleadd, user_angleadd-((user_expandtime%4)%2))
		BHOL H 0 A_SetUserVar(user_radius, user_radius+4)
		BHOL H 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		BHOL H 1
		BHOL H 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		BHOL H 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		BHOL H 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
        BHOL H 0 A_JumpIfInTargetInventory("SaturnOrbiterTrigger", 1, "Detonate")
        loop
    Death:
    Detonate:
        BHOL H 0 A_SetUserVar(user_radius, user_radius-16)
        BHOL H 1
        BHOL H 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
        BHOL H 0 A_Warp(AAPTR_TARGET, cos(-user_angle)*user_radius, sin(-user_angle)*user_radius, 16, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
        BHOL H 0 A_JumpIf(user_radius <= 0, "End")
        loop
    End:
        BHOL H 0
        stop
    }
}

actor SaturnOrbiterSpiral : BasicProjectile
{
    PROJECTILE
    +FORCEXYBILLBOARD
    +BRIGHT
    Radius 16
    Height 10
    scale 2.5
    damage (CallACS("vile_cbm_damage",25))
	TRANSLATION "235:235=233:233", "210:210=216:216"
    damagetype "SaturnOrbiter"
    Obituary "$OB_SATURNORBITER"
    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", 80)
        TNT1 A 0 A_SetUserVar("user_turndivisor_add", 10)
    Spawn2:
        //TNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)
        BHOL Y 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)
        BHOL Y 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)
        BHOL Z 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)
        BHOL Z 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:
        POWS A 0
        stop
    }
}
