ACTOR DemonHeart : CustomInventory 
{
//$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
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Tag "The Demon Heart"
  ActiveSound "DemonHeart/Idle"
  +INVENTORY.BIGPOWERUP
  +INVENTORY.UNDROPPABLE
  +INVENTORY.INVBAR
  +FLOATBOB
  +FLOAT
  States
  {
  Spawn:
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TNT1 A 0 A_PlaySound("DemonHeart/Idle")
    DMHT AAAAA 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT AAAAA 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT AABBB 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT BBBBB 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT BBBBB 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT BBBBB 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	DMHT BBBBBB 1 Bright A_SpawnItem("RedSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("RedSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
    Loop
  Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("DemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("LegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("NemesisDemonHeart",1,"Nop")
	TNT1 A 0 A_PlaySound("DemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecute("DemonHeartScript",0)
	TNT1 A 0 A_StopSound
	Stop
  Use:
	TNT1 A 0
	TNT1 A 0 A_Print("The Heart only activates at low health!")
	Fail
  Nop:
	TNT1 A 1
	Fail
  }
}

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

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

ACTOR LegendaryDemonHeart : CustomInventory 
{
//$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
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Tag "The Legendary Demon Heart"
  ActiveSound "DemonHeart/Idle"
  +INVENTORY.BIGPOWERUP
  +INVENTORY.UNDROPPABLE
  +INVENTORY.INVBAR
  +FLOATBOB
  +FLOAT
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TNT1 A 0 A_PlaySound("DemonHeart/Idle")
    LDHT AAAAA 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT AAAAA 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT AABBB 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT BBBBB 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT BBBBB 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT BBBBB 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	LDHT BBBBBB 1 Bright A_SpawnItem("YellowSphereFlare",0,38)
	TNT1 A 0 A_CustomMissile ("yellowSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
    Loop
  Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("DemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("LegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("NemesisDemonHeart",1,"Nop")
	TNT1 A 0 A_PlaySound("LegDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecute("LegendaryDemonHeartScript",0)
	TNT1 A 1 A_StopSound
	Stop
  Use:
	TNT1 A 0
	TNT1 A 0 A_Print("The Legendary Heart only activates at low health!")
	Fail
  Nop:
	TNT1 A 1
	Fail
  }
}

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

ACTOR LegendaryUltraSphereSpawner : RandomSpawner Replaces LegendaryUltraSphere
{
DropItem "LegendaryUltraSphereFIX", 256, 75
DropItem "LegendaryDemonHeart", 256, 25
}

ACTOR TrueLegendaryDemonHeart : CustomInventory 
{
//$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
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Tag "The True Legendary Demon Heart"
  ActiveSound "DemonHeart/Idle"
  +INVENTORY.BIGPOWERUP
  +INVENTORY.UNDROPPABLE
  +INVENTORY.INVBAR
  +NOTIMEFREEZE
  +FLOATBOB
  +FLOAT
  States
  {
  Spawn:
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TNT1 A 0 A_PlaySound("DemonHeart/Idle")
    TLHT A 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT A 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT A 2 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 3 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 5 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TLHT B 6 Bright A_SpawnItem("TrueLegendarySphereFlameSpawner",0,0)
	TNT1 A 0 A_CustomMissile ("BlueSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	Loop
  Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("DemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("LegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("NemesisDemonHeart",1,"Nop")
	TNT1 A 0 A_PlaySound("TLegDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecute("TrueLegendaryDemonHeartScript",0)
	Stop
  Use:
	TNT1 A 0
	TNT1 A 0 A_Print("The True Legendary Heart only activates at low health!")
	Fail
  Nop:
	TNT1 A 1
	Fail
  }
}

ACTOR TrueLegendaryUltraSphereFIX : TrueLegendaryUltraSphere { }
ACTOR TrueLegendaryUltraSphereQuiet : TrueLegendaryUltraSphere
{
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.ALWAYSPICKUP
}

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

ACTOR NemesisDemonHeart : CustomInventory 
{
//$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
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Tag "The Nemesis Demon Heart"
  ActiveSound "NDemonHeart/Idle"
  +INVENTORY.BIGPOWERUP
  +INVENTORY.UNDROPPABLE
  +INVENTORY.INVBAR
  +NOTIMEFREEZE
  +FLOATBOB
  +FLOAT
  States
  {
  Spawn:
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	TNT1 A 0 A_PlaySound("NDemonHeart/Idle")
    NDHT A 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT A 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT B 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT B 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT B 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT B 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
	NDHT B 3 Bright A_SpawnItem("NemSphereSmoke",0,38)
	TNT1 A 0 A_CustomMissile ("PurpleSparkleSpawner", 0, 0, random(0,-360), 2, random(0,360))
    Loop
  Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("DemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("LegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("TrueLegendaryDemonHeart",1,"Nop")
	TNT1 A 0 A_JumpIfInventory("NemesisDemonHeart",1,"Nop")
	TNT1 A 0 A_PlaySound("NDemonHeart/Pickup")
	TNT1 A 0 ACS_NamedExecute("NemesisDemonHeartScript",0)
	Stop
  Use:
	TNT1 A 0
	TNT1 A 0 A_Print("The Nemesis Heart only activates at low health!")
	Fail
  Nop:
	TNT1 A 1
	Fail
  }
}

ACTOR NemesisSuperSphereFIX : NemesisSuperSphere 30443 { }
ACTOR  NemesisSuperSphereQuiet : NemesisSuperSphere
{
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.ALWAYSPICKUP
}

ACTOR NemesisSuperSphereSpawner : RandomSpawner Replaces NemesisSuperSphere
{
DropItem "NemesisSuperSphereFIX", 256, 70
DropItem "NemesisDemonHeart", 256, 30
}