actor SpikeMillWep_NormalBar : NormalBar{args 197,94}
actor SpikeMillWep_ScriptBar : ScriptBar{}
actor SpikeMillWep : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Inventory.Pickupmessage "$PU_SPIKEMILL"
Obituary "$OB_SPIKEMILL"
Tag "$TAG_SPIKEMILL"
weapon.ammotype "SpikeMillAmmo"
inventory.icon "SKMLICON"
States
{
SpawnLoop:
SKML Z 1
loop
Ready:
SKML A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SPIKEMILL)
SKML A 0 A_JumpIfInventory("SpikeMillCooldownFlag",1,"ReadyCooldown")
SKML A 1 A_WeaponReady
Goto Ready+1
ReadyCooldown:
SKML A 1 A_WeaponReady(WRF_NOFIRE)
Goto Ready+1

ReadyC: Goto Ready+1
Deselect:
SKML A 0 
goto DeselectSwap
Select:
SKML A 0 
goto SelectSwap
Fire:
SKML A 0 A_JumpIfNoAmmo("NoAmmo")
SKML A 0 A_PlaySoundEx("weapons/mm9/lasertridentfire", "Weapon")
SKML A 0 A_FireCustomMissile("SpikeMill1",0,1,8,0)
SPAS D 0 A_GiveInventory("SpikeMillCooldownFlag",1)
SPAS D 0 A_SpawnItemEx("SpikeMillCooldowner")
SKML BC 5
SKML A 24
Goto Ready+1
NoAmmo:
SKML A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor SpikeMillCooldownFlag : Once {}

actor SpikeMillCooldowner : BasicCooldowner
{
reactiontime 70
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 1 A_GiveInventory("SpikeMillCooldownerFunc",1)
loop
Death:
TNT1 A 0 A_TakeFromTarget("SpikeMillCooldownFlag",1)
stop
}
}

actor SpikeMillCooldownerFunc : BasicCooldownerFunc
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInTargetInventory("SpikeMillCooldownFlag",1,"PickupBasic")
goto PickupRemove
}
}


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

actor SpikeMill1 : BasicProjectile
{
PROJECTILE
Damage (CallACS("vile_cbm_damage",22))
Height 5
Radius 6
Obituary "$OB_SPIKEMILL"
damagetype "SpikeMill"
-NOGRAVITY
+HEXENBOUNCE
-BOUNCEONFLOORS
bouncefactor 0.75
wallbouncefactor 0.75
Scale 1.5
speed 4
States
{
Spawn:
TNT1 A 0
SKML D 4
Loop
Death:
SKML I 0 A_ChangeFlag("RIPPER", 1)
TNT1 AA 1 A_CheckFloor("Floor")
stop
Floor:
SKML A 0 A_PlaySoundEx("weapons/mm9/lasertridentfire", "Weapon")
TNT1 A 0 A_SpawnItemEx("SpikeMill",0,0,0,0,0,22.5)
TNT1 A 0 A_SpawnItemEx("SpikeMill",0,32,0,0,0,22.5)
TNT1 A 0 A_SpawnItemEx("SpikeMill",0,-32,0,0,0,22.5)
TNT1 G 0 A_SpawnItemEx("SpikeMillSpawner",5,0,0,15)
TNT1 G 0 A_SpawnItemEx("SpikeMillSpawner",5,32,0,15)
TNT1 G 0 A_SpawnItemEx("SpikeMillSpawner",5,-32,0,15)
stop
}
}

Actor SpikeMillSpawner : BasicProjectile
{
  Radius 8
  Height 8
  Speed 24
  Damage 0
  +RIPPER
  +NOEXPLODEFLOOR gravity 500.0 -NOGRAVITY
  +STEPMISSILE
  maxstepheight 64
  +THRUACTORS
  damagetype "SpikeMill"
  Obituary "$OB_SPIKEMILL"
  reactiontime 40
  Projectile
  States
  {
  Spawn: 
    TNT1 A 4 A_Countdown
	TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
	TNT1 A 0 A_PlaySoundEx("weapons/mm9/lasertridentfire", "Weapon")
	TNT1 A 0 A_SpawnItemEx("SpikeMill",0,0,0,0,0,22.5)
    Loop
  Death:  
    TNT1 A 6
    Stop
  }
}


Actor SpikeMill : BasicProjectile
{
gravity 2.0
Height 24
Radius 24
PROJECTILE
+RIPPER
-NOGRAVITY
damage (CallACS("vile_cbm_damage",9))
damagetype "SpikeMill"
Obituary "$OB_SPIKEMILL"
var int user_PierceRipper;
States
{
Spawn:
TNT1 A 0
SKML E 1 A_JumpIf(momz<1, 1)
wait
TNT1 A 0 A_GiveInventory("PierceRipperLimit", 2)
SKML F 1
wait
}
}
