//Swiggity swooty, I'm comin' for dat booty!
 
ACTOR PhilosophersTome : CustomInventory
{
  +COUNTITEM +AUTOACTIVATE +FLOATBOB //+ALWAYSPICKUP
  Inventory.PickupSound "Tome/Pickup"
  Inventory.PickupMessage "You've got the legendary Philosopher's Tome!" //Dat close-ref pun.
  Inventory.MaxAmount 0
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(128,3)
	TNT1 A 0 A_SpawnItemEx("TomeParticleYellow",frandom(15.0,-15.0),frandom(15.0,-15.0),30+frandom(15.0,-15.0),
												frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),
												frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	TNT1 A 0 A_Jump(256,2)										
	TNT1 A 0 A_SpawnItemEx("TomeParticleOrange",frandom(15.0,-15.0),frandom(15.0,-15.0),30+frandom(15.0,-15.0),
												frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),
												frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MIDT A 1 Bright A_SpawnItemEx("MidasTomeFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("MidasRecharger",1,"Dosh")
    TNT1 A 0 A_GiveInventory("MidasRecharger",1)
	TNT1 A 0 A_GiveInventory("MidasTome",1)
	Stop
  Dosh:
	TNT1 A 0 A_JumpIfInventory("Dosh",0,"Nope")
	TNT1 A 0 A_JumpIf(CallACS("MoneyShareCheck"),2)
	TNT1 A 0 A_GiveToTarget("Dosh",4000)
	Stop
	TNT1 A 0 ACS_NamedExecuteAlways("MoneySharing",0,4000)
	Stop
  Nope:
	TNT1 A 0
	Fail
  }
}

ACTOR MidasTomeFade
{
	+NOINTERACTION
	+NOGRAVITY
	Renderstyle Add
	States
	{
	Spawn:
	MIDT A 1 A_FadeOut(0.25)
	MIDT A 0 A_SetScale(ScaleX+0.05,ScaleX)
	Loop
	}
}
	  
ACTOR MidasTome : CustomInventory
{
  +INVBAR +FLOATBOB //+KEEPDEPLETED
  Inventory.PickupSound "Tome/Pickup"
  Inventory.PickupMessage "Yeah well, it's not like I didn't predict that. I hope you enjoy multiplying your tomes."
  Inventory.Icon "ARTIMIDT"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.UseSound ""
  Tag "Philosopher's Tome"
  States
  {  
  Spawn:
	  TNT1 A 0 NoDelay A_Jump(128,3)
	  TNT1 A 0 A_SpawnItemEx("TomeParticleYellow",frandom(15.0,-15.0),frandom(15.0,-15.0),30+frandom(15.0,-15.0),
												  frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),
												  frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	  TNT1 A 0 A_Jump(256,2)
	  TNT1 A 0 A_SpawnItemEx("TomeParticleOrange",frandom(15.0,-15.0),frandom(15.0,-15.0),30+frandom(15.0,-15.0),
												  frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),
												  frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	  MIDT A 1 Bright A_SpawnItemEx("MidasTomeFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  Loop
  Use:
	  TNT1 A 0 A_JumpIfInventory("PowerMidasMode",1,"Nope")
	  TNT1 A 0 A_PlaySound("Tome/Use",3)
	  TNT1 A 0 A_GiveInventory("MidasPower",1)
	  TNT1 A 0 A_SetBlend("Gold",0.4,25)
	  Stop
  Nope:
      TNT1 A 0
	  Fail
  }
}

ACTOR MidasRecharger : Inventory { Inventory.MaxAmount 1 }
ACTOR MidasTimer : Inventory { Inventory.MaxAmount 120 }
	  
ACTOR MidasReturn : CustomInventory
{
  Inventory.MaxAmount 0
  +COUNTITEM +AUTOACTIVATE +ALWAYSPICKUP
  States
  {
  Spawn:
      TNT1 A -1
	  Stop
  Pickup:
	  TNT1 A 0 A_PlaySound("Tome/Return",3,0.6)
      TNT1 A 0 A_SetBlend("Gold",0.2,35)
	  TNT1 A 0 A_Print("\cfPhilosopher's tome\n\cjhas regained its power.")
	  Stop
  }
}

actor MidasSphere : CustomInventory
{
  Inventory.MaxAmount 0
  Inventory.PickupSound "MidasSphere/Pickup"
  Inventory.PickupMessage "Midas sphere!"
  Renderstyle Add
  +FLOATBOB
  +COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  states
  {
  Spawn:
    MDSS AA 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS AAAA 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS B 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS BBBB 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS A 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS CCCC 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS A 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS DDDD 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS E 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS EEEE 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS F 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS FFFF 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS E 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS EEEE 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS D 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS DDDD 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS C 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS CCCC 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
	MDSS B 0 A_SpawnItemEx("MidasSphereFade",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    MDSS BBBB 1 Bright A_SpawnItemEx("YellowParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),35+frandom(10.0,-10.0),frandom(0.6,-0.6),frandom(0.6,-0.6),frandom(1.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,64)
    Loop
  Pickup: 
    TNT1 A 0 A_GiveInventory("MidasPower")
    stop
  }
}

ACTOR MidasSphereFade
{
  +NOGRAVITY
  +NOINTERACTION
  Renderstyle Add
  States
  {
  Spawn:
	MDSS C 1 A_FadeOut(0.12)
	MDSS C 0 A_SetScale(ScaleX+0.02,ScaleX)
	Loop
  }
}

actor MidasPower : PowerupGiver
{
  Inventory.Amount 0
  powerup.type "MidasMode"
  powerup.duration -45 //-0x7FFFFFFF
  Powerup.Color Gold, 0.05
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.ADDITIVETIME
  states
  {
  Spawn:
    TNT1 A 1
    stop
  }
}

actor PowerMidasMode : PowerDamage //PowerInvulnerable
{	
	Inventory.Icon "MIDASMD0"
	DamageFactor "Normal", 1.0
}


ACTOR SmallMidasCoin : DoshPickup
{
	Height 12
	Radius 18
	BounceType "Doom"
	BounceCount 8
	BounceSound "Midas/CoinBounce"
	PROJECTILE
	-NOGRAVITY
	States
	{
	SpawnMain:
		TNT1 A 0 A_Jump(256,"SpriteA","SpriteB")
	SpriteA:
		COIN ABCDEF 2
		Loop
	SpriteB:
		COIN FEDCBA 2
		Loop
	PickupMain:
		TNT1 A 0 A_GiveInventory("Dosh",random(5,10))
		Stop
	PickupShare:
		TNT1 A 0 ACS_NamedExecuteAlways("MoneySharing",0,5,10)
		Stop
	Death:
		TNT1 A 0 A_SpawnItemEx("SmallMidasCoinStationary")
		Stop
	Nope:
		TNT1 A 0
		Fail
	}
}

ACTOR SmallMidasCoinStationary : DoshPickup
{
	var int User_Lifespan;
	States
	{
	SpawnMain:
		TNT1 A 0 A_SetUserVar("User_Lifespan",random(55,45))
		TNT1 A 0 A_Jump(256,"SpriteA","SpriteB")
	SpriteA:
		COIN A 0 A_JumpIf(User_Lifespan <= 5, "HurryUpA")
		COIN ABCDEF 2 Bright
		COIN A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	HurryUpA:
		COIN A 0 A_JumpIf(User_Lifespan <= 0, "Null")
		COIN ABC 2 Bright
		TNT1 A 3
		COIN DEF 2 Bright
		TNT1 A 3
		COIN A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	SpriteB:
		COIN A 0 A_JumpIf(User_Lifespan <= 5, "HurryUpB")
		COIN FEDCBA 2 Bright
		COIN A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	HurryUpB:
		COIN A 0 A_JumpIf(User_Lifespan <= 0, "Null")
		COIN FED 2 Bright
		TNT1 A 3
		COIN CBA 2 Bright
		TNT1 A 3
		COIN A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	PickupMain:
		TNT1 A 0 A_GiveInventory("Dosh",random(5,10))
		Stop
	PickupShare:
		TNT1 A 0 ACS_NamedExecuteAlways("MoneySharing",0,5,10)
		Stop
	Nope:
		TNT1 A 0
		Fail
	}
}

ACTOR BigMidasCoin : SmallMidasCoin
{
	States
	{
	SpawnMain:
		TNT1 A 0 A_Jump(256,"SpriteA","SpriteB")
	SpriteA:
		COI2 ABCDEF 2 Bright
		Loop
	SpriteB:
		COI2 FEDCBA 2 Bright
		Loop
	PickupMain:
		TNT1 A 0 A_GiveInventory("Dosh",random(10,15))
		Stop
	PickupShare:
		TNT1 A 0 ACS_NamedExecuteAlways("MoneySharing",0,10,15)
		Stop
	Death:
		TNT1 A 0 A_SpawnItemEx("BigMidasCoinStationary")
		Stop
	Nope:
		TNT1 A 0
		Fail
	}
}

ACTOR BigMidasCoinStationary : SmallMidasCoinStationary
{
	States
	{
	SpawnMain:
		TNT1 A 0 A_SetUserVar("User_Lifespan",random(55,45))
		TNT1 A 0 A_Jump(256,"SpriteA","SpriteB")
	SpriteA:
		COI2 A 0 A_JumpIf(User_Lifespan <= 5, "HurryUpA")
		COI2 ABCDEF 2 Bright
		COI2 A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	HurryUpA:
		COI2 A 0 A_JumpIf(User_Lifespan <= 0, "Null")
		COI2 ABC 2 Bright
		TNT1 A 3
		COI2 DEF 2 Bright
		TNT1 A 3
		COI2 A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	SpriteB:
		COI2 A 0 A_JumpIf(User_Lifespan <= 5, "HurryUpB")
		COI2 FEDCBA 2 Bright
		COI2 A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	HurryUpB:
		COI2 A 0 A_JumpIf(User_Lifespan <= 0, "Null")
		COI2 FED 2 Bright
		TNT1 A 3
		COI2 CBA 2 Bright
		TNT1 A 3
		COI2 A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
		Loop
	PickupMain:
		TNT1 A 0 A_GiveInventory("Dosh",random(10,15))
		Stop
	PickupShare:
		TNT1 A 0 ACS_NamedExecuteAlways("MoneySharing",0,10,15)
		Stop
	Nope:
		TNT1 A 0
		Fail
	}
}