Actor VitalityRune : LegendaryRune2
{
  Inventory.PickupMessage "Vitality Rune: Regeneration and Resistance"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_JumpIf(ACS_NamedExecuteWithResult("TrueHardMode") == 1, "Remove")
	TNT1 A 0 A_PlaySound("Pickups/Legruneidle",7,1.0,1)
    TNT1 A 0 A_SpawnItemEx("VitalityRuneFXSpawner")
	VRUN AAA 10 Bright A_SpawnItemEx("VitalityRuneFlameSpawner",0,0,-20)
    Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("RuneArmorResetCooldown",1,"Nope")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryRuneItem2",1,"Nope")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryRuneItem",1,"Enhance")
    TNT1 A 0 A_JumpIfInventory("VitalityRuneToken",1,"Nope")
	TNT1 A 0 A_PlaySound("LegendaryRune/Pickup",6)
	TNT1 A 0 A_GiveInventory("VitalityRuneProtection",1)
	TNT1 A 0 A_GiveInventory("VitalityRuneIronFeet",1)
	TNT1 A 0 ACS_NamedExecuteAlways("RuneRegeneration",0,1)
	TNT1 A 0 A_GiveInventory("VitalityRuneToken",1)
	TNT1 A 1 A_StopSound(7)
	Stop
  Enhance:
	TNT1 A 0 A_JumpIfInventory("VitalityRuneUpgradeToken",1,"Nope")
	TNT1 A 0 A_JumpIfInventory("LegendaryRuneUpgradeToken",1,"Enhance2")
	TNT1 A 0 A_JumpIfInventory("AgilityRuneUpgradeToken",1,"Enhance3")
	TNT1 A 0 A_PlaySound("LegendaryRune/Pickup",6)
	TNT1 A 0 A_GiveInventory("VitalityRuneUpgradeToken",1)
	TNT1 A 0 A_Print("\c[z3]Acquire the last two runes to further upgrade the True Legendary Rune!")
	TNT1 A 1 A_StopSound(7)
	Stop
  Enhance2:
	TNT1 A 0 A_JumpIfInventory("AgilityRuneUpgradeToken",1,"Done")
	TNT1 A 0 A_PlaySound("LegendaryRune/Pickup",6)
	TNT1 A 0 A_GiveInventory("VitalityRuneUpgradeToken",1)
	TNT1 A 0 A_Print("\c[z3]Acquire the last rune to further upgrade the True Legendary Rune!")
	TNT1 A 1 A_StopSound(7)
	Stop
  Enhance3:
	TNT1 A 0 A_JumpIfInventory("LegendaryRuneUpgradeToken",1,"Done")
	TNT1 A 0 A_PlaySound("LegendaryRune/Pickup",6)
	TNT1 A 0 A_GiveInventory("VitalityRuneUpgradeToken",1)
	TNT1 A 0 A_Print("\c[z3]Acquire the last rune to further upgrade the True Legendary Rune!")
	TNT1 A 1 A_StopSound(7)
	Stop
  Done:
	TNT1 A 0 A_PlaySound("LegendaryRune/Pickup",6)
	TNT1 A 0 A_GiveInventory("VitalityRuneUpgradeToken",1)
	TNT1 A 0 A_GiveInventory("TrueLegendaryRuneUpgradeToken",1)
	TNT1 A 0 A_Print("\c[z3]Acquire another True Legendary Rune!")
	TNT1 A 1 A_StopSound(7)
	Stop
	}
}

Actor VitalityRuneProtection : PowerProtection
{
  +INVENTORY.PERSISTENTPOWER
  +INVENTORY.HUBPOWER
  +NOTIMEFREEZE
  Powerup.Duration 0x7FFFFFFF
  +NORADIUSDMG
  DamageFactor "Normal", 0.75
  Damagefactor "PlayerPhase", 0.0
  DamageFactor "PlayerPyro", 0.025
  DamageFactor "Explosion", 0.25
  DamageFactor "Mine", 0.25
  DamageFactor "Slime", 0.0
}

Actor VitalityRuneIronFeet : PowerIronFeet
{
  +INVENTORY.HUBPOWER
  +INVENTORY.PERSISTENTPOWER
  +NOTIMEFREEZE
  Powerup.Duration 0x7FFFFFFF
  Powerup.Color "FF FF FF", 0.00 //for some reason I have to define this
  DamageFactor "Slime", 0.0
}

ACTOR VitalityRuneArmor : BasicArmorBonus 
{
  Armor.SaveAmount 2
  Armor.MaxSaveAmount 100
  Armor.SavePercent 56
  Inventory.Icon "ARM2B0"
}

Actor VitalityRuneToken : LegendaryRuneItem { }
Actor VitalityRuneUpgradeToken : GenericLegRuneToken { }

ACTOR VPlayerSmokeSpawner : LegendaryRedParticleSpawner 
{
	Scale 0.01
	States 
	{
	Spawn:
		TNT1 A 0
        TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
		LMKE A 0 A_JumpIfInventory("VitalityRuneToken",1,"Smoking",AAPTR_TARGET)
		Stop
	Smoking:
		FIG1 A 0
		FIG1 AA 0 Bright A_SpawnItemEx("VitalityPlayerSmoke",random(12,-12),random(12,-12),random(-16,16),0,0,random(1,3),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		FIG1 A 1
		Stop
	Toaster:
        TNT1 A 0
	    Stop
	}
}

ACTOR VitalityPlayerSmoke : LPlayerSmoke
{
  RenderStyle Add
  States 
  {
  Spawn:
	FIG1 ABCDEFGHIJKL 2 Bright A_FadeOut
	Stop
	}	
}
ACTOR VitalityPlayerSmokeNoLight : VitalityPlayerSmoke { }


ACTOR VitalityRuneFlameSpawner : LegendarySphereFlameSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 AAAAAA 0 A_SpawnItemEx("VitalityPlayerSmokeNoLight",random(20,-20),random(20,-20),random(20,40),0,0,random(2,6),0,128,0)
    TNT1 A 0
    Stop
  Toaster:
    TNT1 A 0
	Stop
  }
}

Actor VitalityRuneFX
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  +FLOATBOB
  +BRIGHT
  Renderstyle Add
  Scale 1.2
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(128,"Shield")
	VRFX A 1 A_FadeOut(0.03)
	Wait
  Shield:
	VRFX B 1 A_FadeOut(0.03)
	Wait
	}
}

ACTOR VitalityRuneFXSpawner : WhiteSparkleSpawner
{
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 AA 2 A_SpawnItemEx("VitalityRuneFX",random(-15,15),random(-15,15),random(28,44))
	Stop
	}
}