actor Sparkman : VCBaseClass
{
	Player.ScoreIcon "SPARMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "NormalArmor"
	player.soundclass "sparkmanc"
	Player.ViewHeight 57
	player.displayname "Sparkman"
	player.startitem "SparkShockBoss"
	player.startitem "SparkCharge"
	player.startitem "UltimateAttackItem1", 1
	player.startitem "UltSoundWatcherSpawn1"
	player.startitem "IsFromMM3"
	States
	{
		Spawn:
		SPAR A 0
		SPAR B 1 A_JumpIFInventory("SparkA1",1,"Animation1")
		SPAR A 1 A_JumpIf(z-floorz>0, "Jumping")
		SPAR A 0 A_JumpIFInventory("SparkA1",1,"Animation1")
		Goto Spawn+2
		
		See:
		SPAR B 0 A_JumpIFInventory("SparkA1",1,"Animation1")
		SPAR BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		SPAR J 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait
		
		Missile:
		SPAR B 0 A_JumpIFInventory("SparkA1",1,"Animation1")
		SPAR FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		
		Missile2:
		SPAR GGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn+1
		
		JumpingMissile:
		SPAR J 0 A_JumpIFInventory("SparkA1",1,"Animation1")
		SPAR JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
		
		JumpingMissile2:
		SPAR KKKK 1 A_JumpIf(z-floorz<=0, "Missile2")
		Goto Jumping
		
		Animation1:
		SPAR L 5
		SPAR B 0 A_JumpIFInventory("SparkA1",1,"Animation1")
		goto Spawn+2
		
		Animation2:
		SPAR MM 1 A_JumpIf(z-floorz>0, "JumpingA2")
		Animation2b:
		SPAR N 1 A_JumpIf(z-floorz>0, "JumpingA2b")
		Animation2c:
		SPAR OOOOOOOOO 1 A_JumpIf(z-floorz>0, "JumpingA2c")
		goto Spawn+2
		
		JumpingA2:
		SPAR PP 1 A_JumpIf(z-floorz<=0, "Animation2")
		JumpingA2b:
		SPAR Q 1 A_JumpIf(z-floorz<=0, "Animation2b")
		JumpingA2c:
		SPAR RRRRRRRRR 1 A_JumpIf(z-floorz<=0, "Animation2c")
		goto Jumping
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		SPAR AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		SPAR HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		SPAR H 20 ACS_ExecuteAlways(999,0,0)
		SPAR H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		SPAR A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("SparkShockWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("SparkShockWepM")
		goto ClassDeath
	}
}

actor SparkShockBoss : VCBaseWeapon
{
	Obituary "$OB_SPARKMAN1"
	weapon.ammotype "Base56Ammo"
	weapon.ammouse 1
	+WEAPON.NOAUTOAIM
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SPAA B 1 A_WeaponReady SPAA A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		Goto Ready
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		SPAA A 1 A_Lower
		Loop
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,766)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		SPAA B 1 A_Raise
		Loop
		User1:
		SPAA L 1 Offset(-2,0) ACS_NamedExecuteWithResult("VC_SetState",2)
		SPAA L 1 Offset(2,0)
		SPAA L 0 A_JumpIfInventory("Base56Ammo",56,"User1.Two")
		TNT1 A 0 A_PlaySoundEx("weapon/sparkslash","Weapon")
		TNT1 A 0 A_PlaySoundEx("weapon/chargekick","Body")
		TNT1 A 0 A_FireCustomMissile("SparkSlash",0,0,0,0)
		SPAA M 1 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 20
		SPAA CB 2
		goto Ready
		User1.Two:
		SPAA B 0 A_PlaySoundEx("weapon/sparkshock","Weapon")
		SPAA B 0 A_PlaySoundEx("weapon/dynamoalt","Body")
		TNT1 A 0 A_FireCustomMissile("SparkBlast",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("SparkBlast",-12,0,0,0)
		TNT1 A 0 A_FireCustomMissile("SparkBlast",12,0,0,0)
		SPAA M 1 A_GunFlash
		TNT1 A 10
		SPAA CB 2
		goto Ready
		Fire:
		SPAA A 0 A_JumpIfNoAmmo("Fire1")
		SPAA C 0 A_JumpIfInventory("Base56Ammo",56,"Fire4")
		SPAA C 0 A_JumpIfInventory("Base56Ammo",28,"Fire3")
		SPAA C 0 A_JumpIfInventory("Base56Ammo",7,"Fire2")
		Fire1:
		SPAA B 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		SPAA B 0 A_GunFlash
		SPAA B 0 A_PlaySoundEx("classes/sparkfx","Weapon")
		SPAS B 0 A_FireCustomMissile("SparkmanShock",0,1,0,0)
		SPAA AG 2
		SPAA HGA 2 A_ClearRefire
		SPAA B 22
		goto Ready
		Fire2:
		SPAA B 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		SPAA B 0 A_GunFlash
		SPAA B 0 A_PlaySoundEx("weapon/sparkshock","Weapon")
		//SPAA D 0 A_TakeInventory("Base56Ammo",7)
		SPAS B 0 A_FireCustomMissile("SparkmanSmallShock",0,0,0,0)
		SPAA AGHG 1
		SPAA A 1 A_ClearRefire
		SPAA B 6
		goto Ready
		Fire3:
		SPAA B 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		SPAA B 0 A_GunFlash
		SPAA D 2
		//SPAA D 0 A_TakeInventory("Base56Ammo",28)
		SPAA D 0 A_PlaySoundEx("classes/sparklightning","Weapon")
		SPAA D 0 A_FireCustomMissile("SparkmanBigShock",0,0,0,0)
		SPAA CB 2
		SPAA B 4 A_ClearRefire
		SPAA B 12
		Goto Ready
		Fire4:
		SPAA B 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		SPAA B 0 A_GunFlash
		SPAA D 2
		//SPAA D 0 A_TakeInventory("Base56Ammo",56)
		SPAA D 0 A_PlaySoundEx("weapon/sparkshock","Weapon")
		SPAA B 0 A_PlaySoundEx("weapon/thunderbolt","Body")
		SPAA D 0 A_FireCustomMissile("SparkmanGiantShock",0,0,0,0)
		SPAA CB 2
		SPAA B 4 A_ClearRefire
		SPAA B 20
		Goto Ready
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		SPAA B 0 A_JumpIfInventory("BaseCustomFlag1",1,"NoAmmo")
		SPAA ACDE 1
		AltHold:
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		SPAR G 0 A_GiveInventory("SparkWaterHandler",1)
		SPAR GG 0 A_SpawnItemEx("SparkManBabySpark", 32, 0, 88, random(-10, 10), random(-10, 10), random(3,8), 0)
		SPAA B 0 A_SpawnItemEx("BigSparkManFX",0,0,88,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		SPAA B 0 A_PlaySoundEx("classes/thundercarnival","Weapon")
		SPAA FE 1 A_GiveInventory("Base56Ammo",1)
		SPAA C 0 A_Refire
		SPAA D 0 A_PlaySoundEx("classes/sparkfx","Weapon")
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,0)
		SPAS C 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,45)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,90)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,135)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,180)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,225)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,270)
		SPAS B 0 A_SpawnItemEx("SparkmanChargeShock",0,0,32,20,0,0,315)
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		SPAA BA 2
		SPAA B 7 A_ClearRefire
		Goto Ready
		Flash: //Handles ammo drain
		TNT1 A 0 A_GiveInventory("BaseCustomFlag1")
		FlashLoop:
		TNT1 A 4 A_TakeInventory("Base56Ammo",1)
		TNT1 A 0 A_JumpIfInventory("Base56Ammo",1,"Flash")
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
		stop
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,24)
		SPAA K 0 A_GiveInventory("SparkA1",1)
		SPAA K 0 //ACS_Execute(2107,0,1)
		CUTA A 0 A_TakeInventory("ShortUltimateAmmo",100)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 A_GiveInventory("UltBuildCooldownGiver",1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA K 0 //ACS_Execute(2107,0,1)
		SPAA K 0 A_SpawnItemEx("SparkBoltFX",0,0,88,0,0,20)
		SPAA K 0 A_FireCustomMissile("SparkBoltStart",0,1,0,0)
		SPAA K 12 A_PlaySoundEx("classes/sparklightning","Auto")
		SPAA AB 2
		TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown",1)
		TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
		goto Ready
		NoAmmo:
		SPAA B 1
		goto Ready
	}
}

actor SparkA1 : VCOnceP {powerup.duration 150}

actor SparkmanShock : SparkShock
{
damagetype "SparkmanShock"
damage(12)
speed 35
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
goto Super::Spawn
Crash:
Death:
TNT1 A 0
stop
}
}

actor SparkmanSmallShock : SparkmanShock
{
	Obituary "$OB_SPARKMAN2"
	PROJECTILE
	Speed 40
	damagetype "Sparkman1"
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		THUN TU 1
		Goto Spawn+2
	}
}

actor SparkmanBigShock : SparkmanShock
{
	Obituary "$OB_SPARKMAN3"
	PROJECTILE
	Speed 50
	+RIPPER
	scale 2.5
	damagetype "Sparkman2"
	damage (2)
	States
	{
		Spawn:
		CXEL AA 0 A_GiveInventory("ProjectileCode",1)
		CXEL A 0 bright A_SpawnItemEx("SparkBoltTrail",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
		CXEL A 1 bright A_SpawnItemEx("SparkBoltTrail",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
		CXEL B 0 bright A_SpawnItemEx("SparkBoltTrail",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
		CXEL B 1 bright A_SpawnItemEx("SparkBoltTrail",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
		Goto Spawn+2
	}
}

actor SparkmanChargeShock : SparkmanShock
{
	Obituary "$OB_SPARKMAN4"
	PROJECTILE
	Speed 20
	damagetype "SparkmanAlt"
	damage (7)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		SPMS CD 3
		Goto Spawn+2
	}
}

actor SparkmanGiantShock
{
	PROJECTILE
	+RIPPER
	Obituary "$OB_SPARKMAN5"
	Radius 8
	Height 8
	scale 2.5
	+PIERCEARMOR
	damage (0)
	speed 40
	damagetype "Sparkman3"
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		SPMS A 1 A_Explode(33,56,0,0,56)
		TNT1 AA 0 A_SpawnItemEx("SparkGiantFX",random(-momx*2/3,momx*2/3),random(-momx*2/3,momx*2/3),random(-momx*2/3,momx*2/3),random(-2,2),random(-2,2),random(-2,2),0,SXF_ABSOLUTEPOSITION)
		TNT1 AA 0 A_SpawnItemEx("SparkGiantFX",random(-momx/3,momx/3),random(-momx/3,momx/3),random(-momx/3,momx/3),0,0,0,0,SXF_ABSOLUTEPOSITION)
		SPMS B 1 A_Explode(33,56,0,0,56)
		TNT1 AA 0 A_SpawnItemEx("SparkGiantFX",random(-momx*2/4,momx*2/4),random(-momx*2/4,momx*2/4),random(-momx*2/4,momx*2/4),0,0,0,0,SXF_ABSOLUTEPOSITION)
		TNT1 AA 0 A_SpawnItemEx("SparkGiantFX",random(-momx/3,momx/3),random(-momx/3,momx/3),random(-momx/3,momx/3),random(-2,2),random(-2,2),random(-2,2),random(-2,2),SXF_ABSOLUTEPOSITION)
		Goto Spawn+2
		Death:
		TNT1 A 0 A_Stop
		SPAS FFFFFFFFFFFFFFFFFFFFFFFF 0 A_SpawnItemEx("SparkManBabySpark", 0, 0, 0, random(-10, 10), random(-10, 10), random(3,8), 0)
		SPAS FG 2
		stop
	}
}

actor BigSparkManFX : BasicClientSide
{
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		SPMS AB 1
		stop
	}
}

actor Sparkman2Protect : PowerProtection
{
	powerup.duration 15
	DamageFactor "Sparkman2", 0.0
}

actor Sparkman3Protect : PowerProtection
{
	powerup.duration 35
	DamageFactor "Sparkman3", 0.0
}

actor SparkBoltStart : FastProjectile
{
	Obituary "$OB_SPARKMAN6"
	PROJECTILE
	+SPECTRAL
	Radius 1
	Height 1
	scale 2.5
	-DONTBLAST
	+RIPPER
	+SKYEXPLODE
	+DONTREFLECT
	speed 500
	damage (0)
	States
	{
		Spawn:
		TNT1 A 1
		loop
		Death:
		TNT1 A 0 A_CheckFloor("Floor")
		TNT1 A 0 A_CheckCeiling("Ceiling")
		TNT1 A 1 A_PlaySoundEx("classes/sparklightningstrike","Weapon")
		TNT1 A 0 A_SpawnItemEx("SparkBoltMark",-40,0,0,0,0,250,0)
		stop
		Floor:
		TNT1 A 1 A_PlaySoundEx("classes/sparklightningstrike","Weapon")
		TNT1 A 0 A_SpawnItemEx("SparkBoltMark",0,0,0,0,0,250)
		stop
		Ceiling:
		TNT1 A 1 A_PlaySoundEx("classes/sparklightningstrike","Weapon")
		TNT1 A 0 A_SpawnItemEx("SparkBoltMark",0,0,0,0,0,250)
		stop
	}
}

actor SparkBoltMark
{
	Obituary "$OB_SPARKMAN6"
	PROJECTILE
	+RIPPER
	-DONTBLAST
	+SKYEXPLODE
	+DONTREFLECT
	radius 2
	height 8
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 AAA 1
		goto Death
		Death:
		TNT1 A 0 A_SpawnItemEx("SparkManBolt",0,0,0,0,0,-40)
		stop
	}
}

actor SparkManBolt
{
	Obituary "$OB_SPARKMAN6"
	damage (33)
	scale 2.5
	+NOCLIP
	PROJECTILE
	+DONTREFLECT
	+NOTARGETSWITCH
	damagetype "SparkmanUlt"
	radius 20
	height 1
	speed 0
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		CXEL CD 2
		BIMD A 0 A_ChangeFlag("NOCLIP",0)
		loopit:
		CXEL C 1 A_CheckFloor("Death")
		loop
		Death:
		TNT1 A 0 A_Explode(33,100,0,0,150)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SparkBoltStrikeFX",0,0,0,random(-15,15),random(-15,15),random(-15,15))
		CXEL EF 2
		stop
		XDeath:
		TNT1 A 0 
		stop
	}
}

actor SparkBoltStrikeFX
{
	scale 2.5
	PROJECTILE
	-NOGRAVITY
	damage(0)
	radius 5
	height 5
	States
	{
		Spawn:
		CXEL AA 0 A_GiveInventory("ProjectileFXCode",1)
		CXEL ABABABABABABABABABAB 1 bright A_SetScale(scalex - 0.125, scaley - 0.125)
		stop
	}
}

actor SparkBoltFX : BaseDecorativeActor
{
	States
	{
		Spawn:
		CXEL AA 0 A_GiveInventory("ProjectileFXCode",1)
		CXEL C 11
		stop
	}
}

actor SparkBoltTrail
{
	Obituary "$OB_SPARKMAN3"
	damagetype "Sparkman"
	PROJECTILE
	+NOGRAVITY
	+FORCEXYBILLBOARD
	-SOLID
	+RIPPER
	scale 5.0
	damage (1)
	speed 5
	height 8
	radius 8
	States
	{
	Spawn:
	TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
	CXEL AABBAABB 1 A_SetScale(scalex - 0.6250, scaley - 0.6250)
	stop
	}
}

actor SparkGiantFX : PinpointThunderFX
{
translation "228:228=4:4", "61:61=4:4"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
goto Super::Spawn
}
}

actor SparkWaterFX : BasicClientSide
{
scale 2.0
renderstyle translucent
alpha 0.8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SPAS FGF 1
stop
}
}

actor SparkWaterHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsUnderWater",1,"Pickup2")
stop

Pickup2:
TNT1 A 0 A_PlaySound("weapon/smaplar","Auto",1.5)
TNT1 A 0 A_SpawnItemEx("SparkWaterHitbox")
TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("SparkWaterFX",random(0,200),0,random(0,256),0,0,0,random(0,359))
TNT1 AAAA 0 A_SpawnItemEx("MM11DeathBolt",random(0,200),0,random(0,256),0,0,0,random(0,359),0,128)
stop
}
}

actor SparkWaterHitbox : BasicExplosion
{
	Obituary "$OB_SPARKMAN4"
	damagetype "SparkmanWater"
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 1 A_Explode(2,200,0,0,200)
		stop
	}
}

actor SparkSlash : BasicExplosion
{
	speed 50
	Obituary "$OB_SPARKMAN7"
	damagetype "SparkSlash"
	reactiontime 2
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 AAA 0 A_SpawnItemEx("SparkManBabySpark", 0, 0, 0, random(-10, 10), random(-10, 10), random(-2,8), 0)
		TNT1 AAAAA 0 A_SpawnItemEx("SparkGiantFX",0,0,0,random(-3,3), random(-3,3), random(-3,3))
		TNT1 A 0 A_PlaySound("weapon/ClownBall",2,0.7)
		TNT1 A 0 A_Explode(35,24,0,0,24)
		TNT1 A 1 A_Countdown
		loop
		Death:
		TNT1 A 0 A_StopSound(2)
		stop
	}
}

actor SparkFieldHitbox : BasicExplosion
{
	Obituary "$OB_SPARKMAN7"
	damagetype "SparkmanField"
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 1 A_Explode(3,164,0,0,164)
		stop
	}
}

actor SparkBlast
{
PROJECTILE
+HITTRACER
damagetype "SparkBlast"
Obituary "$OB_SPARKMAN7"
Speed 30
Damage (11)
radius 16
height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
S3BL A 1
Goto Spawn+2
XDeath:
TNT1 A 0 A_CheckFlag("INVULNERABLE","Death",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "Death2", AAPTR_TRACER)
stop
Death2:
TNT1 A 0 A_SpawnItemEx("SparkField")
Death:
TNT1 A 0
stop
}
}

actor SparkField : BasicExplosion
{
var int user_SparkleDist;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_SparkleDist",12)
Loopit:
TNT1 A 0 A_PlaySound("weapon/smaplar","Auto",1.5)
TNT1 AAAAA 0 A_SpawnItemEx("SparkWaterFX",random(0,164),0,random(0,164),0,0,0,random(0,359))//AAAAAAAAAAAA 0 A_SpawnItemEx("SparkWaterFX",random(0,164),0,random(0,164),0,0,0,random(0,359))
TNT1 AAAA 0 A_SpawnItemEx("MM11DeathBolt",random(0,164),0,random(0,164),0,0,0,random(0,359),0,128)
TNT1 AAAA 0 A_SpawnItemEx("SparkBlastSparkle",random(0-user_SparkleDist,0+user_SparkleDist),0,random(0-user_SparkleDist,0+user_SparkleDist),0,0,0,random(0,359),1)
TNT1 A 0 A_CustomRailGun(0,0,"00e8d8","00e8d8",RGF_SILENT|RGF_EXPLICITANGLE,0,10.0,"SparkRailPuff2",random(0,360),random(0,360),user_SparkleDist/2,1,10.0,10.0,"SparkRailFX2",0)
TNT1 A 1 A_SpawnItemEx("SparkFieldHitbox")
TNT1 A 0 A_JumpIf(user_SparkleDist >= 164,1)
TNT1 A 0 A_SetUserVar("user_SparkleDist",user_SparkleDist+12)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",35,"Death")
loop
}
}

actor SparkSlashProtect : PowerProtection
{
	powerup.duration 15
	DamageFactor "SparkSlash", 0.0
}

actor SparkBlastProtect : PowerProtection
{
	powerup.duration 36
	DamageFactor "SparkBlast", 0.0
	DamageFactor "SparkmanField", 0.0
}

actor SparkBlastSparkle : BigBangStrikeSparkle
{
scale 2.5
//renderstyle add
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
ELEN GHGH 2
stop
}
}

actor SparkRailFX2 : BasicClientSide
{
+FORCEXYBILLBOARD
//RenderStyle "translucent"
//Alpha 1.0
//ReactionTime 20//3.5
Scale 1//2.5
Translation "192:192=211:211"
	States
	{
	Spawn:
	TNT1 AA 0 A_Jump(256,"Spark")
	ELEN IIII 1
	stop
	Spark:
	TMFX B 0 A_Jump(120,"Spark2")
	ELEN IIJKILIIIJIKIL 1// A_SetScale(2.5,2.5)//A_SetAngle(angle + random(-180,180))
	stop
	Spark2:
	ELEN IJK 1 //A_SetScale(2.5,2.5)
	stop
	}
}

actor SparkRailPuff2
{
	states
	{
	Spawn:
	TNT1 A 1
	stop
	}
}
