actor SkullSpiralWep_NormalBar : NormalBar{args 68, 195}
actor SkullSpiralWep : BaseMM8BDMWep
{
Inventory.Pickupmessage "$PU_SKULLSPIRAL"
inventory.pickupsound "weapon/weaponup"
Weapon.AmmoUse 7
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_SKULLSPIRAL"
Tag "$TAG_SKULLSPIRAL"
weapon.ammotype "SkullSpiralAmmo"
inventory.icon "SSPRICON"
States
{
SpawnLoop:
SSPR Z 1
loop
Ready:
SKLS A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SKULLSPIRAL)
SKLS A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SKLS A 0
goto DeselectSwap
Select:
SKLS A 0
goto SelectSwap
Fire:
SKLS A 0 A_JumpIfInventory("SkullSpiralCooldown",1,"NoAmmo")
SKLS A 0 A_JumpifNoAmmo("NoAmmo")
SKLS IJ 2
SKLS G 0 A_TakeInventory("SkullSpiralAmmo",7)
SKLS G 0 A_PlaySoundEx("misc/kingswing","Auto")
SKLS G 0 A_PlaySoundEx("weapon/skullactivate","Weapon")
SKLS K 0 A_JumpIfInventory("PowerSpread",1,"Spread")
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,0)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,180)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,90)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,270)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,90)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,270)
SKLS KKKKKKKKKKKKKKKKKKKK 1 ACS_NamedExecute("vile_statechange",0,2)
SKLS KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 1 ACS_NamedExecute("vile_statechange",0,2)
SKLS K 0 A_StopSoundEx("Weapon")
SKLS K 10
SKLS JJIIAA 1
SKLS A 4
SKLS A 0 A_GiveInventory("SkullSpiralCooldown",1)
Goto Ready+1
Spread:
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,45)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,135)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,225)
SKLS K 0 A_SpawnItemEx("SkullSpiral",0,0,0,0,0,0,315)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,0)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,90)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,180)
SKLS K 0 A_SpawnItemEx("SkullSpiral2",0,0,0,0,0,0,270)
SKLS KKKKKKKKKKKKKKKKKKKK 1 ACS_NamedExecute("vile_statechange",0,2)
SKLS KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 1 ACS_NamedExecute("vile_statechange",0,2)
SKLS K 5
SKLS JJIIAA 1 
SKLS A 4
SKLS A 0 A_GiveInventory("SkullSpiralCooldown",1)
Goto Ready+1
NoAmmo:
SKLS A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

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

actor SkullSpiral : ProjSpawnFuncActor
{
	+MISSILE
	+SHOOTABLE
	+NODAMAGETHRUST
	+NOBLOOD
	+MOVEWITHSECTOR
	+CANBOUNCEWATER
	+DONTSPLASH
	+STEPMISSILE
	+DONTREFLECT
	+NOTAUTOAIMED
	+HEXENBOUNCE
	+DONTDRAIN
	+EXPLODEONDEATH
	+NOTARGETSWITCH
	+NOGRAVITY
	+RIPPER
	+THRUSPECIES +CANTSEEK //no foolery allowed.

    +BRIGHT
    painchance 255
    maxstepheight 0
    Scale 3.5
    height 36
    radius 36
	damagetype "SkullSpiral"
	Obituary "$OB_SKULLSPIRAL"
    var int user_radius;
    var int user_radiusadd;
    var int user_angle;
    var int user_angleadd;
    var int user_expandtime;
    var int user_outtime;
    var int user_damage;

    States
    {
    Spawn:
		SKLC I 0
		SKLC I 0 A_GiveInventory("MM8BDMProjSpawnFunc",1)
		SKLC I 0 A_SetUserVar(user_radius, 0)
		SKLC I 0 A_SetUserVar(user_radiusadd, 3)
		SKLC I 0 A_SetUserVar(user_angleadd, 0)
		SKLC I 0 A_SetUserVar(user_expandtime, 7)
		SKLC I 0 A_SetUserVar(user_outtime, 15)
		SKLC I 0 A_SetUserVar(user_angle, angle)
		SKLC I 0 A_SetUserVar(user_damage, 4)
		goto Expand
    SpawnLoop:
		SKLC I 0 A_PlaySoundEx("weapon/skullloop","Weapon",1)
		SKLC I 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
		SKLC I 0 A_JumpIf(user_outtime <= 0, "Retract")
		SKLC I 0 A_Explode(CallACS("vile_cbm_damage",user_damage),32,0,0,32)
		SKLC I 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC I 1 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		SKLC I 0 A_JumpIf(user_outtime <= 0, "Retract")
		SKLC J 0 
		SKLC I 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC J 1 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		SKLC J 0 A_JumpIf(user_outtime <= 0, "Retract")
		SKLC K 0 
		SKLC I 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC K 1 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) 
		SKLC K 0 A_JumpIf(user_outtime <= 0, "Retract")
		SKLC I 0 A_SetUserVar(user_outtime, user_outtime-1)
		loop
    Expand:
		SKLC I 0 A_SetUserVar(user_angleadd, user_angleadd+(user_radiusadd*0.75))
		SKLC I 0 A_SetUserVar(user_radius, user_radius+user_radiusadd)
		SKLC I 0 A_SetUserVar(user_expandtime, user_expandtime-1)
		SKLC I 1 A_Explode(CallACS("vile_cbm_damage",user_damage),32,0,0,32)
		SKLC J 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC J 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC J 0 A_SetUserVar(user_radius, user_radius+user_radiusadd)
		SKLC J 1
		SKLC K 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC K 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC K 0 A_SetUserVar(user_radius, user_radius+user_radiusadd)
		SKLC K 1
		SKLC K 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC K 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius)+user_radiusadd, sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC K 0 A_JumpIf(user_expandtime <= 0, "SpawnLoop")
		loop
	Retract:
		SKLC I 0 A_SetUserVar(user_radius, user_radius-user_radiusadd)
		SKLC I 1 A_Explode(CallACS("vile_cbm_damage",user_damage),32,0,0,32)
		SKLC J 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC J 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius), sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC J 0 A_SetUserVar(user_radius, user_radius-user_radiusadd)
		SKLC J 1
		SKLC K 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC K 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius), sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC K 0 A_SetUserVar(user_radius, user_radius-user_radiusadd)
		SKLC K 1 
		SKLC K 0 A_SetUserVar(user_angle, user_angle-user_angleadd)
		SKLC K 0 A_Warp(AAPTR_TARGET, (cos(-user_angle)*user_radius), sin(-user_angle)*user_radius, 20, 0, WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		SKLC K 0 A_JumpIf(user_radius <= 0, "End")
		loop
    Death:
    Detonate:
		SKLC I 0
		MMFX BCDE 2
		stop
    End:
		SKLC I 0
		stop
    }
}

actor SkullSpiral2 : SkullSpiral
{
    States
    {
    Spawn:
		SKLC I 0
		SKLC I 0 A_GiveInventory("MM8BDMProjSpawnFunc",1)
		SKLC I 0 A_SetUserVar(user_radius, 0)
		SKLC I 0 A_SetUserVar(user_radiusadd, 5)
		SKLC I 0 A_SetUserVar(user_angleadd, 0)
		SKLC I 0 A_SetUserVar(user_expandtime, 7)
		SKLC I 0 A_SetUserVar(user_outtime, 15)
		SKLC I 0 A_SetUserVar(user_angle, angle)
		SKLC I 0 A_SetUserVar(user_damage, 6)
		goto Expand
    }
}

actor SkullSpiralCooldown : Powerup {Powerup.Duration 20}