Actor AllMapOnlyOnce : DnD_Boolean { }

Actor AllMapGiver : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_GiveInventory("Allmap", 1)
			TNT1 A 0 A_GiveInventory("AllMapOnlyOnce", 1)
		Stop
	}
}

Actor BackpackCounter : Ammo
{
	inventory.amount 1
	inventory.maxamount 55 //DND_MAX_BACKPACK
	ammo.backpackamount 0
	ammo.backpackmaxamount 55 //DND_MAX_BACKPACK
	+IGNORESKILL
}

Actor NewInfrared : Infrared replaces Infrared {
	inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Infrared!\c-"
	inventory.pickupsound "items/infraredpick"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Chest Dropping Item")
			TNT1 A 0 ACS_NamedExecuteAlways("Dnd Pickup Setup")
		Goto Super::Spawn
	}
}

Actor NewBackPack : CustomInventory {
	States {
		Spawn:
			BPAK A -1
		Stop
		Pickup: // check success cond moved below
			TNT1 A 0 ACS_ExecuteAlways(996, 0, 0)
		Stop
	}
}

Actor Backpack_MP : DnD_SharedItem replaces Backpack {
	States
	{
		Spawn:
			// the delay is needed for the tid to initialize
			BPAK A 1 NoDelay ACS_NamedExecuteAlways("DND Shared Item Init", 0, SHI_BACKPACK)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Chest Dropping Item", 0, 2)
			BPAK A 34 ACS_NamedExecuteAlways("DnD Init Shared Translation", 0)
			TNT1 A 0 Thing_SetSpecial(0, 226, DND_SHARED_ITEM_SCRIPT, 0, tid)
		Idle:
		IdlePicked:
			BPAK A -1
		Stop
	}
}

Actor Backpack_SP : CustomInventory {
	inventory.pickupmessage "\ccItem Pickup   : \c[Y5]Backpack\c-"
	inventory.pickupsound "Items/backpack"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Chest Dropping Item", 0, 2)
			BPAK A -1
		Stop
		IdlePicked:
			BPAK A -1
		Stop
		Pickup:
			TNT1 A 0 A_GiveInventory("NewBackpack", 1)
		Stop
	}
}

Actor BackpackPickMSG : CustomInventory {
	States {
		Pickup:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Message Logger", 0, 3, SHI_BACKPACK)
			TNT1 A 0 A_PlaySound("Items/backpack", 6)
			TNT1 A 0 A_SetBlend("25 99 25", 0.6, 17)
		Stop
	}
}


Actor NewAllMap : CustomInventory replaces Allmap {
    inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Area Map!\c-"
	inventory.pickupsound "items/allmap"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Chest Dropping Item")
			TNT1 A 0 ACS_NamedExecuteAlways("Dnd Pickup Setup")
		SpawnIdle:
			PMAP AAAAABBBBBCCCCCDDDDD 1 Bright A_SpawnItemEx("AllMapFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		Loop
		Pickup:
			TNT1 A 0 A_GiveInventory("Allmap")
			TNT1 A 0 A_GiveInventory("ExtendedScanner")
		Stop
	}
}

// ty qcde
Actor ExtendedScanner : Scanner {
	Inventory.MaxAmount 0
	Powerup.Duration 0x7FFFFFFA
	+Inventory.AUTOACTIVATE
}

Actor EvilSphere : Powerupgiver replaces BlurSphere
{
 inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Evil Sphere! Monsters flee from you!\c-"
 Powerup.Color GoldMap
 inventory.maxamount 0
 inventory.pickupsound "items/evilsphere"
 powerup.type "Frightener"
 powerup.duration 1400
 Powerup.Color "53 53 2F", 0.325
 +AUTOACTIVATE
 +INVENTORY.ALWAYSPICKUP
 +COUNTITEM
 States
 {
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("Dnd Pickup Setup")
		TNT1 A 0 ACS_NamedExecuteAlways("DnD Chest Dropping Item")
	SpawnLoop:
		HELS AAAABBBBCCCCDDDD 1 Bright A_SpawnItemEx("EvilSphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
	Loop
 }
}

ACTOR NewBerserk : CustomInventory replaces Berserk
{
  +COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Berserk!\c-"
  Inventory.PickupSound "misc/p_pkup"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Chest Dropping Item")
	TNT1 A 0 ACS_NamedExecuteAlways("Dnd Pickup Setup")
  SpawnIdle:
    XNSR A 1 A_SpawnItemEx("AllMapFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
    Loop
  Pickup:
    TNT1 A 0 A_GiveInventory("PowerStrength")
    TNT1 A 0 ACS_NamedExecuteAlways("DnD Health Pickup", 0, 0, 3)
  Stop
  }
}

// now its not so much better but we had to draw the line!
Actor Invulnerable_Better : PowerProtection {
	damagefactor "normal", 1.0
	Powerup.Duration -30
}

Actor InvulnerabilitySphere2 : InvulnerabilitySphere replaces InvulnerabilitySphere
{
	inventory.pickupsound "items/invul"
	Inventory.PickupAnnouncerEntry ""
	inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Protection 90%!\c-"
	Powerup.Type "Invulnerable_Better"
	Powerup.Color "2F 2F 2F", 0.475
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("Dnd Pickup Setup")
		SpawnLoop:
			PINV AAAAABBBBBCCCCCDDDDDEEEEEFFFFFEEEEEDDDDDCCCCCBBBBB 1 Bright A_SpawnItemEx("InvulnerabilitySphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		Loop
	}
}

ACTOR RadSuit2 : Radsuit replaces Radsuit
{
	inventory.pickupsound "items/radsuit"
	inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Radsuit\c-"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Chest Dropping Item")
			TNT1 A 0 ACS_NamedExecuteAlways("Dnd Pickup Setup")
		SpawnIdle:
			SUIT A 1 Bright A_SpawnItemEx("InvulnerabilitySphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		Loop
	}
}

Actor SoulSphere2 : CustomInventory replaces SoulSphere
{
	Inventory.PickupAnnouncerEntry ""
	inventory.pickupsound "items/soulsphere"
    SpawnID 25
    +COUNTITEM
    inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Soulsphere! 100 health!\c-"
    States
    {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("Dnd Pickup Setup")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Chest Dropping Item")
		SpawnLoop:
		    SOUL AAAAAABBBBBBCCCCCCDDDDDDCCCCCCBBBBBB 1 Bright A_SpawnItemEx("SoulSphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		Loop
		Pickup:
			TNT1 A 0 A_JumpIfInventory("TaltosUp", 1, "Failed")
		    TNT1 A 0 ACS_NamedExecuteAlways("DnD Health Pickup", 0, 100, 1)
		Stop
		Failed:
			TNT1 A 0
		Stop
  }
}

Actor MegaSphere2 : CustomInventory {
	Inventory.PickupAnnouncerEntry ""
	inventory.pickupsound "items/megasphere"
	SpawnID 132
	+COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Megasphere! 200% health!\c-"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("Dnd Pickup Setup")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Chest Dropping Item")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Drop Random Basic Armor", 0, -2, 1)
		SpawnLoop:
			MEGA AAAAAABBBBBBCCCCCCDDDDDD 1 Bright A_SpawnItemEx("MegaSphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		Loop
		Pickup:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Health Pickup", 0, 200, 2)
		Stop
	}	
}

Actor UberSphere : CustomInventory {
	inventory.pickupmessage "\ccPowerup pickup: \c[Y5]Uber Sphere! 300% health!\c-"
	inventory.pickupsound "items/ubersphere"
	+COUNTITEM
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("Dnd Pickup Setup")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Chest Dropping Item")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Drop Random Basic Armor", 0, -3, 1)
		SpawnLoop:
			CARN AAAAABBBBBCCCCCDDDDD 1 Bright A_SpawnItemEx("UberSphereFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, SXF_CLIENTSIDE, 0)
		loop
		Pickup: 
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Health Pickup", 0, 300, 2)
		stop
	}
}

Actor Megaspherespawner : Randomspawner replaces MegaSphere
{
	DropItem "MegaSphere2", 255, 16
	DropItem "UberSphere", 255, 4
}