''' ''' Represents the player's inventory. ''' Public Class PlayerInventory Inherits List(Of ItemContainer) ''' ''' A secure class to contain ItemID and Amount. ''' Class ItemContainer Private _itemID As Integer Private _amount As Integer Public Property ItemID() As Integer Get Return Me._itemID End Get Set(value As Integer) Me._itemID = value End Set End Property Public Property Amount() As Integer Get Return Me._amount End Get Set(value As Integer) Me._amount = value End Set End Property Public Sub New(ByVal ItemID As Integer, ByVal Amount As Integer) Me.ItemID = ItemID Me.Amount = Amount End Sub End Class ''' ''' Returns a character that represents the item's pocket icon. ''' Public Function GetItemPocketChar(ByVal Item As Item) As String Select Case Item.ItemType Case Items.ItemTypes.Standard Return "€" Case Items.ItemTypes.KeyItems Return "№" Case Items.ItemTypes.Machines Return "™" Case Items.ItemTypes.Mail Return "←" Case Items.ItemTypes.Medicine Return "↑" Case Items.ItemTypes.Plants Return "→" Case Items.ItemTypes.Pokéballs Return "↓" Case Items.ItemTypes.BattleItems Return "↔" End Select Return "" End Function ''' ''' Adds items to the inventory. ''' ''' The ID of the item. ''' Amount of items to add. Public Sub AddItem(ByVal ID As Integer, ByVal Amount As Integer) Dim newItem As Item = P3D.Item.GetItemByID(ID) For Each c As ItemContainer In Me If c.ItemID = ID Then c.Amount += Amount Exit Sub End If Next Me.Add(New ItemContainer(ID, Amount)) End Sub ''' ''' Removes items from the inventory. ''' ''' The ID of the item to remove. ''' The amount of items to remove. Public Sub RemoveItem(ByVal ID As Integer, ByVal Amount As Integer) If Amount > 0 Then For Each c As ItemContainer In Me If c.ItemID = ID Then If c.Amount - Amount <= 0 Then Me.Remove(c) Exit Sub Else c.Amount -= Amount End If End If Next End If End Sub ''' ''' Removes all items of an ID from the inventory. ''' ''' The ID of the item. Public Sub RemoveItem(ByVal ID As Integer) Dim Amount As Integer = Me.GetItemAmount(ID) If Amount > 0 Then Me.RemoveItem(ID, Amount) End If End Sub ''' ''' Returns the count of the item in the inventory. ''' ''' The ID of the item to be counted. Public Function GetItemAmount(ByVal ID As Integer) As Integer For Each c As ItemContainer In Me If c.ItemID = ID Then Return c.Amount End If Next Return 0 End Function ''' ''' If the player has the Running Shoes in their inventory. ''' Public ReadOnly Property HasRunningShoes() As Boolean Get If Core.Player.SandBoxMode = True Or GameController.IS_DEBUG_ACTIVE = True Then Return True Else If Me.GetItemAmount(78) > 0 Then Return True End If End If Return False End Get End Property ''' ''' If the player has the Mega Bracelet in their inventory. ''' Public ReadOnly Property HasMegaBracelet() As Boolean Get If Me.GetItemAmount(576) > 0 Then Return True End If Return False End Get End Property ''' ''' Returns a message that displays the event of putting an item into the inventory. ''' ''' The Item to store in the inventory. ''' The amount. Public Function GetMessageReceive(ByVal Item As Item, ByVal Amount As Integer) As String Dim Message As String = "" If Amount = 1 Then Message = Core.Player.Name & " stored it in the~" & Core.Player.Inventory.GetItemPocketChar(Item) & Item.ItemType.ToString() & " pocket." Else Message = Core.Player.Name & " stored them~in the " & Core.Player.Inventory.GetItemPocketChar(Item) & Item.ItemType.ToString() & " pocket." End If Return Message End Function End Class