actor SparkLobberWep_NormalBar : NormalBar{args 214, 225}
actor SparkLobberWep : BaseMM8BDMWep
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Inventory.Pickupmessage "$PU_SPARKLOBBER"
Obituary "$OB_SPARKLOBBER"
Tag "$TAG_SPARKLOBBER"
weapon.ammotype "SparkLobberAmmo"
inventory.icon "SPLBICON"
States
{
SpawnLoop:
SPLB Z -1
loop
Ready:
SPLB C 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SPARKLOBBER)
SPLB C 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SPLB C 0
goto DeselectSwap
Select:
SPLB C 0
goto SelectSwap
Fire:
SPLB C 0 A_JumpIfNoAmmo("NoAmmo")
SPLB C 2 
SPLB C 0 A_PlaySoundEx("weapon/sparklobbershot","Weapon")
SPLB C 0 A_FireCustomMissile("SparkLobberLob",0,1,8,0)
SPLB DE 4
SPLB D 8
SPLB CCCCCC 1 A_WeaponReady(WRF_NOFIRE)
SPLB D 0 A_Refire
Goto Ready+1
NoAmmo:
SPLB C 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

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

actor SparkLobberLob : BasicProjectile
{
+BRIGHT
Translation "198:198=225:225"
PROJECTILE
-NOGRAVITY
//+RIPPER
+SKYEXPLODE
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+CANBOUNCEWATER
damagetype "SparkLobber"
Obituary "$OB_SPARKLOBBER"
Radius 14
Height 14
Damage (CallACS("vile_cbm_damage",6))
speed 24
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,40,0,1)
SPLB AAAABBBB 1 A_SpawnItemEX("SparkLobFX",random(0,28),0,random(-28,28),0,0,0,random(90,270),1)
SPLB A 0 A_GiveInventory("CutterFlag",1)
SPLB A 0 A_JumpIfInventory("CutterFlag",350,"Death")
goto Spawn+2
Crash:
Death:
TNT1 A 0 A_SpawnItemEx("SparkLobberLob2",0,0,0,0,0,0,0,1)
stop
XDeath:
TNT1 A 0
stop
}
}

actor SparkLobberLob2 : SparkLobberLob
{
+NOGRAVITY
+THRUACTORS
+FLOORHUGGER
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEX("weapon/sparklobber","Voice", 1)
TNT1 AA 0 A_SpawnItemEX("SparkLobFX3",random(0,96),0,0,0,0,random(1,4),random(0,359),1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),0,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),45/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),45,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),135/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),90,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),225/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),135,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),315/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),180,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),405/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),225,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),495/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),270,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),585/2,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),315,1)
TNT1 A 0 A_SpawnItemEX("SparkLobFX2",96,0,0,0,0,random(1,2),675/2,1)
TNT1 AAAAA 1 A_Explode(CallACS("vile_cbm_damage",10),96,0,0,96)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",7,"Death")
goto Spawn+2
Death:
TNT1 A 0 A_StopSound("Voice")
stop
}
}

actor SlowedSpark : CustomInventory
{
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Use:
TNT1 A 0 A_JumpIfInventory("PowerSlowS", 1, 2)
TNT1 A 0 A_SpawnItemEx("SparkLobberWatcher")
TNT1 A 0 A_GiveInventory("SlowedPowerS", 1)
stop
}
}

actor SparkLobberWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0 
TNT1 A 3 A_GiveToTarget("SparkLobberSlowFX", 1)
TNT1 A 0 A_JumpIfInTargetInventory("PowerSlowS", 1, "Spawn")
stop
}
}

actor SlowedPowerS : PowerupGiver
{
Speed 0.67
powerup.duration 105
powerup.type "PowerSlowS"
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
states
{
Pickup:
TNT1 A 0 

TNT1 A 175
stop
}
}

actor PowerSlowS : PowerSpeed
{
Speed 0.67
}

actor SparkLobberSlowFX : CustomInventory
{
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Use:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("ShockSlowFX", random(16, 48), 0, Random(16,48), 0, 0, 0, random(0, 359))
stop
}
}

actor ShockSlowFX
{
+BRIGHT
+FLOATBOB
+NOGRAVITY
+THRUACTORS
+CLIENTSIDEONLY
+FORCEXYBILLBOARD
+MISSILE
+DONTBLAST
Damage(0)
Scale 1.25
Height 0
Radius 0
States
{
Spawn:
SPLB AB 4 A_Fadeout(0.2)
loop
}
}

actor SparkLobberProtect : PowerProtection
{
Powerup.Duration 10
damagefactor "SparkLobber", 0.0
}

actor SparkLobFX : BasicGraphicEffect
{
+BRIGHT
Scale 1.15
States
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_Jump(256,"Spawn1","Spawn2")
Spawn1:
SPLB AABB 1 A_FadeOut(0.05)
loop
Spawn2:
SPLB BBAA 1 A_FadeOut(0.05)
loop
}
}

actor SparkLobFX2 : BasicGraphicEffect
{
+BRIGHT
Scale 2.25
States
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_Jump(256,"Spawn1","Spawn2")
Spawn1:
SPLB AABB 1 A_FadeOut(0.08)
loop
Spawn2:
SPLB BBAA 1 A_FadeOut(0.08)
loop
}
}

actor SparkLobFX3 : SparkLobFX2 {}