actor SparkShockBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_3G"
dropitem "SparkShockWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 28
Obituary "$OB_SPARKSHOCK"
Inventory.Pickupmessage "Power up! Mighty Spark Shock!"
weapon.ammotype "MightyGodAmmo"
States
{
Spawn:
C_03 G 1
loop
Ready:
SPAH A 10 ACS_ExecuteAlways(998,0,DYE_SPARKMAN)
SPAH A 10 A_Gunflash
SPAH A 1 A_SpawnItemEx("SparkShockHelper",0,0,80,0,0,0,0,1)
Ready1:
SPAH A 0 A_TakeInventory("MightyGodAmmo",28)
SPAH A 1 A_WeaponReady(WRF_ALLOWRELOAD)
wait

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SPAH A 1 A_Lower
Loop

Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SPAH A 1 A_Raise
Loop

Fire:
SPAH A 1 Offset(0,128)
TNT1 A 1 Offset(0, -56)
SPAH P 1 Offset(0, -56)
SPAH P 1 Offset(0, -40)
SPAH P 1 Offset(0, -24)
FireStart:
SPAH P 1 Offset(0, -30)A_GiveInventory("MightyGodAmmoGiver",1)
TNT1 A 0 A_JumpIfInventory("MightyGodAmmo",14,"FireMidSFX")
SPAH P 0 A_Refire("FireStart")
goto FireEnd

FireMidSFX:
TNT1 A 0 A_GiveInventory("SparkM_MidChimeSnd_P",1)
SPAH PZPZ 1
FireMid:
SPAH P 1 Offset(0, -30)A_GiveInventory("MightyGodAmmoGiver",1)
SPAH P 0 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_A") == 1, "MedSynthFire")
TNT1 A 0 A_JumpIfInventory("MightyGodAmmo",28,"FireMaxSFX")
SPAH P 0 A_Refire("FireMid")
goto FireEnd

FireMaxSFX:
TNT1 A 0 A_GiveInventory("SparkM_ChimeSnd_P",1)
FireMax.a:
SPAH PP 1 Offset(0, -30)A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_A") == 1, "SynthFire")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_R") == 1, "MedSynthFire")
SPAH P 0 A_Refire("FireMax.b")
goto FireEnd
FireMax.b:
SPAH ZZ 1 Offset(0, -30)A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_A") == 1, "SynthFire")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_R") == 1, "MedSynthFire")
SPAH P 0 A_Refire("FireMax.a")
goto FireEnd

FireEnd:
SPAH P 0 A_PlaySoundEx("weapon/sparkshock","Weapon")
SPAH P 0 A_GiveInventory("SparkmanMainCheck",1)
SPAH P 0 ACS_NamedExecuteAlways("BULL_SetState",0,2)
SPAH P 0 A_TakeInventory("MightyGodAmmo",28)
SPAH Q 1 Offset(0, 8)
SPAH Q 1 Offset(0, 16)
SPAH R 1 Offset(0, 24)
SPAH Y 1 Offset(0, 32)
SPAH W 1 Offset(0, 32)
SPAH Y 1 Offset(0, 32)
SPAH W 1 Offset(0, 32)
SPAH Y 1 Offset(0, 32)
SPAH W 1 Offset(0, 32)
SPAH Y 1 Offset(0, 32)
SPAH W 1 Offset(0, 32)
SPAH Y 1 Offset(0, 32)
FireEnd2:
SPAH R 1 Offset(0, 16)A_PlaySoundEx("weapon/sparkreset", "Body")
SPAH R 1 Offset(0, 8)//A_TakeInventory("MightyGodAmmo",99)
SPAH Q 1 Offset(0, -8)
SPAH P 1 Offset(0, -32)
TNT1 A 11 Offset(0,128)
SPAH A 2 Offset(0,196)
SPAH A 2 Offset(0,128)
SPAH A 2 Offset(0,64)
goto Ready1

Altfire:
SPAH ABEE 1 Offset(0, 24)
SPAH R 1 Offset(0, 36)
SPAH R 1 Offset(0, 72)
AltFireHold:
SPAH Y 0 ACS_NamedExecuteAlways("BULL_SetState",0,3)
SPAH W 1 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
TNT1 A 0 A_SpawnItemEx("SparkHealCheckingFX",55,-10,30,0,0,3,0,1)
TNT1 A 0 A_SpawnItemEx("SparkHealCheckingFX",55,10,30,0,0,3,0,1)
SPAH W 1 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
SPAH W 0 Offset(0, 48)A_JumpIfInventory("SparkHealDetection",1,"AltHeal")
SPAH Y 0 A_Refire("AltfireHold")
goto AltEnd
AltHeal:
SPAH Y 1 Offset(0, 48) A_PlaySoundEx("weapon/sparkrecharger","Weapon")
SPAH Y 0 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
SPAH W 1 Offset(0, 48) //A_PlaySoundEx("weapon/sparkrecharger","Weapon")
SPAH Y 0 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
SPAH Y 1 Offset(0, 48) //A_PlaySoundEx("weapon/sparkrecharger","Weapon")
SPAH Y 0 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
SPAH W 1 Offset(0, 48) //A_PlaySoundEx("weapon/sparkrecharger","Weapon")
SPAH Y 0 Offset(0, 48) A_GiveInventory("SparkmanAlt2_CI",1)
SPAH Y 0 Offset(0, 48) A_TakeInventory("SparkHealDetection",999)
SPAH W 0 A_Refire("AltfireHold")
AltEnd:
SPAH R 1 Offset(0, 72)A_TakeInventory("MightyGodAmmo",28)
SPAH R 1 Offset(0, 36)A_TakeInventory("MightyGodAmmo",28)
SPAH EEBA 1 A_WeaponReady(WRF_NOFIRE)
goto Ready1

MedSynthFire:
SPAA C 0 A_PlaySoundEx("weapon/sparkalt","Weapon")
SPAA C 0 A_GiveInventory("SparkmanAltMid_CI",1)
SPAA C 0 A_GiveInventory("SparkmanAltSpreadCheck",1)
SPAA C 0 ACS_NamedExecuteAlways("BULL_SetState",0,1)
SPAH J 1 Offset(0, 14) A_TakeInventory("MightyGodAmmo",28)
SPAH K 1 Offset(0, 12)
SPAH K 1 Offset(0, 8)
SPAH K 1 Offset(0, 12)
SPAH K 1 Offset(0, 8)
SPAH K 1 Offset(0, 12)
SPAH G 1 Offset(0, 8)
SPAH D 1 Offset(0, 12)
SPAH C 1 Offset(0, 8)
SPAH B 1 Offset(0, 14) A_TakeInventory("MightyGodAmmo",28)
SPAH A 14 A_WeaponReady(14)
Goto Ready1

SynthFire:
SPAA C 0 A_PlaySoundEx("weapon/sparkalt","Weapon")
SPAA C 0 A_GiveInventory("SparkmanAlt_CI",1)
SPAA C 0 A_GiveInventory("SparkmanAlt2SpreadCheck",1)
SPAA C 0 ACS_NamedExecuteAlways("BULL_SetState",0,1)
SPAH J 1 Offset(0, 14) A_TakeInventory("MightyGodAmmo",28)
SPAH K 1 Offset(0, 12)
SPAH K 1 Offset(0, 8)
SPAH K 1 Offset(0, 12)
SPAH K 1 Offset(0, 8)
SPAH K 1 Offset(0, 12)
SPAH G 1 Offset(0, 8)
SPAH D 1 Offset(0, 12)
SPAH C 1 Offset(0, 8)
SPAH B 1 Offset(0, 14) A_TakeInventory("MightyGodAmmo",28)
SPAH A 14 A_WeaponReady(14)
Goto Ready1

Reload:
SPAH E 0 A_JumpIfInventory("SparkDelayCounter",1,"Ready1")
SPAH ABEE 2 Offset(0, 24)
SPAH R 2 Offset(0, 36)
SPAH R 1 Offset(0, 72)A_JumpIfInventory("ImpairmentStack",1,2)
SPAH R 0 Offset(0, 48)A_Recoil(-33)
goto ReloadContinue
SPAH R 0 Offset(0, 48)A_Recoil(-33*ACS_NamedExecuteWithResult("ImpairmentACS")/100)
goto ReloadContinue
ReloadContinue:
SPAH R 0 Offset(0, 48)ACS_NamedExecuteAlways("BULL_SetState",0,3)
ReloadLoop:
SPAH W 0 A_PlaySoundEx("weapon/sparkalt","Weapon")
TNT1 A 0 A_GiveInventory("WeaponCharge",1)
SPAH W 1 Offset(0, 48)A_SpawnItemEx("SparkGrabHitbox",8,0,-8,momx,momy,momz,0,8)
SPAH W 0 A_JumpIfInventory("SuplexID",1,"SparkySuplex")
SPAH W 0 A_JumpIfInventory("WeaponCharge",12,"ReloadEnd")
loop

ReloadEnd:
TNT1 A 0 A_TakeInventory("WeaponCharge",12)
SPAH R 1 Offset(0, 16)
SPAH R 1 Offset(0, 8)
SPAH Q 1 Offset(0, -8)
SPAH P 1 Offset(0, -32)
TNT1 A 8 Offset(0,128)
TNT1 A 0 A_GiveInventory("SparkDelayCounter",105)
TNT1 A 0 A_SpawnItemEx("SparkDelayHelper2")
SPAH A 2 Offset(0,196)
SPAH A 2 Offset(0,164)
SPAH A 2 Offset(0,128)
goto Ready1

SparkySuplex:
TNT1 A 0 A_TakeInventory("WeaponCharge",12)
SPAH R 0 A_GiveInventory("IsPerformingSuplex",1)
SPAH R 0 A_GiveInventory("ThorIsGrabbingF",1)
SPAH R 0 A_TakeInventory("ThorIsLungingF",999)
SPAH R 0 A_PlaySoundEx("weapon/sparkshock","Weapon")
SPAH R 0 ACS_NamedExecuteAlways("BULL_SetState",0,4)
SPAH R 1 Offset(0, -8) ACS_NamedExecuteAlways("cbm_ZangiefStartGrab",0,CallACS("cbm_ZangiefCountInv",2)+999)

SPAH R 1 Offset(0, -24)A_JumpIf(CallACS("cbm_ZangiefGrab",350,angle*256/360,70)==0,"ReloadEnd")
SPAH Q 1 Offset(0, -40)A_JumpIf(CallACS("cbm_ZangiefGrab",345,angle*256/360,70)==0,"ReloadEnd")
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",340,angle*256/360,70)==0,"ReloadEnd")
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",335,angle*256/360,70)==0,"ReloadEnd")
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",330,angle*256/360,70)==0,"ReloadEnd")
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",310,angle*256/360,78)==0,"ReloadEnd")
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",310,angle*256/360,86)==0,"ReloadEnd")
SparkySuplexWait:
SPAH P 1 Offset(0, -56)A_JumpIf(CallACS("cbm_ZangiefGrab",310,angle*256/360,94)==0,"ReloadEnd")
SPAH P 0 A_GiveInventory("WeaponCharge",1)
SPAH P 0 A_JumpIfInventory("WeaponCharge",9,"SparkySuplexZap")
goto SparkySuplexWait

SparkySuplexZap:
SPAH P 0 A_PlaySound("weapon/brightspark","Body",0.5)
SparkySuplexZapCont:
SPAH P 0 A_FireCustomMissile("SparkSuplexAOE",0,1,0,50)

SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,-90,0,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,90,0,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,-45,-45,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,45,45,0,1)
SPAH P 1 Offset(0, -58)A_JumpIf(CallACS("cbm_ZangiefGrab",310,angle*256/360,94)==0,"ReloadEnd")

SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,0,-90,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,0,90,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,45,-45,0,1)
SPAH P 0 A_SpawnItemEx("SparkWaveFX",0,0,120,0,-45,45,0,1)
SPAH Z 1 Offset(0, -54)A_JumpIf(CallACS("cbm_ZangiefGrab",310,angle*256/360,94)==0,"ReloadEnd")

SPAH P 0 A_GiveInventory("WeaponCharge",1)
SPAH P 0 A_JumpIfInventory("WeaponCharge",14,"SparkySuplexEnd")
goto SparkySuplexZapCont

SparkySuplexEnd:
TNT1 A 0 A_StopSound("Body")
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
TNT1 A 0 A_TakeInventory("IsPerformingSuplex",999)
TNT1 A 0 A_TakeInventory("ThorIsGrabbingF",999)
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
TNT1 A 0 A_GiveInventory("SparkDelayCounter",105)
TNT1 A 0 A_SpawnItemEx("SparkDelayHelper")
SPAH A 1 Offset(0,128)A_GiveInventory("RaThorSuplexReset_P",1)
goto Ready1

Flash:
TNT1 A 1 A_JumpIfHealthLower(110,"Flash.Take")
TNT1 A 1 A_GiveInventory("SparkIsFullFlag",1)
loop
Flash.Take:
TNT1 A 1 A_TakeInventory("SparkIsFullFlag",999)
goto Flash
}
}

actor SparkReloadProtect : PowerProtection
{
Powerup.Duration 105
DamageFactor "SparkShot3", 1.0
DamageFactor "SparkShot2", 1.0
DamageFactor "SparkShot1", 1.0
DamageFactor "SparkShotAlt", 1.0
}

actor ShockProtect : PowerProtection
{
Powerup.Duration 5
DamageFactor "SparkShot3", 1.0
}

actor ShockChainsawProtect : PowerProtection
{
Powerup.Duration 12
DamageFactor "SparkSaw", 0.0
}

actor SparkM_MidChimeSnd_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_LocalSprk1Snd",0)
//TNT1 A 0 A_PlaySound("weapon/RingChime",4,0.35)//Local doesn't exist
stop
}
}

actor SparkM_ChimeSnd_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_LocalSprk2Snd",0)
//TNT1 A 0 A_PlaySound("weapon/RingChime",4,0.35)//Local doesn't exist
stop
}
}

actor SparkShockHelper
{
PROJECTILE
damage (0)
Radius 0
height 0
scale 2.5
+THRUACTORS
+NOINTERACTION
//+FORCEXYBILLBOARD
States
{
Spawn:
TNT1 AA 0
Check:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
"----" "#" 1 A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
Check2:
TNT1 A 1 A_JumpIfInTargetInventory("MightyGodAmmo",1,"Mini")
goto Check

Mini:
SPAX DDD 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
SPAX EE 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("MightyGodAmmo",28,"Max")
TNT1 A 0 A_JumpIfInTargetInventory("MightyGodAmmo",14,"Med")
SPAX E 1 A_JumpIfInTargetInventory("MightyGodAmmo",1,"Mini")
goto Check

Med:
SPAX FFF 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
SPAX GG 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("MightyGodAmmo",28,"Max")
TNT1 A 0 A_JumpIfInTargetInventory("MightyGodAmmo",14,"Med")
SPAX G 1
goto Check

Max:
SPAX HHH 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
SPAX II 1 Bright A_Warp(AAPTR_TARGET,0,0,80,180,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("MightyGodAmmo",28,"Max")
SPAX I 1
goto Check

Death:
TNT1 A 0
stop
}
}

actor SparkDelayHelper : BasicHelper
{
reactiontime 106
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("SparkDelayCounter",1)
TNT1 A 1 A_Countdown
loop
}
}

actor SparkDelayHelper2 : BasicHelper
{
reactiontime 106
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("SparkDelayCounter",1)
TNT1 A 1 A_Countdown
loop
}
}

actor SparkHealDetection : OnceC{}

actor SparkIsFullFlag : OnceC{}

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

actor MightyAmmoCounter : Ammo
{
inventory.amount 1
inventory.maxamount 2
+INVENTORY.IGNORESKILL
}

actor SparkDelayCounter : Inventory
{
inventory.amount 1
inventory.maxamount 105
}

actor SparkSuplexCooldown : Powerup
{
powerup.duration -5
}

actor SparkSuplexCooldown2 : Powerup
{
powerup.duration -1
}

actor SparkHealCheckingFX : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(64,"Spawn3")
TNT1 A 0 A_Jump(128,"Spawn2")
goto Spawn1
Spawn1:
X_0C AAABBB 1 A_FadeOut(0.25)
loop
Spawn2:
X_0C CCCDDD 1 A_FadeOut(0.25)
loop
Spawn3:
X_0C EEEFFF 1 A_FadeOut(0.25)
loop
}
}

actor SparkmanMainCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("MightyGodAmmo",28,"Pickup3")
TNT1 A 0 A_JumpIfInventory("MightyGodAmmo",14,"Pickup2")
TNT1 A 0 A_GiveInventory("SparkmanMain_CI")
stop
Pickup2:
TNT1 A 0 A_GiveInventory("SparkmanMain2_CI")
stop
Pickup3:
TNT1 A 0 A_GiveInventory("SparkmanMain3_CI")
stop
}
}

actor MightyGodAmmoGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("MightyAmmoCounter",2,"Pickup2")
TNT1 A 0 A_GiveInventory("MightyAmmoCounter",1)
stop
Pickup2:
TNT1 A 0 A_GiveInventory("MightyGodAmmo",1)
TNT1 A 0 A_TakeInventory("MightyAmmoCounter",2)
stop
}
}

actor SparkSuplexAOE
{
Obituary "$OB_SPARKSUPLEX"
-SOLID
+NOGRAVITY
PROJECTILE
+DONTBLAST
+NOINTERACTION
damage 0
radius 1
height 1
damagetype "SparkSuplex"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(5,80,0,0,81)
stop
}
}

actor SparkWaveFX
{
Scale 1.75
PROJECTILE
+CLIENTSIDEONLY
+NOINTERACTION
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SPAX F 1 A_FadeOut(.25)
SPAX F 0 A_SetScale(ScaleX-0.4375)
SPAX H 1 A_FadeOut(.25)
SPAX H 0 A_SetScale(ScaleX-0.4375)
SPAX G 1 A_FadeOut(.25)
SPAX G 0 A_SetScale(ScaleX-0.4375)
SPAX I 1 A_FadeOut(.25)
SPAX I 0 A_SetScale(ScaleX-0.4375)
stop
}
}

actor SmallSparkWaveFX : SparkWaveFX{Scale 0.75}

actor SparkGrabHitbox
{
//+NOINTERACTION
+MISSILE
+NOBLOCKMAP
+NOGRAVITY
+NOEXPLODEFLOOR
+DONTBLAST
+DONTREFLECT
+HITTRACER
+THRUGHOST
+THRUSPECIES
species "SmartSparkGrab"
height 64
radius 64
renderstyle none
states
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Crash:
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy")==1,"GiveSuplex")
stop
GiveSuplexT:
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 0 A_GiveToTarget("IsPerformingSuplex",1)
TNT1 A 4 A_GiveToTarget("SuplexID",(ACS_ExecuteWithResult(147,1)-1000)+1)
stop
GiveSuplex:
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 0 A_GiveToTarget("IsPerformingSuplex",1)
TNT1 A 0 A_GiveToTarget("SuplexID",(ACS_ExecuteWithResult(147,1)-1000)+1)
TNT1 A 1 A_GiveInventory("TempPitProtect_P",1,8)
Carry:
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"DeathD")
TNT1 A 1 //A_GiveToTarget("",1)
TNT1 A 1 A_JumpIfInTargetInventory("ThorIsGrabbingF",1,"Carry")
StopCarry:
TNT1 A 1 //A_TakeFromTarget("",9)
stop


DeathD:
TNT1 A 1 //A_LOG("OWNER IS DEAD!")
stop
DeathI:
TNT1 A 1 //A_LOG("FAILED, OWNER HAS ID")
stop
DeathJ:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE GRABBING!")
stop
Death:
TNT1 A 1
stop
}
}

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

actor Shock_5 : PowerSpeed
{
+ADDITIVETIME
powerup.duration 5
Speed 0.0
}

actor BigShock3 : FastProjectile
{
Translation "199:199=218:218", "202:202=212:212"
PROJECTILE
damagetype "SparkShot3"
Obituary "$OB_SPARKSHOCK"
damage (30)
Radius 18
Height 18
Speed 42
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SPAX H 3 A_SpawnItemEx("SparkShockFX1",0,0,0,0,0,0,0,1)
SPAX I 3 A_SpawnItemEx("SparkShockFX2",0,0,0,0,0,0,0,1)
loop
XDeath:
Death:
SPAX F 1 A_FadeOut(.15)
SPAX F 0 A_SetScale(ScaleX-0.3125)
SPAX F 1 A_FadeOut(.15)
SPAX F 0 A_SetScale(ScaleX-0.3125)
SPAX H 1 A_FadeOut(.15)
SPAX H 0 A_SetScale(ScaleX-0.3125)
SPAX H 1 A_FadeOut(.15)
SPAX H 0 A_SetScale(ScaleX-0.3125)
SPAX G 1 A_FadeOut(.15)
SPAX G 0 A_SetScale(ScaleX-0.3125)
SPAX G 1 A_FadeOut(.15)
SPAX G 0 A_SetScale(ScaleX-0.3125)
SPAX I 1 A_FadeOut(.15)
SPAX I 0 A_SetScale(ScaleX-0.3125)
SPAX I 1 A_FadeOut(.15)
SPAX I 0 A_SetScale(ScaleX-0.3125)
stop
}
}

actor BigShockAlt : FastProjectile
{
Translation "199:199=218:218", "202:202=212:212"
PROJECTILE
+HITTRACER
+DONTSPLASH
renderstyle add
alpha 0.1
+FORCEALLYCOLLISION
damagetype "SparkSaw"
Obituary "%o was energized by %k's Spark Solder."
damage (5)
Radius 18
Height 18
Speed 80
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
X_0C AB 1
goto Death
XDeath:
TNT1 A 0 A_GiveToTarget("SparkHealDetection",1)
TNT1 A 0 //A_PlaySoundEx("weapon/sparkrecharger","Body")
TNT1 A 0 A_SpawnItemEx("HealerTrailFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("HealerTrailFX2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_JumpIfInTargetInventory("SparkHealAmmo",1,"HealingCheck")
goto Death
HealingCheck:
TNT1 A 0 A_JumpIf(CallACS("BULL_CheckTeams") == 1, "Healing")
goto Death
Healing:
TNT1 A 0 A_JumpIf(CallACS("BULL_CheckFor",AAPTR_Tracer,1) == CallACS("BULL_CheckFor",AAPTR_Tracer,2), "Death")
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,-50,0,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,50,0,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,-25,-25,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,25,25,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,0,-50,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,0,50,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,25,-25,0,1)
SPAH P 0 A_SpawnItemEx("SmallSparkWaveFX",0,0,0,0,-25,25,0,1)
TNT1 A 0 A_TakeFromTarget("SparkHealAmmo",1)
TNT1 A 0 A_GiveInventory("SparkHealthHandler",1,AAPTR_Tracer)
TNT1 A 0 A_JumpIfInTargetInventory("Health",110,"Death")
TNT1 A 0 A_TakeFromTarget("SparkHealAmmo",1)
TNT1 A 0 A_GiveToTarget("Health",1)
Death:
TNT1 A 0 A_Stop
SPKH ABCD 2
stop
}
}

actor SparkHealthHandler : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_JumpIf(!(health>0),"No")
		TNT1 A 0 HealThing(2) //I'm bothered that I'm doing this.
		stop
		No:
		TNT1 A 0 
		stop
	}
}

actor SparkShockFX1 : BasicClientSide
{
+FORCEXYBILLBOARD
RenderStyle "Add"
ReactionTime 8
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
SpawnLOOP:
SPAX J 1 A_CountDown
SPAX J 0 A_FadeOut
SPAX J 0 A_SetScale(scaleX-0.25)
loop
}
}

actor SparkShockFX2 : SparkShockFX1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
SpawnLOOP:
SPAX K 1 A_CountDown
SPAX K 0 A_FadeOut
SPAX K 0 A_SetScale(scaleX-0.25)
loop
}
}

actor HealerTrailFX : BasicClientSide
{
+FORCEXYBILLBOARD
RenderStyle "Add"
scale 1
ReactionTime 8
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
SpawnLOOP:
SPMS A 1 A_CountDown
SPAX F 0 A_FadeOut
SPAX F 0 A_SetScale(scaleX-0.2)
loop
}
}

actor HealerTrailFX2 : HealerTrailFX
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
SpawnLOOP:
SPMS B 1 A_CountDown
SPAX H 0 A_FadeOut
SPAX H 0 A_SetScale(scaleX-0.2)
loop
}
}

actor BigShock2 : FastProjectile
{
Translation "199:199=218:218", "202:202=212:212"
PROJECTILE
damagetype "SparkShot2"
Obituary "$OB_SPARKSHOCK"
damage (20)
Radius 9
Height 9
Speed 42
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SPAX F 3 A_SpawnItemEx("SparkShockFX1",0,0,0,0,0,0,0,1)
SPAX G 3 A_SpawnItemEx("SparkShockFX2",0,0,0,0,0,0,0,1)
loop
XDeath:
Death:
SPAX J 1 A_FadeOut(.25)
SPAX J 0 A_SetScale(ScaleX-0.2)
SPAX J 1 A_FadeOut(.25)
SPAX J 0 A_SetScale(ScaleX-0.2)
SPAX K 1 A_FadeOut(.25)
SPAX K 0 A_SetScale(ScaleX-0.2)
SPAX K 1 A_FadeOut(.25)
SPAX K 0 A_SetScale(ScaleX-0.2)
stop
}
}

actor BigShock
{
Translation "199:199=218:218", "202:202=212:212"
PROJECTILE
damagetype "SparkShot1"
Obituary "$OB_SPARKSHOCK"
damage (10)
Radius 6
Height 6
speed 42
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SPAX DE 3	
loop
}
}

actor BigShock3B : BigShock3{Translation "199:199=74:74","202:202=205:205"}
actor BigShock3R : BigShock3{Translation "199:199=41:41","202:202=54:54"}
actor BigShock3O : BigShock3{Translation "199:199=128:128","202:202=104:104"}
actor BigShock3P : BigShock3{Translation "199:199=232:232","202:202=229:229"}

actor BigShock2B : BigShock2{Translation "199:199=74:74","202:202=205:205"}
actor BigShock2R : BigShock2{Translation "199:199=41:41","202:202=54:54"}
actor BigShock2O : BigShock2{Translation "199:199=128:128","202:202=104:104"}
actor BigShock2P : BigShock2{Translation "199:199=232:232","202:202=229:229"}

actor BigShockB : BigShock{Translation "199:199=74:74","202:202=205:205"}
actor BigShockR : BigShock{Translation "199:199=41:41","202:202=54:54"}
actor BigShockO : BigShock{Translation "199:199=128:128","202:202=104:104"}
actor BigShockP : BigShock{Translation "199:199=232:232","202:202=229:229"}

actor BigShockAltB : BigShockAlt{Translation "199:199=74:74","202:202=205:205"}
actor BigShockAltR : BigShockAlt{Translation "199:199=41:41","202:202=54:54"}
actor BigShockAltO : BigShockAlt{Translation "199:199=128:128","202:202=104:104"}
actor BigShockAltP : BigShockAlt{Translation "199:199=232:232","202:202=229:229"}

actor SparkmanAltSpreadCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*2,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*3,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*4,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*5,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*6,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*7,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*8,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*9,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*10,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*11,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*12,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*13,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*14,1)
TNT1 A 0 A_JumpIfInventory("PowerSpread_ST",1,"PickupS")
stop
PickupS:
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*2+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*3+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*4+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*5+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*6+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*7+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*8+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*9+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*10+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*11+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*12+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*13+15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*14+15,1)

TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*2-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*3-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*4-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*5-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*6-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*7-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*8-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*9-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*10-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*11-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*12-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*13-15,1)
TNT1 A 0 A_SpawnItemEx("SmallShock",16,0,32,60,0,0,22.5*14-15,1)
stop
}
}

actor SparkmanAlt2SpreadCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
//TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,60,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-45,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-90,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-135,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,180,1)
TNT1 A 0 A_JumpIfInventory("PowerSpread_ST",1,"PickupS")
stop
PickupS:
//TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,20,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,58,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-32,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,103,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-77,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,148,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-122,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,193,1)

TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,32,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-58,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,77,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-103,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,122,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,-148,1)
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLob",0,0,32,30,0,0,167,1)
stop
}
}

actor SparkM_ShockLob
{
Translation "198:198=225:225"
PROJECTILE
damagetype "SparkM_Lob"
Obituary "$OB_SPARKSHOCK"
-NOGRAVITY
//+RIPPER
+SKYEXPLODE
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+CANBOUNCEWATER
+FORCEXYBILLBOARD
+BRIGHT
Damage (2)
Radius 14
Height 14
speed 30
scale 2.5
wallbouncefactor 0.05
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 ThrustThingZ(0,40,0,1)
SpawnLOOP:
SPMS HHHHIIII 1 A_SpawnItemEX("SparkM_ShockLobFX",0,0,0,0,0,0,0,1)
loop
Crash:
Death:
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLobGround",0,0,0,0,0,0,0,1)
stop
XDeath:
TNT1 A 0
stop
}
}

actor SparkM_LobProtect : PowerProtection
{
Powerup.Duration 10
damagefactor "SparkM_Lob", 0.0
}

actor SparkM_ShockLobB : SparkM_ShockLob{translation "198:198=74:74"}
actor SparkM_ShockLobR : SparkM_ShockLob{translation "198:198=41:41"}
actor SparkM_ShockLobO : SparkM_ShockLob{translation "198:198=128:128"}
actor SparkM_ShockLobP : SparkM_ShockLob{translation "198:198=232:232"}

actor SparkM_ShockLobFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
Mass 5
Scale 2.25
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2,3,4)
SPMS NNOO 1 A_FadeOut(Mass/100.0)
goto Spawn+2
}
}
actor SparkM_ShockLobFX2 : SparkM_ShockLobFX
{
Mass 8
}
actor SparkM_ShockLobFX3 : SparkM_ShockLobFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2,3,4)
SPMS IIJJ 1 A_FadeOut(Mass/100.0)
goto Spawn+2
}
}

actor SparkM_ShockLobGround : SparkM_ShockLob
{
+NOGRAVITY
+DONTBLAST
+THRUACTORS
+FLOORHUGGER
//+EXPLODEONDEATH
Reactiontime 7
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SparkM_ShockLobGroundFX_H",0,0,0,0,0,0,0,1)
TNT1 A 0 A_PlaySoundEx("misc/wilystart","Voice",1)
TNT1 A 0 A_Explode(0,48,0,0,48)
TNT1 A 1 A_Explode(2,48,0,0,48)
TNT1 A 0 A_Explode(0,48,0,0,48)
TNT1 A 1 A_Explode(2,48,0,0,48)
TNT1 A 0 A_Explode(0,48,0,0,48)
TNT1 A 1 A_Explode(2,48,0,0,48)
TNT1 A 0 A_Explode(0,48,0,0,48)
TNT1 A 1 A_Explode(2,48,0,0,48)
TNT1 A 0 A_Explode(0,48,0,0,48)
TNT1 A 1 A_Explode(2,48,0,0,48)
TNT1 A 0 A_CountDown
goto Spawn+3
Death:
TNT1 A 1 //A_StopSound("Voice")
stop
}
}

actor SparkM_ShockLobGroundFX_H : BasicClientSide
{
RenderStyle None
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX2",random(1,16)*3,0,0,0,0,frandom(1,4),random(0,89)*3,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX2",random(1,16)*3,0,0,0,0,frandom(1,4),random(90,179),1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX2",random(1,16)*3,0,0,0,0,frandom(1,4),random(180,269),1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX2",random(1,16)*3,0,0,0,0,frandom(1,4),random(270,359),1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*0,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*1,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*2,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*3,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*4,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*5,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*6,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*7,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*8,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*9,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*10,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*11,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*12,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*13,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*14,1)
TNT1 A 0 A_SpawnItemEX("SparkM_ShockLobFX3",48,0,0,0,0,random(1,2),22.5*15,1)
TNT1 A 5 A_CountDown
loop
}
}

actor SmallShock
{
Translation "199:199=218:218", "202:202=212:212"
PROJECTILE
+FORCEXYBILLBOARD
damagetype "SparkM_Shock2"
Obituary "$OB_SPARKSHOCKALT"
damage (10)
Radius 12
Height 12
speed 60
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SPAX DEDEDE 2
loop
}
}

actor SmallShockB : SmallShock{Translation "199:199=74:74","202:202=205:205"}
actor SmallShockR : SmallShock{Translation "199:199=41:41","202:202=54:54"}
actor SmallShockO : SmallShock{Translation "199:199=128:128","202:202=104:104"}
actor SmallShockP : SmallShock{Translation "199:199=232:232","202:202=229:229"}

actor ShockFX_G : ShockFX
{
+BRIGHT
States
{
Spawn:
SPAS FF 0
SpawnLoop:
SPAS FFGG 1 
SPAS F 0 A_JumpIfInTargetInventory("Shock_5",1,"SpawnLoop")
Death:
TNT1 A 0
stop
}
}

actor SparkShockFXGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0
//TNT1 A 0 A_JumpIfInventory("PowerTundra",1,3)
TNT1 A 0 A_SpawnItemEx("ShockFXWatcher")
TNT1 A 0
stop
}
}

actor ShockFXWatcher : BasicHelper
{
States
{
Spawn:
TNT1 A 0 
TNT1 A 0 A_GiveToTarget("ShockFXG_P",1)
stop
}
}

actor ShockFXG_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("ShockFX_G", 4, 0, 28, 0, 0, 0, 0,1)
stop
}
}

actor SparkmanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BigShock",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BigShockB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BigShockR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BigShockO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BigShockP",0,0,0,0)
goto Done
}
}

actor SparkmanMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BigShock2",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BigShock2B",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BigShock2R",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BigShock2O",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BigShock2P",0,0,0,0)
goto Done
}
}

actor SparkmanMain3_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BigShock3",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BigShock3B",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BigShock3R",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BigShock3O",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BigShock3P",0,0,0,0)
goto Done
}
}

actor SparkmanAltMid_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("SmallShock",22.5*1,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShock",22.5*15,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShock",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("SmallShockB",22.5*1,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockB",22.5*15,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("SmallShockR",22.5*1,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockR",22.5*15,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("SmallShockO",22.5*1,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockO",22.5*15,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("SmallShockP",22.5*1,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockP",22.5*15,0,0,0)
TNT1 A 0 A_FireCustomMissile("SmallShockP",0,0,0,0)
goto Done
}
}

actor SparkmanAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("SparkM_ShockLob",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("SparkM_ShockLobB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("SparkM_ShockLobR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("SparkM_ShockLobO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("SparkM_ShockLobP",0,1,8,0)
goto Done
}
}

actor SparkmanAlt2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BigShockAlt",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BigShockAltB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BigShockAltR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BigShockAltO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BigShockAltP",0,0,0,0)
goto Done
}
}

//You found the secret message!

//I know I shouldn't be wasting precious filespace on my tangents but every now and then I'll look back at things
//and remember how Spark's rework back in CCBM was my first contribution to the community
//er, first *positive* contribution. lol it was nice while it lasted