ACTOR HeartToken : GenericLegRuneToken { }

Actor HeartCooldown : Inventory 
{
 States
 {
  Held:
	TNT1 A 105
	Stop
 }
}

Actor DemonHeartParent : CustomInventory
{
  +INVENTORY.BIGPOWERUP
  +INVENTORY.UNDROPPABLE
  -INVENTORY.INVBAR //HDAN - in hud
  +FLOAT
}

ACTOR DemonHeart : DemonHeartParent
{
//$Category Powerups/Heart
//$Sprite NDHTA0
//$Title "Demon Heart"
  //Inventory.PickupSound "DemonHeart/Pickup"
  Inventory.PickupMessage "The Demon Heart - Automatically used on low health"
  Inventory.Icon DMNHRT
  Tag "Demon Heart"
  ActiveSound "DemonHeart/Idle"
  States
  {
  Spawn:
	DMHT A 0 NoDelay ACS_NamedExecuteAlways("SpawnEffectsOnItem",0,10,18)
  SpawnLoop: 
	TNT1 A 0 A_PlaySound("DemonHeart/Idle",7)
	DMHT ABB 12 Bright
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("HeartToken",1,"Null")
	TNT1 A 0 A_JumpIfInventory("HeartCooldown",1,"Null")
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_PlaySound("DemonHeart/Pickup",0)
	TNT1 A 0 ACS_NamedExecuteAlways("DemonHeartSeriousScript",0,0)
	Stop
  Use:
	TNT1 A 0 A_Print("The Heart only activates at low health!")
	Fail
  }
}

ACTOR LegendaryDemonHeart : DemonHeartParent
{
//$Category Powerups/Heart
//$Sprite LDHTA0
//$Title "Legendary Demon Heart"
  //Inventory.PickupSound "LegDemonHeart/Pickup"
  Inventory.PickupMessage "\c[z3]The Legendary Demon Heart\c- - Automatically used on low health"
  Inventory.Icon LEDMNHRT
  Tag "Legendary Demon Heart"
  ActiveSound "DemonHeart/Idle"
  +NOTIMEFREEZE
  States
  {
  Spawn:
	LDHT A 0 NoDelay ACS_NamedExecuteAlways("SpawnEffectsOnItem",0,13,14)
  SpawnLoop: 
	TNT1 A 0 A_PlaySound("DemonHeart/Idle",7)
	LDHT ABB 12 Bright 
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("HeartToken",1,"Null")
	TNT1 A 0 A_JumpIfInventory("HeartCooldown",1,"Null")
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_PlaySound("LegDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecuteAlways("DemonHeartSeriousScript",0,1)
	Stop
  Use:
	TNT1 A 0 A_Print("The Legendary Heart only activates at low health!")
	Fail
  }
}

ACTOR TrueLegendaryDemonHeart : DemonHeartParent
{
//$Category Powerups/Heart
//$Sprite TLHTA0
//$Title "True Legendary Demon Heart"
  //Inventory.PickupSound "TLegDemonHeart/Pickup"
  Inventory.PickupMessage "\c[l5]The True Legendary Demon Heart\c- - Automatically used on low health"
  Inventory.Icon TLEGDHRT
  Tag "True Legendary Demon Heart"
  ActiveSound "DemonHeart/Idle"
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TLHT A 0 NoDelay ACS_NamedExecuteAlways("SpawnEffectsOnItem",0,6,19)
  SpawnLoop: 
	TNT1 A 0 A_PlaySound("DemonHeart/Idle",7)
	TLHT ABB 12 Bright
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("HeartToken",1,"Null")
	TNT1 A 0 A_JumpIfInventory("HeartCooldown",1,"Null")
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_PlaySound("TLegDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecuteAlways("DemonHeartSeriousScript",0,2)
	Stop
  Use:
	TNT1 A 0 A_Print("The True Legendary Heart only activates at low health!")
	Fail
  }
}

ACTOR NemesisDemonHeart : DemonHeartParent
{
//$Category Powerups/Heart
//$Sprite NDHTA0
//$Title "Nemesis Demon Heart"
  //Inventory.PickupSound "NDemonHeart/Pickup"
  Inventory.PickupMessage "\c[g2]The Nemesis Demon Heart!\c- - Automatically used on low health"
  Inventory.Icon NDMNHRT
  Tag "Nemesis Demon Heart"
  ActiveSound "NDemonHeart/Idle"
  +NOTIMEFREEZE
  States
  {
  Spawn:
	NDHT A 0 NoDelay ACS_NamedExecuteAlways("SpawnEffectsOnItem",0,8,41)
  SpawnLoop: 
	TNT1 A 0 A_PlaySound("NDemonHeart/Idle",7)
	NDHT AABBBBB 3 Bright
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("HeartToken",1,"Null")
	TNT1 A 0 A_JumpIfInventory("HeartCooldown",1,"Null")
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_PlaySound("NDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecuteAlways("DemonHeartSeriousScript",0,3)
	Stop
  Use:
	TNT1 A 0 A_Print("The Nemesis Heart only activates at low health!")
	Fail
  }
}

ACTOR DemonHeartSpawner
{
 Radius 24
 Height 8
 Speed 17
 Monster
 -SHOOTABLE
 -COUNTKILL
 -SOLID
 States
 {
  Spawn:
	TNT1 A 0
  Death:
	TNT1 A 5 A_SpawnItemEx("DemonHeart",10,5,50,8,0,10,random(0,360),0,0)
	TNT1 A 1 A_Fall
	Stop
 }
}

ACTOR LegendaryDemonHeartSpawner: DemonHeartSpawner
{
 States
 {
  Spawn:
	TNT1 A 0
  Death:
	TNT1 A 5 A_SpawnItemEx("LegendaryDemonHeart",10,5,50,8,0,10,random(0,360),0,0)
	TNT1 A 1 A_Fall
	Stop
 }
}

ACTOR TrueLegendaryDemonHeartSpawner: DemonHeartSpawner
{
 States
 {
  Spawn:
	TNT1 A 0
  Death:
	TNT1 A 5 A_SpawnItemEx("TrueLegendaryDemonHeart",10,5,50,8,0,10,random(0,360),0,0)
	TNT1 A 1 A_Fall
	Stop
 }
}

ACTOR NemesisDemonHeartSpawner
{
 States
 {
  Spawn:
	TNT1 A 0
  Death:
	TNT1 A 5 A_SpawnItemEx("NemesisDemonHeart",10,5,50,8,0,10,random(0,360),0,0)
	TNT1 A 1 A_Fall
	Stop
 }
}

ACTOR UltraSphereFIX : UltraSphere { }
ACTOR LegendaryUltraSphereFIX : LegendaryUltraSphere 16703 { }
ACTOR TrueLegendaryUltraSphereFIX : TrueLegendaryUltraSphere { }
ACTOR NemesisUltraSphereFIX : NemesisUltraSphere 30443 { }

ACTOR  UltraSphereQuiet : UltraSphere
{
 -COUNTITEM
 +INVENTORY.QUIET
 +INVENTORY.ALWAYSPICKUP
}

ACTOR  LegendaryUltraSphereQuiet : LegendaryUltraSphere
{
 -COUNTITEM
 +INVENTORY.QUIET
 +INVENTORY.ALWAYSPICKUP
}

ACTOR NemesisUltraSphereQuiet : NemesisUltraSphere
{
 -COUNTITEM
 +INVENTORY.QUIET
 +INVENTORY.ALWAYSPICKUP
 States
 {
  Pickup:
	TNT1 A 0 A_GiveInventory("NemesisArmor",1)
	TNT1 A 1 A_GiveInventory("NemesisSphereHealth",1)
	Stop
 }
}

ACTOR TrueLegendaryUltraSphereQuiet : TrueLegendaryUltraSphere
{
 -COUNTITEM
 +INVENTORY.QUIET
 +INVENTORY.ALWAYSPICKUP
 States
 {
  Pickup:
	TNT1 A 1 A_GiveInventory("TrueLegendarySphereHealth", 1)
	TNT1 A 0 A_GiveInventory("TrueLegendaryArmor", 1)
	Stop
 }
}

ACTOR NexusUltraSphereSpawner : RandomSpawner Replaces UltraSphere
{
 DropItem "UltraSphereFIX", 256, 75
 DropItem "DemonHeart", 256, 25
}

ACTOR NexusLegendaryUltraSphereSpawner : RandomSpawner Replaces LegendaryUltraSphere
{
 DropItem "LegendaryUltraSphere", 256, 75
 DropItem "LegendaryDemonHeart", 256, 25
 DropItem "LegendaryInvulnerabilitySphere", 256, 10
}

ACTOR NexusTrueLegendaryUltraSphereSpawner : RandomSpawner Replaces TrueLegendaryUltraSphere
{
 DropItem "TrueLegendaryUltraSphereFIX", 256, 75
 DropItem "TrueLegendaryDemonHeart", 256, 25
}

ACTOR NemesisUltraSphereSpawner : RandomSpawner Replaces NemesisUltraSphere
{
DropItem "NemesisUltraSphereFIX", 256, 70
DropItem "NemesisDemonHeart", 256, 30
}