actor SpinTopWep_NormalBar : NormalBar{args 4, 41}
actor SpinTopWep : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Inventory.Pickupmessage "$PU_SPINTOP"
Tag "$TAG_SPINTOP"
Obituary "$OB_SPINTOP"
weapon.ammotype "SpinTopAmmo"
inventory.icon "SPTPICON"
States
{
SpawnLoop:
SPTP Z -1
loop
Ready:
SPTP A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SPINTOP)
SPTP A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SPTP A 0
goto DeselectSwap
Select:
SPTP A 0
goto SelectSwap
Fire:
SPTP M 0 A_JumpIfNoAmmo("NoAmmo")
SPTP M 0 A_PlaySoundEx("weapon/spintopthrow","Weapon")
SPTP M 0 A_FireCustomMissile("SpinTopTossed",0,1,8,0)
SPTP K 2
SPTP K 2 OffSet(-70,74)
SPTP K 2 OffSet(-121,114)
SPTP L 2 OffSet(1,31)
SPTP L 2 OffSet(-21,56)
SPTP L 2 OffSet(-33,84)
TNT1 A 6
SPTP M 1 OffSet(-4,64)
SPTP M 1 OffSet(-2,48)
SPTP M 1 A_WeaponReady(14)
Goto Ready+1

NoAmmo:
SPTP A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1

}
}

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

actor SpinTopTossed : BasicProjectile
{
PROJECTILE
scale 2.5
Obituary "$OB_SPINTOP"
//+RIPPER
+DONTBLAST
-NOGRAVITY
//+FLOORHUGGER
Speed 24
Radius 16
+STEPMISSILE
maxstepheight 16
Height 16
Damage (CallACS("vile_cbm_damage",30))
Damagetype "SpinTop" 
States
{
Spawn:
SPTP XXYY 1 A_CheckFloor("Death")
loop
Death:
TNT1 A 0 A_JumpIf(z-floorz==0,"Death2")
TNT1 A 1
stop
Death2:
SPTP X 0 A_PlaySoundEx("weapon/SpinTop","Weapon")
TNT1 A 1 A_SpawnItemEx("SpinTopGround",0,0,0,24,0,0,0,0,0)
stop
XDeath:
TNT1 A 0 A_Checkfloor("DoAHop")
TNT1 A 0 A_SpawnItemEx("SpinTop2",0,0,0,2,0,2)
stop
DoAHop:
TNT1 A 0 A_SpawnItemEx("SpinTop2",0,0,0,2,0,12)
Stop
}
}

actor SpinTopGround : BasicProjectile
{
PROJECTILE
-NOGRAVITY
+NOEXPLODEFLOOR
+STEPMISSILE
maxstepheight 16
+BOUNCEONCEILINGS
+FORCEXYBILLBOARD
BounceCount 1
Damage (CallACS("vile_cbm_damage",30))
DamageType "SpinTop"
Obituary "$OB_SPINTOP"
Height 16
Radius 16
Scale 2.5
speed 24
States
{
Spawn:
SPTP XY 2
loop
XDeath:
TNT1 A 0 A_Checkfloor("DoAHop")
TNT1 A 0 A_SpawnItemEx("SpinTop2",0,0,0,2,0,2)
stop
DoAHop:
TNT1 A 0 A_SpawnItemEx("SpinTop2",0,0,0,2,0,12)
Stop
}
}

actor SpinTop2 : BasicProjectile
{
PROJECTILE
scale 2.5
Obituary "$OB_SPINTOP"
+RIPPER
+DONTBLAST
-NOGRAVITY
//+FLOORHUGGER
Speed 24
Radius 16
Height 16
Damage (CallACS("vile_cbm_damage",3))
var int user_PierceRipper;
Damagetype "SpinTop" 
States
{
Spawn:
SPTP X 0
TNT1 A 0 A_GiveInventory("PierceRipperLimit", 4)
SpawnFrame:
SPTP XXYY 1 A_CheckFloor("Death")
loop
Death:
TNT1 A 0
stop
}
}