//This is here so any "non-canon" items will be replaced.

ACTOR TempPlasmaRifle : CustomInventory replaces PlasmaRifle   
{
    Inventory.PickupMessage "[Marston Arms RPG-2090 (The Toolbox)] [Class: Projectile Weapon, Slot 5]"
	+INVENTORY.AUTOACTIVATE
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 128
	DropItem TSPPistolAmmo 128
	DropItem TSPPistolAmmo 128
	DropItem AmmoBoxAmmo 255
	DropItem AmmoBoxAmmo 255
	DropItem AmmoBoxAmmo 255
	DropItem HellFireShellThrown 128
	DropItem HellFireShellThrown 128
	DropItem ElectricShellThrown 128
	DropItem ElectricShellThrown 128
	DropItem PoisonShellThrown 128
	DropItem PoisonShellThrown 128
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 1
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_NoBlocking
	  TNT1 A 1 A_GiveInventory("ItemAlreadySpawned",1)
	  Goto Spawn2
	Spawn2:
      RNLP A -1
	  Loop
	Pickup:
	  TNT1 A 0 A_JumpIfInventory("IsMel",1,"MelPickup")
	  TNT1 A 0 A_JumpIfInventory("IsVexler",1,"MelPickup")
	  Fail
	VexlerPickup:
	  TNT1 A 0 A_JumpIfInventory("MelToolbox", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelToolbox", 1)
	  TNT1 A 0 A_GiveInventory("ToolboxAmmo", 10)
	  TNT1 A 0 A_GiveInventory("ToolBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	MelPickup:
	  TNT1 A 0 A_JumpIfInventory("MelToolbox", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelToolbox", 1)
	  TNT1 A 0 A_GiveInventory("ToolboxAmmo", 10)
	  TNT1 A 0 A_GiveInventory("ToolBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	AmmoCheck:
      TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PickupFail")
	  TNT1 A 0 A_JumpIfInventory("ToolboxAmmo", 0, "PickupFail")
	  TNT1 A 0 A_GiveInventory("ToolBoxAmmo", 10)
	  Stop
	PretendPickupFail:
	  TNT1 A 0 ACS_ExecuteAlways(857,0,17)
      DCBP A 1
      Fail
	PickupFail:
      RNLP A 1
      Fail
	}
}

ACTOR TempBFG9000 : CustomInventory replaces BFG9000
{
    Inventory.PickupMessage "[Marston Arms RPG-2090 (The Toolbox)] [Class: Projectile Weapon, Slot 5]"
	+INVENTORY.AUTOACTIVATE
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 128
	DropItem ToolboxAmmo 128
	DropItem TSPPistolAmmo 255
	DropItem TSPPistolAmmo 128
	DropItem TSPPistolAmmo 128
	DropItem AmmoBoxAmmo 255
	DropItem AmmoBoxAmmo 255
	DropItem AmmoBoxAmmo 255
	DropItem AmmoBoxAmmo 255
	DropItem HellFireShellThrown 200
	DropItem HellFireShellThrown 128
	DropItem ElectricShellThrown 200
	DropItem ElectricShellThrown 128
	DropItem PoisonShellThrown 200
	DropItem PoisonShellThrown 128
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 1
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_JumpIfInventory("ItemAlreadySpawned",1,"Spawn2")
	  TNT1 A 1 A_NoBlocking
	  TNT1 A 1 A_GiveInventory("ItemAlreadySpawned",1)
	  Goto Spawn2
	Spawn2:
      RNLP A -1
	  Loop
	Pickup:
	  TNT1 A 0 A_JumpIfInventory("IsMel",1,"MelPickup")
	  TNT1 A 0 A_JumpIfInventory("IsVexler",1,"MelPickup")
	  Fail
	VexlerPickup:
	  TNT1 A 0 A_JumpIfInventory("MelToolbox", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelToolbox", 1)
	  TNT1 A 0 A_GiveInventory("ToolboxAmmo", 10)
	  TNT1 A 0 A_GiveInventory("ToolBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	MelPickup:
	  TNT1 A 0 A_JumpIfInventory("MelToolbox", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelToolbox", 1)
	  TNT1 A 0 A_GiveInventory("ToolboxAmmo", 10)
	  TNT1 A 0 A_GiveInventory("ToolBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	AmmoCheck:
      TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PickupFail")
	  TNT1 A 0 A_JumpIfInventory("ToolboxAmmo", 0, "PickupFail")
	  TNT1 A 0 A_GiveInventory("ToolBoxAmmo", 10)
	  Stop
	PretendPickupFail:
	  TNT1 A 0 ACS_ExecuteAlways(857,0,17)
      DCBP A 1
      Fail
	PickupFail:
      RNLP A 1
      Fail
	}
}

ACTOR TempChainsaw replaces Chainsaw
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("MessyShellSpawner", 1,0)
		TNT1 A 0 A_SpawnItem("TSPPistolAmmo", 1,0)
		Stop
	}
}

ACTOR TempCellAmmoSpawn replaces Cell
{
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 128
	DropItem ToolboxAmmo 128
	DropItem TSPPistolAmmo 255
	DropItem TSPPistolAmmo 128
	DropItem TSPPistolAmmo 128
	DropItem HellFireShellThrown 128
	DropItem HellFireShellThrown 128
	DropItem ElectricShellThrown 128
	DropItem ElectricShellThrown 128
	DropItem PoisonShellThrown 128
	DropItem PoisonShellThrown 128
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("ToolboxRocketBox",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 1 A_NoBlocking
		Stop
	}
}

ACTOR TempCellAmmoSpawn2 replaces CellPack
{
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 255
	DropItem ToolboxAmmo 128
	DropItem ToolboxAmmo 128
	DropItem TSPPistolAmmo 255
	DropItem TSPPistolAmmo 128
	DropItem TSPPistolAmmo 128
	DropItem HellFireShellThrown 200
	DropItem HellFireShellThrown 128
	DropItem ElectricShellThrown 200
	DropItem ElectricShellThrown 128
	DropItem PoisonShellThrown 200
	DropItem PoisonShellThrown 128
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("ToolboxRocketBox",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 1 A_NoBlocking
		Stop
	}
}