Actor MidasBase
{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	var int User_GoldRange;
	Alpha 0.99
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 A 0
			Goto FadeIn
		FadeIn:
			TNT1 A 0
			Goto Idle
		Idle:
			TNT1 A 0
			Goto FadeOut
		FadeOut:
			TNT1 A 0
			Stop
	}
}

Actor MidasEmitter
{
	Var Int User_SpawnCount;
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("User_SpawnCount", 10)
			Goto Emit
		Emit:				// Emit particles.
			TNT1 A 0 A_Jump(256, "Count") // You MUST use A_Jump.
			Goto Count
		Count:				// Emit until SpawnCount <= 0.
			TNT1 A 0 A_SetUserVar("User_SpawnCount", User_SpawnCount - 1)
			TNT1 A 0 A_JumpIf(User_SpawnCount <= 0, "NULL")
			TNT1 A 0 A_Jump(256, "Emit")
			Goto Emit
	}
}

Actor Midas_Smoke : MidasBase
{
	Alpha 0.0
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD",
								 "SpriteE", "SpriteF", "SpriteG", "SpriteH")
		SpriteA:
			MDSM A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		SpriteB:
			MDSM B 0 A_Jump(256, "FadeIn")
			Goto SpriteB
		SpriteC:
			MDSM C 0 A_Jump(256, "FadeIn")
			Goto SpriteC
		SpriteD:
			MDSM D 0 A_Jump(256, "FadeIn")
			Goto SpriteD
		SpriteE:
			MDSM E 0 A_Jump(256, "FadeIn")
			Goto SpriteE
		SpriteF:
			MDSM F 0 A_Jump(256, "FadeIn")
			Goto SpriteF
		SpriteG:
			MDSM G 0 A_Jump(256, "FadeIn")
			Goto SpriteG
		SpriteH:
			MDSM H 0 A_Jump(256, "FadeIn")
			Goto SpriteH
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.6, 0.5))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.01, 0.03))
			"####" "#" 0 A_JumpIf(Alpha >= 0.35, "Idle")
			Loop
		Idle:
			"####" "#" 5 A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.02,0.025))
			"####" "#" 0 A_ScaleVelocity(0.96)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.02, 0.025))
			Loop
	}
}

Actor Midas_Particle : MidasBase
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256, "SpriteA")
		SpriteA:
			YPRT A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.035, 0.055))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_Weave(FRandom(0.9, 1.0), FRandom(0.9, 1.0),
										FRandom(70, 90), FRandom(70, 90))
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			"####" "#" 0 A_ChangeVelocity(VelX * FRandom(0.93, 0.99),
										  VelY * FRandom(0.93, 0.99),
										  VelZ - FRandom(0.1, 0.2),
										  CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.0025, 0.0015))
			Loop
	}
}

Actor Midas_Shockwave : MidasBase
{
	RenderStyle Add
	Scale 0.2
	States
	{
		Spawn:
			SHCK E 0 NoDelay //ACS_NamedExecuteAlways("Pass the Whiskey")
		Looplet:
			SHCK E 0 A_SetScale(ScaleX + FRandom(0.15, 0.2))
			SHCK E 1 Bright A_FadeOut(0.075)
			Loop
	}
}

Actor Midas_Flare : MidasBase
{
	RenderStyle Add
	Scale 2.8
	States
	{
		Spawn:
			FLAR A 0 NoDelay //ACS_NamedExecuteAlways("Pass the Whiskey")
		Looplet:
			FLAR A 1 Bright A_FadeOut(0.03)
			FLAR A 0 A_SetScale(ScaleX - FRandom(0.05, 0.15))
			FLAR A 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			Loop
	}
}

Actor Midas_Blast : MidasBase
{
	RenderStyle Add
	Scale 0.5
	Alpha 0.7
	States
	{
		Spawn:
			TNT1 A 0 NoDelay //ACS_NamedExecuteAlways("Pass the Whiskey")
		Continue:
			TNT1 A 0 A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
		SpriteA:
			MDST A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		SpriteB:
			MDST B 0 A_Jump(256, "FadeIn")
			Goto SpriteB
		SpriteC:
			MDST C 0 A_Jump(256, "FadeIn")
			Goto SpriteC
		SpriteD:
			MDST D 0 A_Jump(256, "FadeIn")
			Goto SpriteD
		FadeIn:
			"####" "#" 1 Bright A_FadeOut(0.04)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.08, 0.1))
			Loop
	}
}

Actor Midas_Impact : MidasEmitter
{
	States
	{
		Spawn:
			TNT1 AA 0 A_SetUserVar("User_SpawnCount", 10)
			Goto Emit
		Emit:

			/*TNT1 AA 0 A_SpawnItemEx("Matriarch_Flare", FRandom(-20, 20),
									FRandom(-20, 20), FRandom(-20, 20),
									0, 0, 0, 0, SXF_CLIENTSIDE)*/
			TNT1 A random(1,2)
			TNT1 A 0 A_Jump(0xFF, "Count")
			Goto Count
	}
}

ACTOR Midas_GLDEF
{
	+NOINTERACTION
	+NOGRAVITY
	States
	{
	Spawn:
	TNT1 A 25
	Stop
	}
}

Actor Midas_Statue
{
	Radius 20
	Height 56
	Health 20
	+SHOOTABLE
	+SOLID
	+NOBLOOD
	+PUSHABLE
	var int User_GoldAmount; //the multiplier how much stuff spawns through spawning cycle
	var int User_GoldRange; //the multiplier for how much the smoke and other effects expand
	var int User_GoldCounter1; //small coins
	var int User_GoldCounter2; //big coins
	States
	{
	Spawn:
		"####" "#" 0 NoDelay
	Cycle:
		"####" "#" 0 ACS_NamedExecuteAlways("Pudlo z Jezusem")
	Looplet:
		"####" "#" 1
		Loop
	Death:
	Crash:
		TNT1 A 1
		Goto DeathInit
	DeathInit:
		TNT1 A 0 A_PlaySound("Matriarch/Exp",6,1.0)
	PhaseOne:
		TNT1 A 0 A_JumpIf(User_GoldAmount <= 0, "PhaseTwo")
		TNT1 AA 0 A_SpawnItemEx("Midas_Smoke", FRandom(-2.5, 2.5) * User_GoldRange,
										FRandom(-2.5, 2.5) * User_GoldRange, FRandom(-3.5, 3.5) * User_GoldRange + (2.5 * User_GoldRange),
										FRandom(0.15, -0.25) * User_GoldRange / 10, FRandom(-0.1, 0.1) * User_GoldRange / 10,
										FRandom(-0.1, 0.1) * User_GoldRange / 10, FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 AA 0 A_SpawnItemEx("Midas_Particle", FRandom(-2.5, 2.5) * User_GoldRange,
										FRandom(-2.5, 2.5) * User_GoldRange, FRandom(-1.5, 3.5) * User_GoldRange + (2.5 * User_GoldRange),
										FRandom(-1.3, -1.6) * User_GoldRange / 5, FRandom(-1.6, 1.6) * User_GoldRange / 5,
										FRandom(0.1, 0.6) * User_GoldRange / 5, FRandom(0.0,360.0), SXF_CLIENTSIDE, 20)
		TNT1 A 0 A_SetUserVar("User_GoldAmount", User_GoldAmount - 1)
		Loop
	PhaseTwo:
		TNT1 A 0 A_JumpIf(User_GoldCounter1 <= 0, "PhaseThree")
		TNT1 A 0 A_SpawnItemEx("SmallMidasCoin",FRandom(-1.5, 1.5) * User_GoldRange, FRandom(-1.5, 1.5) * User_GoldRange,
										FRandom(-1.5, 1.5) * User_GoldRange + (2.5 * User_GoldRange), FRandom(0.2, 0.5) * User_GoldRange,
										FRandom(0.2, 0.5) * User_GoldRange,  FRandom(0.4, 0.7) * User_GoldRange,
										FRandom(0.0,360.0), 0, 10)
		TNT1 A 0 A_SetUserVar("User_GoldCounter1", User_GoldCounter1 - 1)
		Loop
	PhaseThree:
		TNT1 A 0 A_JumpIf(User_GoldCounter2 <= 0, "Rest")
		TNT1 A 0 A_SpawnItemEx("BigMidasCoin",FRandom(-1.5, 1.5) * User_GoldRange, FRandom(-1.5, 1.5) * User_GoldRange,
										FRandom(-1.5, 1.5) * User_GoldRange + (2.5 * User_GoldRange), FRandom(0.2, 0.5) * User_GoldRange,
										FRandom(0.2, 0.5) * User_GoldRange,  FRandom(0.4, 0.7) * User_GoldRange,
										FRandom(0.0,360.0), 0, 10)
		TNT1 A 0 A_SetUserVar("User_GoldCounter2", User_GoldCounter2 - 1)
		Loop
	Rest:
		TNT1 A 0 A_SpawnItemEx("Midas_Blast",0,0,2.5 * User_GoldRange,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		//TNT1 A 0 A_SpawnItemEx("Midas_Emitter",0,0,2.5 * User_GoldRange,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Flare",0,0,2.5 * User_GoldRange,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_Shockwave",0,0,2.5 * User_GoldRange,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_SpawnItemEx("Midas_GLDEF",0,0,2.5 * User_GoldRange,0,0,0,0,SXF_CLIENTSIDE|SXF_SETMASTER,0)
		TNT1 A 0 A_Jump(256,"MidasReward")
	MidasReward:
		TNT1 A 0 //A_GiveToTarget("Dosh",50)
		Stop
	}
}

//Money Magnet stuff
Actor ShingSparkleSparkle : MidasBase
{
	States
	{
	Spawn:
		TNT1 AAAAAAAA 0 A_SpawnItemEx("MoneyMagnet_Particle",
		frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(2.0,-2.0),
		frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(3.0,0.5),frandom(0.0,360.0),SXF_CLIENTSIDE,60)
		TNT1 A 0 A_SpawnItemEx("MoneyMagnet_Flare",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		Stop
	}
}

Actor MoneyMagnet_Particle : MidasBase
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256, "SpriteA")
		SpriteA:
			YPRT A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.045, 0.075))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_ChangeVelocity(frandom(0.4,-0.4),frandom(0.4,-0.4),frandom(0.8,0.4),CVF_RELATIVE|CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.0025, 0.0015))
			"####" "#" 0 A_FadeOut(0.04)
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			Loop
	}
}

Actor MoneyMagnet_Flare : MidasBase
{
	RenderStyle Add
	Scale 0.2
	States
	{
		Spawn:
			FLAR A 0 NoDelay //ACS_NamedExecuteAlways("Pass the Whiskey")
		Looplet:
			FLAR A 1 Bright A_FadeOut(0.03)
			FLAR A 0 A_SetScale(ScaleX - 0.01)
			FLAR A 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			Loop
	}
}

