The bug is that Trinity is counting items in protected slots twice (once for being a protected slot, a second time for the actual item in it) when checking the amount of free bag slots left.
To fix it (in Trinity 1.9.1 at least), open
...\Plugins\Trinity\Items\ItemHandling.cs and look for that code around line 989 (at the end of the file)
Code:
// Map out all the items already in the backpack
foreach (ACDItem item in ZetaDia.Me.Inventory.Backpack)
{
if (!item.IsValid)
continue;
int inventoryRow = item.InventoryRow;
int inventoryColumn = item.InventoryColumn;
// Mark this slot as not-free
BackpackSlotBlocked[inventoryColumn, inventoryRow] = true;
freeBagSlots--;
// Try and reliably find out if this is a two slot item or not
if (item.IsTwoSquareItem && inventoryRow < 5)
{
BackpackSlotBlocked[inventoryColumn, inventoryRow + 1] = true;
freeBagSlots--;
}
}
And replace it by this:
Code:
// Map out all the items already in the backpack
foreach (ACDItem item in ZetaDia.Me.Inventory.Backpack)
{
if (!item.IsValid)
continue;
int inventoryRow = item.InventoryRow;
int inventoryColumn = item.InventoryColumn;
// Mark this slot as not-free
if (!BackpackSlotBlocked[inventoryColumn, inventoryRow])
{
freeBagSlots--;
BackpackSlotBlocked[inventoryColumn, inventoryRow] = true;
// Try and reliably find out if this is a two slot item or not
if (item.IsTwoSquareItem && inventoryRow < 5 && !BackpackSlotBlocked[inventoryColumn, inventoryRow + 1])
{
freeBagSlots--;
BackpackSlotBlocked[inventoryColumn, inventoryRow + 1] = true;
}
}
}
Or you can just download my version of the file to replace it if that's easier for you (again, only tested in Trinity 1.9.1).
Also if anyone already has everything setup to send a merge request to rrrix, feel free to do it (Edit: finally figured that Git stuff, so sent a merge request for the changes)