//Standard Bullets
ACTOR PulverizerTracer : FastProjectile
{
	Radius 1
	Height 1
	MissileHeight 8
	Speed 200
	Damage (8*random(1,3))
	Scale 0.25
	Renderstyle Add
	Projectile
	+NOGRAVITY
	+DONTBLAST
	+THRUGHOST
	Decal "BulletChip"
	states
	{
	Spawn:
		TRAC A 1 Bright
		Loop
	Death:
	Crash:
		TNT1 A 1 A_SpawnItemEx("HBulletPuff",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		Stop
	XDeath:
		TNT1 A 0 A_SpawnItemEx("Blood")			
		Stop
	}
}

//Stratocaster
ACTOR LeadBallAmmoCounter : GenericCounter { Inventory.MaxAmount 99 }

Actor LeadBall
{
	Radius 20
	Height 28
	Speed 30
	Damage 6
  	MaxStepHeight 32
	Gravity 0.5
	BounceCount 10
	+MISSILE
	ProjectileKickback 150
	+STEPMISSILE +FORCERADIUSDMG
	+NOEXPLODEFLOOR +NOINTERACTION
	+BOUNCEONWALLS +BOUNCEONCEILINGS
	+NOCLIP +FORCEXYBILLBOARD
	BounceFactor 1.0
	WallBounceFactor 0.9
	BounceSound "LeadBall/Bounce"

	Renderstyle Translucent
	Alpha 0.5
	
	var int User_Frame;
	var int User_Lifespan;
	var int User_Size;
	var int User_Amount;
	Scale 0.25
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("LeadBall/Roll",4,0.8 + (0.01 * User_Size), 1)
		TNT1 A 0 A_SetUserVar("User_Frame", 1)
		TNT1 A 0 A_SetUserVar("User_Lifespan", 1)
		TNT1 A 0 A_SetUserVar("User_Size", 1)
		TNT1 A 0 A_JumpIfInTargetInventory("HexenCounter",1,3)
		TNT1 A 0 A_TakeFromTarget("PulverizerAmmo",5,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_TakeFromTarget("BlueMana",3,TIF_NOTAKEINFINITE)
		LDBF ABCDEFGHIJKLMNO 1 Bright A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),12.0,15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
	SetFrame:
		TNT1 A 0 A_JumpIf(User_Frame == 7, "FrameG")
		TNT1 A 0 A_JumpIf(User_Frame == 6, "FrameF")
		TNT1 A 0 A_JumpIf(User_Frame == 5, "FrameE")
		TNT1 A 0 A_JumpIf(User_Frame == 4, "FrameD")
		TNT1 A 0 A_JumpIf(User_Frame == 3, "FrameC")
		TNT1 A 0 A_JumpIf(User_Frame == 2, "FrameB")
		TNT1 A 0 A_JumpIf(User_Frame == 1, "FrameA")
	FrameA:
		LDBL A 0
		Goto Crapcheck
	FrameB:
		LDBL B 0
		Goto Crapcheck
	FrameC:
		LDBL C 0
		Goto Crapcheck
	FrameD:
		LDBL D 0
		Goto Crapcheck
	FrameE:
		LDBL E 0
		Goto Crapcheck
	FrameF:
		LDBL F 0
		Goto Crapcheck
	FrameG:
		LDBL G 0 A_SetUserVar("User_Frame",0)
		Goto Crapcheck
	Crapcheck:
		"####" "#" 0 A_JumpIfInventory("LeadBallReleased",1,"Continue")
		"####" "#" 0 A_JumpIfInTargetInventory("LeadBallHeld",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_JumpIf(User_Frame == 6, "TakeMeSomeDough")
		Goto Continue
	TakeMeSomeDough:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"TakeMeSomeManaDough")
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")	//Full size reached.
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",2,"Expand")
		Goto UnleashTheShitstorm
	TakeMeSomeManaDough:
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,"Expand")
		Goto UnleashTheShitstorm
	Expand:
		"####" "#" 0 A_GiveToTarget("LeadBallSize",1)	//To count how much ball had expanded in the gun, and cease pouring the lead in when it reached full size.
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",2,TIF_NOTAKEINFINITE)
		Goto ExorciiiizeTheDemons
	PumpingLeadOnSlowerPace:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck2")
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",5,2)
		"####" "#" 0 A_Jump(256,"Continue")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
		Goto Continue
	AmmoCheck:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",3,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	AmmoCheck2:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",10,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	ExorciiiizeTheDemons:
		"####" "#" 0 A_SetScale(ScaleX + 0.03, ScaleX)
		"####" "#" 0 A_SetUserVar("User_Size", User_Size + 1)
	Continue:
		"####" "#" 0 A_JumpIf(User_Lifespan <= 0, "Death")
		"####" "#" 0 A_SetUserVar("User_Frame", User_Frame + 1)
		//Spam bullets? Maybe.
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 15, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "#####" 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80.0), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 200)
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "####" 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
														   (FRandom(3.0, -3.0) * User_Size) / 2, (FRandom(-3.0, 3.0) * User_Size) / 2, (FRandom(2.0, 3.0) * User_Size) / 2,
														    FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 224)
		"####" "#" 0 A_JumpIfInventory("LeadBallReleased",1,2) //If it got released, cease holding in place.
		"####" "#" 0 A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),12.0,15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		"####" "#" 0 A_JumpIfInventory("LeadBallReleased",1,2) //If it got released, start draining the lifespan.
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		"####" "#" 0 A_JumpIfInventory("LeadBallReleased",1,3) //If it got released, significantly increase damage.
		"####" "#" 1 Bright A_Explode(((2 + (User_Size * 0.25))), 64 + (User_Size * 2), 0)
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 1 Bright A_Explode(((6 + User_Size)*random(1,3)), 64 + (User_Size * 2), 0)
		"####" "###" 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto SetFrame
	Bounce:
		TNT1 AAA 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto Continue
	UnleashTheShitstorm:
		"####" "#" 0 A_FadeIn(0.5)
		"####" "#" 0 A_GiveInventory("LeadBallReleased",1)
		"####" "#" 0 A_ChangeFlag("NOINTERACTION",0)
		"####" "#" 0 A_ChangeFlag("NOCLIP",0)
		"####" "#" 0 A_SetPitch(-CallACS("Pitchfork Simulation"))
		"####" "#" 0 A_SetUserVar("User_Lifespan", 3 * 35 + (User_Size * 5))
		"####" "#" 0 A_ChangeVelocity(cos(angle) * cos(pitch) * (30 + User_Size), sin(angle) * cos(pitch) * (30 + User_Size), sin(pitch) * (30 + User_Size), CVF_REPLACE)
		"####" "#" 0 A_JumpIf(User_Size >= 10,1) //If the ball is big enough, let's make it roll through the enemies!
		Goto Continue
		"####" "#" 0 A_ChangeFlag("RIPPER",1)
		Goto Continue
	Death:	//Might as well salvage the midas statue stuff for this one.
		TNT1 A 0 A_PlaySound("Sovereign/Exp",4,1.0)
		TNT1 A 0 A_SetUserVar("User_Amount", 6 + User_Size)
		TNT1 A 0 A_Explode(50 + (User_Size * 2), 96 + (User_Size * 5), 0)//, 1, 6 + (User_Size * 2), (4*random(1,3)))
	PhaseOne:
		TNT1 A 0 A_JumpIf(User_Amount <= 0, "Rest")
		TNT1 AAAAA 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 20)
		TNT1 AAA 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(6.0, -6.0) * User_Size) / 2, (FRandom(-6.0, 6.0) * User_Size) / 2, (FRandom(4.0, 6.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 40)
		TNT1 AAA 0 A_SpawnItemEx("Midas_Smoke", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 AA 0 A_SpawnItemEx("Midas_Particle", (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2,
										(FRandom(-1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-0.5, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 A 0 A_SetUserVar("User_Amount", User_Amount - 1)
		Loop
	Rest:
		TNT1 A 0 A_SpawnItemEx("Midas_Blast",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		//TNT1 A 0 A_SpawnItemEx("Midas_Emitter",0,0,2.5 * User_Range,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Flare",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Shockwave",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_GLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		Stop
	}
}

ACTOR LeadBallRight : LeadBall
{
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("LeadBall/Roll",4,0.8 + (0.01 * User_Size), 1)
		TNT1 A 0 A_SetUserVar("User_Frame", 1)
		TNT1 A 0 A_SetUserVar("User_Lifespan", 1)
		TNT1 A 0 A_SetUserVar("User_Size", 1)
		TNT1 A 0 A_JumpIfInTargetInventory("HexenCounter",1,3)
		TNT1 A 0 A_TakeFromTarget("PulverizerAmmo",5,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_TakeFromTarget("BlueMana",3,TIF_NOTAKEINFINITE)
		LDBF ABCDEFGHIJKLMNO 1 Bright A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),15.0+(User_Size*2.0),15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
	SetFrame:
		TNT1 A 0 A_JumpIf(User_Frame == 7, "FrameG")
		TNT1 A 0 A_JumpIf(User_Frame == 6, "FrameF")
		TNT1 A 0 A_JumpIf(User_Frame == 5, "FrameE")
		TNT1 A 0 A_JumpIf(User_Frame == 4, "FrameD")
		TNT1 A 0 A_JumpIf(User_Frame == 3, "FrameC")
		TNT1 A 0 A_JumpIf(User_Frame == 2, "FrameB")
		TNT1 A 0 A_JumpIf(User_Frame == 1, "FrameA")
	FrameA:
		LDBL A 0
		Goto Crapcheck
	FrameB:
		LDBL B 0
		Goto Crapcheck
	FrameC:
		LDBL C 0
		Goto Crapcheck
	FrameD:
		LDBL D 0
		Goto Crapcheck
	FrameE:
		LDBL E 0
		Goto Crapcheck
	FrameF:
		LDBL F 0
		Goto Crapcheck
	FrameG:
		LDBL G 0 A_SetUserVar("User_Frame",0)
		Goto Crapcheck
	Crapcheck:
		"####" "#" 0 A_JumpIfInventory("LeadBallRightReleased",1,"Continue")
		"####" "#" 0 A_JumpIfInTargetInventory("LeadBallRightHeld",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_JumpIf(User_Frame == 6, "TakeMeSomeDough")
		Goto Continue
	TakeMeSomeDough:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"TakeMeSomeManaDough")
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")	//Full size reached.
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",2,"Expand")
		Goto UnleashTheShitstorm
	TakeMeSomeManaDough:
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,"Expand")
		Goto UnleashTheShitstorm
	Expand:
		"####" "#" 0 A_GiveToTarget("LeadBallRightSize",1)	//To count how much ball had expanded in the gun, and cease pouring the lead in when it reached full size.
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",2,TIF_NOTAKEINFINITE)
		Goto ExorciiiizeTheDemons
	PumpingLeadOnSlowerPace:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck2")
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",5,2)
		"####" "#" 0 A_Jump(256,"Continue")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
		Goto Continue
	AmmoCheck:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",3,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	AmmoCheck2:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",10,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	ExorciiiizeTheDemons:
		"####" "#" 0 A_SetScale(ScaleX + 0.03, ScaleX)
		"####" "#" 0 A_SetUserVar("User_Size", User_Size + 1)
	Continue:
		"####" "#" 0 A_JumpIf(User_Lifespan <= 0, "Death")
		"####" "#" 0 A_SetUserVar("User_Frame", User_Frame + 1)
		//Spam bullets? Maybe.
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 15, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "#####" 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80.0), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 200)
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "####" 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
														   (FRandom(3.0, -3.0) * User_Size) / 2, (FRandom(-3.0, 3.0) * User_Size) / 2, (FRandom(2.0, 3.0) * User_Size) / 2,
														    FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 224)
		"####" "#" 0 A_JumpIfInventory("LeadBallRightReleased",1,2) //If it got released, cease holding in place.
		"####" "#" 0 A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),15.0+(User_Size*2.0),15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		"####" "#" 0 A_JumpIfInventory("LeadBallRightReleased",1,2) //If it got released, start draining the lifespan.
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		"####" "#" 0 A_JumpIfInventory("LeadBallRightReleased",1,3) //If it got released, significantly increase damage.
		"####" "#" 1 Bright A_Explode(((2 + (User_Size * 0.25))), 64 + (User_Size * 2), 0)
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 1 Bright A_Explode(((6 + User_Size)*random(1,3)), 64 + (User_Size * 2), 0)
		"####" "###" 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto SetFrame
	Bounce:
		TNT1 AAA 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto Continue
	UnleashTheShitstorm:
		"####" "#" 0 A_FadeIn(0.5)
		"####" "#" 0 A_GiveInventory("LeadBallRightReleased",1)
		"####" "#" 0 A_ChangeFlag("NOINTERACTION",0)
		"####" "#" 0 A_ChangeFlag("NOCLIP",0)
		"####" "#" 0 A_SetPitch(-CallACS("Pitchfork Simulation"))
		"####" "#" 0 A_SetUserVar("User_Lifespan", 3 * 35 + (User_Size * 5))
		"####" "#" 0 A_ChangeVelocity(cos(angle) * cos(pitch) * (30 + User_Size), sin(angle) * cos(pitch) * (30 + User_Size), sin(pitch) * (30 + User_Size), CVF_REPLACE)
		"####" "#" 0 A_JumpIf(User_Size >= 10,1) //If the ball is big enough, let's make it roll through the enemies!
		Goto Continue
		"####" "#" 0 A_ChangeFlag("RIPPER",1)
		Goto Continue
	Death:	//Might as well salvage the midas statue stuff for this one.
		TNT1 A 0 A_PlaySound("Sovereign/Exp",4,1.0)
		TNT1 A 0 A_SetUserVar("User_Amount", 6 + User_Size)
		TNT1 A 0 A_Explode(50 + (User_Size * 2), 96 + (User_Size * 5), 0)//, 1, 6 + (User_Size * 2), (4*random(1,3)))
	PhaseOne:
		TNT1 A 0 A_JumpIf(User_Amount <= 0, "Rest")
		TNT1 AAAAA 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 20)
		TNT1 AAA 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(6.0, -6.0) * User_Size) / 2, (FRandom(-6.0, 6.0) * User_Size) / 2, (FRandom(4.0, 6.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 40)
		TNT1 AAA 0 A_SpawnItemEx("Midas_Smoke", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 AA 0 A_SpawnItemEx("Midas_Particle", (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2,
										(FRandom(-1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-0.5, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 A 0 A_SetUserVar("User_Amount", User_Amount - 1)
		Loop
	Rest:
		TNT1 A 0 A_SpawnItemEx("Midas_Blast",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		//TNT1 A 0 A_SpawnItemEx("Midas_Emitter",0,0,2.5 * User_Range,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Flare",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Shockwave",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_GLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		Stop
	}
}

ACTOR LeadBallLeft : LeadBall
{
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("LeadBall/Roll",4,0.8 + (0.01 * User_Size), 1)
		TNT1 A 0 A_SetUserVar("User_Frame", 1)
		TNT1 A 0 A_SetUserVar("User_Lifespan", 1)
		TNT1 A 0 A_SetUserVar("User_Size", 1)
		TNT1 A 0 A_JumpIfInTargetInventory("HexenCounter",1,3)
		TNT1 A 0 A_TakeFromTarget("PulverizerAmmo",5,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_TakeFromTarget("BlueMana",3,TIF_NOTAKEINFINITE)
		LDBF ABCDEFGHIJKLMNO 1 Bright A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),-15.0-(User_Size*2.0),15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
	SetFrame:
		TNT1 A 0 A_JumpIf(User_Frame == 7, "FrameG")
		TNT1 A 0 A_JumpIf(User_Frame == 6, "FrameF")
		TNT1 A 0 A_JumpIf(User_Frame == 5, "FrameE")
		TNT1 A 0 A_JumpIf(User_Frame == 4, "FrameD")
		TNT1 A 0 A_JumpIf(User_Frame == 3, "FrameC")
		TNT1 A 0 A_JumpIf(User_Frame == 2, "FrameB")
		TNT1 A 0 A_JumpIf(User_Frame == 1, "FrameA")
	FrameA:
		LDBL A 0
		Goto Crapcheck
	FrameB:
		LDBL B 0
		Goto Crapcheck
	FrameC:
		LDBL C 0
		Goto Crapcheck
	FrameD:
		LDBL D 0
		Goto Crapcheck
	FrameE:
		LDBL E 0
		Goto Crapcheck
	FrameF:
		LDBL F 0
		Goto Crapcheck
	FrameG:
		LDBL G 0 A_SetUserVar("User_Frame",0)
		Goto Crapcheck
	Crapcheck:
		"####" "#" 0 A_JumpIfInventory("LeadBallLeftReleased",1,"Continue")
		"####" "#" 0 A_JumpIfInTargetInventory("LeadBallLeftHeld",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_JumpIf(User_Frame == 6, "TakeMeSomeDough")
		Goto Continue
	TakeMeSomeDough:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"TakeMeSomeManaDough")
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")	//Full size reached.
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",2,"Expand")
		Goto UnleashTheShitstorm
	TakeMeSomeManaDough:
		"####" "#" 0 A_JumpIf(User_Size >= 21,"PumpingLeadOnSlowerPace")
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,"Expand")
		Goto UnleashTheShitstorm
	Expand:
		"####" "#" 0 A_GiveToTarget("LeadBallLeftSize",1)	//To count how much ball had expanded in the gun, and cease pouring the lead in when it reached full size.
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",2,TIF_NOTAKEINFINITE)
		Goto ExorciiiizeTheDemons
	PumpingLeadOnSlowerPace:
		"####" "#" 0 A_JumpIfInTargetInventory("HexenCounter",1,"AmmoCheck2")
		"####" "#" 0 A_JumpIfInTargetInventory("PulverizerAmmo",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",5,2)
		"####" "#" 0 A_Jump(256,"Continue")
		"####" "#" 0 A_TakeFromTarget("PulverizerAmmo",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
		Goto Continue
	AmmoCheck:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",3,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	AmmoCheck2:
		"####" "#" 0 A_JumpIfInTargetInventory("BlueMana",1,1)
		Goto UnleashTheShitstorm
		"####" "#" 0 A_GiveInventory("LeadBallAmmoCounter",1)
		"####" "#" 0 A_JumpIfInventory("LeadBallAmmoCounter",10,2)
		"####" "#" 0 A_Jump(256,"ExorciiiizeTheDemons")
		"####" "#" 0 A_TakeFromTarget("BlueMana",1,TIF_NOTAKEINFINITE)
		"####" "#" 0 A_TakeInventory("LeadBallAmmoCounter",0)
	ExorciiiizeTheDemons:
		"####" "#" 0 A_SetScale(ScaleX + 0.03, ScaleX)
		"####" "#" 0 A_SetUserVar("User_Size", User_Size + 1)
	Continue:
		"####" "#" 0 A_JumpIf(User_Lifespan <= 0, "Death")
		"####" "#" 0 A_SetUserVar("User_Frame", User_Frame + 1)
		//Spam bullets? Maybe.
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 15, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "#####" 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80.0), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 200)
		"####" "#" 0 A_JumpIf(User_Size >= 20, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 10, 5)
		"####" "#" 0 A_JumpIf(User_Size >= 5, 5)
		"####" "#" 0 A_Jump(256,5)
		"####" "####" 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
														   (FRandom(3.0, -3.0) * User_Size) / 2, (FRandom(-3.0, 3.0) * User_Size) / 2, (FRandom(2.0, 3.0) * User_Size) / 2,
														    FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 224)
		"####" "#" 0 A_JumpIfInventory("LeadBallLeftReleased",1,2) //If it got released, cease holding in place.
		"####" "#" 0 A_Warp(AAPTR_TARGET,80.0+(User_Size*2.0),-15.0-(User_Size*2.0),15.0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		"####" "#" 0 A_JumpIfInventory("LeadBallLeftReleased",1,2) //If it got released, start draining the lifespan.
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		"####" "#" 0 A_JumpIfInventory("LeadBallLeftReleased",1,3) //If it got released, significantly increase damage.
		"####" "#" 1 Bright A_Explode(((2 + (User_Size * 0.25))), 64 + (User_Size * 2), 0)
		"####" "#" 0 A_Jump(256,2)
		"####" "#" 1 Bright A_Explode(((6 + User_Size)*random(1,3)), 64 + (User_Size * 2), 0)
		"####" "###" 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto SetFrame
	Bounce:
		TNT1 AAA 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,2)
		Goto Continue
	UnleashTheShitstorm:
		"####" "#" 0 A_FadeIn(0.5)
		"####" "#" 0 A_GiveInventory("LeadBallLeftReleased",1)
		"####" "#" 0 A_ChangeFlag("NOINTERACTION",0)
		"####" "#" 0 A_ChangeFlag("NOCLIP",0)
		"####" "#" 0 A_SetPitch(-CallACS("Pitchfork Simulation"))
		"####" "#" 0 A_SetUserVar("User_Lifespan", 3 * 35 + (User_Size * 5))
		"####" "#" 0 A_ChangeVelocity(cos(angle) * cos(pitch) * (30 + User_Size), sin(angle) * cos(pitch) * (30 + User_Size), sin(pitch) * (30 + User_Size), CVF_REPLACE)
		"####" "#" 0 A_JumpIf(User_Size >= 10,1) //If the ball is big enough, let's make it roll through the enemies!
		Goto Continue
		"####" "#" 0 A_ChangeFlag("RIPPER",1)
		Goto Continue
	Death:	//Might as well salvage the midas statue stuff for this one.
		TNT1 A 0 A_PlaySound("Sovereign/Exp",4,1.0)
		TNT1 A 0 A_SetUserVar("User_Amount", 6 + User_Size)
		TNT1 A 0 A_Explode(50 + (User_Size * 2), 96 + (User_Size * 5), 0)//, 1, 6 + (User_Size * 2), (4*random(1,3)))
	PhaseOne:
		TNT1 A 0 A_JumpIf(User_Amount <= 0, "Rest")
		TNT1 AAAAA 0 A_SpawnItemEx("LeadBallBullet", (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2, (FRandom(2.0, -2.0) * User_Size) / 2,
										FRandom(100.0,80.0), FRandom(100.0,80), FRandom(-100.0,100.0),
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 20)
		TNT1 AAA 0 A_SpawnItemEx("BigBuellerCasing", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(6.0, -6.0) * User_Size) / 2, (FRandom(-6.0, 6.0) * User_Size) / 2, (FRandom(4.0, 6.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_TRANSFERPOINTERS, 40)
		TNT1 AAA 0 A_SpawnItemEx("Midas_Smoke", (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2, (FRandom(16.0, -16.0) * User_Size) / 2,
										(FRandom(1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 AA 0 A_SpawnItemEx("Midas_Particle", (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2, (FRandom(12.0, -12.0) * User_Size) / 2,
										(FRandom(-1.0, -1.0) * User_Size) / 2, (FRandom(-1.0, 1.0) * User_Size) / 2, (FRandom(-0.5, 1.0) * User_Size) / 2,
										FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 A 0 A_SetUserVar("User_Amount", User_Amount - 1)
		Loop
	Rest:
		TNT1 A 0 A_SpawnItemEx("Midas_Blast",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		//TNT1 A 0 A_SpawnItemEx("Midas_Emitter",0,0,2.5 * User_Range,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Flare",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Shockwave",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_GLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		Stop
	}
}

ACTOR LeadBallBullet : FastProjectile
{
  Radius 11
  Height 7
  MissileHeight 11
  Speed 200
  Damage (5*random(1,3))
  Projectile
  +NOGRAVITY
  +FORCERADIUSDMG
  Renderstyle Add
  Obituary "%o was hit by %k's stray bullet, coming from a lead ball."
  Scale 0.5
  //MissileType "ThrottleTrail"
  Decal "BulletChip"
  States
  {
  Spawn:
	TRAC A 1 Bright A_ChangeVelocity(0, 0, -0.25, CVF_RELATIVE)
	Loop
  Death:
    TNT1 A 0 A_Explode(5*random(1,3),24,0)
	TNT1 A 0 A_PlaySound("LeadBullet/Hit",4,0.2)
	TNT1 A 1 A_SpawnItemEx("HBulletPuff",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    Stop
  XDeath:
	TNT1 A 0 A_SpawnItemEx("Blood")
	Stop
  }
}

ACTOR BigBuellerCasing : BuellerCasing
{
   Scale 0.3
   States
   {
   Death:
      CAS1 A 0 A_SpawnItemEx("BigBuellerCasingLiedown")
      stop
   }
}

actor BigBuellerCasingLiedown : BuellerCasingLiedown
{
    Scale 0.3
	States
	{
	Spawn:
	  TNT1 A 0 NoDelay A_Jump(255,"Spawn1","Spawn2")
	  stop
	Spawn1:
	  CAS1 I 1
	  Goto Ded
	Spawn2:
	  CAS1 J 1
	  Goto Ded
	Ded:
	  "####" "#" random(210,350) //since it can get quite cpu-heavy, I opted for the on-sight despawn here.
	  Goto Fadying
	Fadying:
	  "####" "#" 1 A_FadeOut(0.1)
	  Wait
	}
}