/* AMMO NOTES

* IP Freely can not be balanced by regular ammo limits all other classes have, thus we introduce a new method.
* I guess that doesn't have any issues since ammos are all given through custominventories and you do pick em up all the time anyway.

- Clips give 1-5 drunk missile ammo.
- Shells give 5-15 bazooka ammo.
- Rockets give  1-5 firebomb ammo.
- Cells give 20-60 split missile ammo and 1-5 flamewall ammo.

*/

ACTOR RottMissiles : Ammo
{
   Inventory.MaxAmount 50
   Ammo.BackpackAmount 5
   Ammo.BackpackMaxAmount 100
   +IGNORESKILL
}

ACTOR FBMissiles : Ammo
{
   Inventory.MaxAmount 25
   Ammo.BackpackAmount 1
   Ammo.BackpackMaxAmount 50
   +IGNORESKILL
}

ACTOR FWMissiles : Ammo
{
   Inventory.MaxAmount 10
   Ammo.BackpackAmount 1
   Ammo.BackpackMaxAmount 20
   +IGNORESKILL
}

ACTOR DMissiles : Ammo
{
   Inventory.MaxAmount 40
   Ammo.BackpackAmount 5
   Ammo.BackpackMaxAmount 80
   +IGNORESKILL
}

ACTOR SMissiles : Ammo
{
   Inventory.MaxAmount 60
   Ammo.BackpackAmount 20
   Ammo.BackpackMaxAmount 120
   +IGNORESKILL
}

ACTOR BMissiles : Ammo
{
   Inventory.MaxAmount 10
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 10
   +IGNORESKILL
}


actor Ammo1Small : CustomInventory replaces Clip// replaces Clip
{
    Inventory.PickupMessage "Picked up 10 rounds of Ammo 1."
    Inventory.PickupSound "ammo/bulletsmall"
    States
    {
      Spawn:
        AMSM A 20
        AMSM A 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_GiveInventory("Clip", 10)
        TNT1 A 0 A_JumpIfInventory("QuakeClass", 0, "PickupQuake")
        stop

      PickupFail:
        AMSM A 1
        fail

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 10)
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        stop

      PickupQuake:
        TNT1 A 0 A_GiveInventory("LavaNails", 2)
        stop
		
	  PickupRott:
		TNT1 A 0 A_JumpIfInventory("DMissiles", 0, "PickupFail")
	    TNT1 A 0 A_GiveInventory("DMissiles", 1)
		Stop
    }
}

actor Ammo1Big : CustomInventory replaces ClipBox// replaces ClipBox
{
    Inventory.PickupMessage "Picked up 50 rounds of Ammo 1."
    Inventory.PickupSound "ammo/bulletbig"
    States
    {
      Spawn:
        AMMB A 20
        AMMB A 20 BRIGHT
        loop

      Pickup:
	    TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_GiveInventory("Clip", 50)
        TNT1 A 0 A_JumpIfInventory("QuakeClass", 0, "PickupQuake")
        stop

      PickupFail:
        AMMB A 1
        fail

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 50)
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        stop

      PickupQuake:
        TNT1 A 0 A_GiveInventory("LavaNails", 12)
        stop
		
      PickupRott:
		TNT1 A 0 A_JumpIfInventory("Dmissiles", 0, "PickupFail")
	    TNT1 A 0 A_GiveInventory("DMissiles", 5)
	    Stop
    }
}

actor Ammo2Small : CustomInventory replaces Shell
{
    Inventory.PickupMessage "Picked up 4 rounds of Ammo 2."
    Inventory.PickupSound "ammo/shellsmall"
    States
    {
      Spawn:
        AMSM B 20
        AMSM B 20 BRIGHT
        loop

      Pickup:
	    TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_GiveInventory("Shell", 4)
        TNT1 A 0 A_JumpIfInventory("HexenClass", 1, "PickupHexen")
        TNT1 A 0 A_JumpIfInventory("WolfenClass", 1, "PickupWolfen")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_JumpIfInventory("AmmoShell", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("AmmoShell", 4)
        stop

      PickupWolfen:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 10)
        stop

      PickupHexen:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 4)
        stop

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("AmmoShell", 0, "PickupFail")
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        TNT1 A 1 A_GiveInventory("AmmoShell", 4)
        stop
		
      PickupRott:
	    TNT1 A 0 A_JumpIfInventory("RottMissiles", 0, "PickupFail")
		TNT1 A 0 A_GiveInventory("RottMissiles", 5)
	    Stop

      PickupFail:
        AMSM B 1
        fail
    }
}

Actor Ammo2FromShotty : CustomInventory // Added this
{
	Inventory.PickupMessage "Picked up 4 rounds of Ammo 2."
    Inventory.PickupSound "ammo/shellsmall"
	States
	{
		PickupRott:
	    TNT1 A 0 A_JumpIfInventory("RottMissiles", 0, "PickupFail")
		TNT1 A 0 A_GiveInventory("RottMissiles", 2)
	    Stop		
	}
}

actor Ammo2Big : CustomInventory replaces ShellBox
{
    Inventory.PickupMessage "Picked up 20 rounds of Ammo 2."
    Inventory.PickupSound "ammo/shellbig"
    States
    {
      Spawn:
        AMMB B 20
        AMMB B 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 1 A_GiveInventory("Shell", 20)
        TNT1 A 0 A_JumpIfInventory("HexenClass", 1, "PickupHexen")
        TNT1 A 0 A_JumpIfInventory("WolfenClass", 1, "PickupWolfen")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_JumpIfInventory("AmmoShell", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("AmmoShell", 20)
        stop

      PickupWolfen:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 50)
        stop

      PickupHexen:
        TNT1 A 0 A_JumpIfInventory("Clip", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Clip", 20)
        stop

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("AmmoShell", 0, "PickupFail")
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        TNT1 A 1 A_GiveInventory("AmmoShell", 20)
        stop
		
      PickupRott:
	    TNT1 A 0 A_JumpIfInventory("RottMissiles", 0, "PickupFail")
		TNT1 A 0 A_GiveInventory("RottMissiles", 15)
	    Stop	

      PickupFail:
        AMMB B 1
        fail
    }
}

actor Ammo3Small : CustomInventory replaces RocketAmmo// replaces RocketAmmo
{
    Inventory.PickupMessage "Picked up 2 rounds of Ammo 3."
    Inventory.PickupSound "ammo/rocketsmall"
    States
    {
      Spawn:
        AMSM C 20
        AMSM C 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("HexenClass", 1, "PickupHexen")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 1, "PickupMarathon")
        TNT1 A 0 A_JumpIfInventory("QuakeClass", 1, "PickupQuake")
        TNT1 A 0 A_GiveInventory("RocketAmmo", 2)
        stop


      PickupHexen:
        TNT1 A 0 A_JumpIfInventory("Cell", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Cell", 2)
        stop

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("RocketAmmo", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("RocketAmmo", 2)
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        stop

      PickupQuake:
        TNT1 A 0 A_GiveInventory("RocketAmmo", 5)
        TNT1 A 0 A_GiveInventory("ClusterRocketAmmo", 1)
        stop
		
	  PickupRott:
		TNT1 A 0 A_JumpIfInventory("FBMissiles", 0, "PickupFail")
		TNT1 A 0 A_giveInventory("FBMissiles", 1)
		Stop

      PickupFail:
        AMMB C 1
        fail
    }
}

actor Ammo3Big : CustomInventory replaces RocketBox// replaces RocketBox
{
    Inventory.PickupMessage "Picked up 6 rounds of Ammo 3."
    Inventory.PickupSound "ammo/rocketbig"
    States
    {
      Spawn:
        AMMB C 20
        AMMB C 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("HexenClass", 1, "PickupHexen")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 1, "PickupMarathon")
        TNT1 A 0 A_JumpIfInventory("QuakeClass", 1, "PickupQuake")
        TNT1 A 0 A_GiveInventory("RocketAmmo", 6)
        stop

      PickupHexen:
        TNT1 A 0 A_JumpIfInventory("Cell", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("Cell", 6)
        stop

      PickupMarathon:
        TNT1 A 0 A_JumpIfInventory("RocketAmmo", 0, "PickupFail")
        TNT1 A 0 A_GiveInventory("RocketAmmo", 6)
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        stop

      PickupQuake:
        TNT1 A 0 A_GiveInventory("RocketAmmo", 10)
        TNT1 A 0 A_GiveInventory("ClusterRocketAmmo", 2)
        stop
		
      PickupRott:
		TNT1 A 0 A_JumpIfInventory("FBMissiles", 0, "Pickupfail")
		TNT1 A 0 A_GiveInventory("FBMissiles", 4)
		Stop

      PickupFail:
        AMMB C 1
        fail
    }
}

actor Ammo4Small : CustomInventory replaces Cell// replaces Cell
{
    Inventory.PickupMessage "Picked up 20 rounds of Ammo 4."
    Inventory.PickupSound "ammo/plasmasmall"
    States
    {
      Spawn:
        AMSM D 20
        AMSM D 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("Cell", 0, "PickupFail")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_GiveInventory("Cell", 20)
        stop

      PickupFail:
        AMSM D 1
        fail

      PickupMarathon:
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        TNT1 A 1 A_GiveInventory("Cell", 20)
        stop
		
      PickupRott:
	    TNT1 A 0 A_JumpIfInventory("SMissiles", 0, "Check1")
		TNT1 A 0 A_JumpIfInventory("FWMissiles", 0, "Check2")
      RottSafe:
		TNT1 A 0 A_GiveInventory("SMissiles", 5)
		TNT1 A 0 A_GiveInventory("FWMissiles", 1)
	    Stop
	  Check1:
		TNT1 A 0 A_JumpIfInventory("FWMissiles", 0, "PickupFail")
		Goto RottSafe
	  Check2:
		TNT1 A 0 A_JumpIfInventory("SMissiles", 0, "PickupFail")
	    Goto RottSafe		
    }
}

actor Ammo4Big : CustomInventory replaces Cellpack// replaces Cellpack
{
    Inventory.PickupMessage "Picked up 100 rounds of Ammo 4."
    Inventory.PickupSound "ammo/plasmabig"
    States
    {
      Spawn:
        AMMB D 20
        AMMB D 20 BRIGHT
        loop

      Pickup:
		TNT1 A 0 A_JumpIfInventory("RottClass", 0, "PickupRott")
        TNT1 A 0 A_JumpIfInventory("Cell", 0, "PickupFail")
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 0, "PickupMarathon")
        TNT1 A 0 A_GiveInventory("Cell", 100)
        stop

      PickupFail:
        AMMB D 1
        fail

      PickupMarathon:
        TNT1 A 0 A_SetBlend("Green", 0.3, 3)
        TNT1 A 1 A_GiveInventory("Cell", 100)
        stop
	
      PickupRott:
	    TNT1 A 0 A_JumpIfInventory("SMissiles", 0, "Check1")
		TNT1 A 0 A_JumpIfInventory("FWMissiles", 0, "Check2")
      RottSafe:
		TNT1 A 0 A_GiveInventory("SMissiles", 20)
		TNT1 A 0 A_GiveInventory("FWMissiles", 5)
	    Stop
	  Check1:
		TNT1 A 0 A_JumpIfInventory("FWMissiles", 0, "PickupFail")
		Goto RottSafe
	  Check2:
		TNT1 A 0 A_JumpIfInventory("SMissiles", 0, "PickupFail")
	    Goto RottSafe	
    }
}

actor AmmoBackpack : CustomInventory replaces Backpack
{
    Inventory.PickupMessage "Picked up Ammo Expansion Pack."
    Inventory.PickupSound "nosoundforyoubitch"
    +COUNTITEM
    -INVENTORY.ALWAYSPICKUP
    States
    {
      Spawn:
        AMPK A 20
        AMPK A 20 BRIGHT
        loop

      Pickup:
        TNT1 A 0 A_JumpIfInventory("MarathonClass", 1, "PickupMarathon")
        TNT1 A 0 A_JumpIfInventory("HexenClass", 1, "PickupHexen")
        TNT1 A 0 A_JumpIfInventory("WolfenClass", 1, "PickupWolfen")
        TNT1 A 0 A_PlaySound("ammo/backpack")
        TNT1 A 1 A_GiveInventory("Backpack", 1)
        stop

      PickupWolfen:
        TNT1 A 0 A_PlaySound("ammo/backpack")
        TNT1 A 0 A_GiveInventory("Backpack", 1)
        TNT1 A 0 A_TakeInventory("AmmoShell", 8)
        TNT1 A 1 A_GiveInventory("Clip", 4)
        stop

      PickupHexen:
        TNT1 A 0 A_JumpIfInventory("PortKraterOfMight", 0, "PickupFail")
        TNT1 A 0 A_PlaySound("hexen/artiget")
        TNT1 A 1 A_GiveInventory("PortKraterOfMight", 1)
        stop

      PickupMarathon:
        TNT1 A 0 A_PlaySound("marathon/itemget")
        TNT1 A 0 A_SetBlend("Green", 0.4, 4)
        TNT1 A 1 A_GiveInventory("Backpack", 1)
        stop

      PickupFail:
        AMPK A 1 BRIGHT
        fail
    }
}