max stacks

enforce max stacks in script calls
This commit is contained in:
darkfire006 2021-09-29 02:24:07 -05:00
parent bdebdd8f7f
commit 7ead411d0a

View File

@ -14,19 +14,23 @@
Case "give" Case "give"
Dim amount As Integer = 1 Dim amount As Integer = 1
Dim ItemID As String = argument Dim ItemID As String = argument
Dim item As Item
If argument.Contains(",") = True Then If argument.Contains(",") = True Then
amount = int(argument.GetSplit(1)) amount = int(argument.GetSplit(1))
ItemID = argument.GetSplit(0) ItemID = argument.GetSplit(0)
End If End If
If ScriptConversion.IsArithmeticExpression(ItemID) = False Then If ScriptConversion.IsArithmeticExpression(ItemID) = False Then
Dim item As Item = Item.GetItemByName(ItemID) item = Item.GetItemByName(ItemID)
If Not item Is Nothing Then
Core.Player.Inventory.AddItem(item.ID, amount)
End If
Else Else
Core.Player.Inventory.AddItem(int(ItemID), amount) item = Item.GetItemByID(int(ItemID))
End If
If Not item Is Nothing Then
If item.MaxStack < Core.Player.Inventory.GetItemAmount(item.ID) + amount Then
amount = int(item.MaxStack - Core.Player.Inventory.GetItemAmount(item.ID)).Clamp(0, 999)
End If
Core.Player.Inventory.AddItem(item.ID, amount)
End If End If
Case "remove" Case "remove"
Dim amount As Integer = 1 Dim amount As Integer = 1
@ -72,26 +76,26 @@
End If End If
Case "messagegive" Case "messagegive"
Dim ItemID As String = argument.GetSplit(0) Dim ItemID As String = argument.GetSplit(0)
Dim Item As Item = Nothing Dim item As Item
If ScriptConversion.IsArithmeticExpression(ItemID) = False Then If ScriptConversion.IsArithmeticExpression(ItemID) = False Then
Item = Item.GetItemByName(ItemID) item = Item.GetItemByName(ItemID)
Else Else
Item = Item.GetItemByID(int(ItemID)) item = Item.GetItemByID(int(ItemID))
End If End If
Dim Amount As Integer = int(argument.GetSplit(1)) Dim Amount As Integer = int(argument.GetSplit(1))
If Not Item Is Nothing Then If Not item Is Nothing Then
Dim receiveString As String = "Received the~" & Item.Name & ".*" Dim receiveString As String = "Received the~" & item.Name & ".*"
If Amount > 1 Then If Amount > 1 Then
receiveString = "Received " & Amount & "~" & Item.PluralName & ".*" receiveString = "Received " & Amount & "~" & item.PluralName & ".*"
End If End If
SoundManager.PlaySound("Receive_Item", True) SoundManager.PlaySound("Receive_Item", True)
Screen.TextBox.reDelay = 0.0F Screen.TextBox.reDelay = 0.0F
Screen.TextBox.TextColor = TextBox.PlayerColor Screen.TextBox.TextColor = TextBox.PlayerColor
Screen.TextBox.Show(receiveString & Core.Player.Inventory.GetMessageReceive(Item, Amount), {}) Screen.TextBox.Show(receiveString & Core.Player.Inventory.GetMessageReceive(item, Amount), {})
CanContinue = False CanContinue = False
End If End If