actor TopSpinWep : MegaBuster 10039
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Obituary "%o was twisted by %k's Top Spin."
Inventory.Pickupmessage "Power up! Top Spin!"
weapon.ammotype "TopAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
inventory.icon "TOPSI"
Scale 2.0
States
{
Spawn:
WEAP J 1
loop
Ready:
TOPH A 0 ACS_ExecuteAlways(998,0,9)
TOPH A 0 A_TakeInventory("SpinTime",1)
TOPH A 1 A_WeaponReady
Goto Ready+2
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
TOPH A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
TOPH A 1 A_Raise
Loop
Fire:
TOPH A 0 A_JumpIfInventory("SpinTime",1,"SpinEnd")
TOPH A 0 ACS_Execute(195,0)
TOPH A 0 A_JumpIfNoAmmo("NoAmmo")
TOPH A 0 A_JumpIf(momz==0, "NoAmmo")
TOPH A 0 A_TakeInventory("TopAmmo", 5)
TOPH A 0 A_PlaySoundEx("weapon/topspin","Weapon")
Goto Spin
Spin:
TOPH A 0 A_GiveInventory("SpinTime",1)
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH B 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH B 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH C 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH C 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH D 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH D 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH E 1 A_JumpIf(z-floorz<=0, "Fire")
TOPH A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TOPH A 0 ACS_ExecuteAlways(990,0,1)
TOPH A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TOPH E 1 A_JumpIf(z-floorz<=0, "Fire")
TNT1 A 0 A_SpawnItemEx("TopRadius",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 0 ACS_ExecuteAlways(990,0,1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",999,"Ready")
TNT1 A 1 A_JumpIf(z-floorz<=0, "Fire")
Goto Spin+33
SpinEnd:
TOPH A 0 A_TakeInventory("SpinTime",1)
TOPH A 1 ACS_Execute(979,0)
TOPH A 0 A_Refire
Goto Ready+1
NoAmmo:
TOPH A 1 ACS_Execute(979,0)
Goto Ready+1
}
}

actor TopAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor TopRadius
{
PROJECTILE
scale 2.5
damagetype "Top"
Speed 0
+DONTBLAST
height 0
radius 0
States
{
Spawn:
TNT1 A 0
TOPS A 2 A_Explode(45,85,0)
stop
}
}

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