actor SandSwarmWep_NormalBar : NormalBar{args 144,13}
actor SandSwarmWep : BaseMM8BDMWep 
{
Weapon.AmmoUse 1
Weapon.AmmoGive 56
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_SANDSWARM"
Obituary "$OB_SANDSWARM"
Tag "$TAG_SANDSWARM"
weapon.ammotype "SandSwarmAmmo"
inventory.pickupsound "weapon/weaponup"
inventory.icon "SDSWICON"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
SDSW Z 1
loop
Ready:
SDSW A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SANDSWARM)
SDSW A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SDSW A 0 
goto DeselectSwap
Select:
SDSW A 0 
goto SelectSwap
Fire:
SDSW D 0 A_JumpIfNoAmmo("NoAmmo")
SDSW EFGH 2
SDSW H 1
SDSW H 1
Fire2:
SDSW D 0 A_JumpIfNoAmmo("NoAmmo")
SDSW I 2
SDSW D 0 A_PlaySoundEx("weapon/RabidBurst","Weapon")
SDSW JJ 0 A_SpawnItemEx("SandSwarm",16,8,48,frandom(-4,8),frandom(-12,12),frandom(15,20),0)
SDSW J 0 A_SpawnItemEx("SandSwarm",12,8,32,frandom(-1,4),frandom(-1,4),frandom(10,15),0)
SDSW J 2 A_TakeInventory("SandSwarmAmmo",1,TIF_NOTAKEINFINITE)
SDSW J 0 A_Refire("Fire2")
SDSW GFE 3
SDSW D 0 A_Refire
Goto Ready+1
NoAmmo:
SDSW A 0 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor SandSwarmAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor SandSwarm : BasicProjectile
{
var int user_PierceRipper;
+HEXENBOUNCE
//-BOUNCEONFLOORS
bouncecount 3
PROJECTILE
+DONTBLAST
-NOGRAVITY
gravity 2.0
Radius 16
Height 16
Obituary "$OB_SANDSWARM"
damagetype "SandSwarm"
scale 2.5
damage (CallACS("vile_cbm_damage",15))
speed 0
states
{
Spawn:
SDSW K 0
SDSW KL 2 ThrustThingZ(0, 3, 1, 1)
loop
Death:
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",15),32,0,0,32)
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEnd", 5, 0, -3, 0, 0, 0,0,1)
stop
}
}