//Stackable Runes
Actor PowerStrength1 : PowerDamage
{
  DamageFactor "Normal", 1.4422
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerStrength2 : PowerDamage
{
  DamageFactor "Normal", 1.4422
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerStrength3 : PowerDamage
{
  DamageFactor "Normal", 1.4422
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor StrengthRune1 : CustomInventory
{
  Inventory.PickupMessage "StrengthRune 1"
  Inventory.PickupAnnouncerEntry "Strength"
  +NOGRAVITY
  States
  {
  Spawn:
	STR1 ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerStrength1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerStrength1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerStrength1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor StrengthRune2 : CustomInventory
{
  Inventory.PickupMessage "StrenthRune 2"
  Inventory.PickupAnnouncerEntry "Strength"
  +NOGRAVITY
  States
  {
  Spawn:
	STR2 ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerStrength2", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerStrength2Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerStrength2")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor StrengthRune3 : CustomInventory
{
  Inventory.PickupMessage "StrengthRune 3"
  Inventory.PickupAnnouncerEntry "Strength"
  +NOGRAVITY
  States
  {
  Spawn:
	STR3 ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerStrength3", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerStrength3Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerStrength3")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerResistance1 : PowerProtection
{
  DamageFactor "Normal", 0.6933
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerResistance2 : PowerProtection
{
  DamageFactor "Normal", 0.6933
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerResistance3 : PowerProtection
{
  DamageFactor "Normal", 0.6933
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor ResistanceRune1 : CustomInventory
{
  Inventory.PickupMessage "ResistanceRune 1"
  Inventory.PickupAnnouncerEntry "Resistance"
  +NOGRAVITY
   States
	{
  Spawn:
	RES1 ABCDEFGH 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerResistance1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerResistance1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerResistance1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor ResistanceRune2 : CustomInventory
{
  Inventory.PickupMessage "ResistanceRune 2"
  Inventory.PickupAnnouncerEntry "Resistance"
  +NOGRAVITY
  States
  {
  Spawn:
	RES2 ABCDEFGH 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerResistance2", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerResistance2Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerResistance2")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor ResistanceRune3 : CustomInventory
{
  Inventory.PickupMessage "ResistanceRune 3"
  Inventory.PickupAnnouncerEntry "Resistance"
  +NOGRAVITY
  States
  {
  Spawn:
	RES3 ABCDEFGH 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerResistance3", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerResistance3Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerResistance3")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerRegeneration1 : PowerRegeneration
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerRegeneration2 : PowerRegeneration
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor PowerRegeneration3 : PowerRegeneration
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor RegenerationRune1 : CustomInventory
{
  Inventory.PickupMessage "RegenerationRune 1"
  Inventory.PickupAnnouncerEntry "Regeneration"
  +NOGRAVITY
  +FLOATBOB
  States
  {
  Spawn:
	REG1 AB 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerRegeneration1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor RegenerationRune2 : CustomInventory
{
  Inventory.PickupMessage "RegenerationRune 2"
  Inventory.PickupAnnouncerEntry "Regeneration"
  +NOGRAVITY
  +FLOATBOB
  States
  {
  Spawn:
	REG2 AB 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration2", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration2Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerRegeneration2")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor RegenerationRune3 : CustomInventory
{
  Inventory.PickupMessage "RegenerationRune 3"
  Inventory.PickupAnnouncerEntry "Regeneration"
  +NOGRAVITY
  +FLOATBOB
  States
  {
  Spawn:
	REG3 AB 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration3", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerRegeneration3Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerRegeneration3")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

// Non-Stackable Runes
Actor PowerRage1 : PowerDoubleFiringSpeed
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor RageRune1 : CustomInventory
{
  Inventory.PickupMessage "RageRune"
  Inventory.PickupAnnouncerEntry "Rage"
  +NOGRAVITY
  States
  {
  Spawn:
	RAGR ABCDEFGH 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerRage1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerRage1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerRage1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerProsperity1 : PowerProsperity
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor ProsperityRune1 : CustomInventory
{
  Inventory.PickupMessage "ProsperityRune"
  Inventory.PickupAnnouncerEntry "Prosperity"
  +NOGRAVITY
  States
  {
  Spawn:
	PRSR ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerProsperity1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerProsperity1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerProsperity1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerReflection1 : PowerReflection
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor ReflectionRune1 : CustomInventory
{
  Inventory.PickupMessage "ReflectionRune"
  Inventory.PickupAnnouncerEntry "Reflection"
  +NOGRAVITY
  +FLOATBOB
  States
  {
  Spawn:
	REFR BA 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerReflection1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerReflection1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerReflection1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerDrain1 : PowerDrain
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor DrainRune1 : CustomInventory
{
  Inventory.PickupMessage "DrainRune"
  Inventory.PickupAnnouncerEntry "Drain"
  +NOGRAVITY
  States
  {
  Spawn:
	DRAR ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerDrain1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerDrain1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerDrain1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerHighJump1 : PowerHighJump
{
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	Stop
  }
}

Actor HighJumpRune1 : CustomInventory
{
  Inventory.PickupMessage "HighJumpRune"
  Inventory.PickupAnnouncerEntry "HighJump"
  +NOGRAVITY
  States
  {
  Spawn:
	HIJR ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerHighJump1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerHighJump1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerHighJump1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

Actor PowerHaste1 : PowerSpeed
{
  Speed 1.25
  Powerup.Duration 0
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  States
  {
  Spawn:
	stop
  }
}

Actor HasteRune1 : CustomInventory
{
  Inventory.PickupMessage "HasteRune"
  Inventory.PickupAnnouncerEntry "Haste"
  +NOGRAVITY
  +FLOATBOB
  States
  {
  Spawn:
	HASR ABCD 6
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("PowerHaste1", 1,"Null")
	TNT1 A 0 A_JumpIfInventory("PowerHaste1Token", 1,"Null")
	TNT1 A 0 A_GiveInventory("PowerHaste1")
	TNT1 A 0 ACS_NamedExecuteAlways("Draw_Runes")
	Stop
  }
}

//Tokens below used for toggling runes On/Off.
Actor PowerStrength1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerStrength2Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerStrength3Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerResistance1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerResistance2Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerResistance3Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerRegeneration1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerRegeneration2Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerRegeneration3Token : Inventory {  Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerRage1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerProsperity1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerSpread1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerReflection1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerDrain1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerHighJump1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PowerHaste1Token : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor PlayerinGame : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

Actor RuneStatus : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }