2.3.4
The one that fixes many, many bugs.
Arc Inventory 2.3.4 supports 5.2, 5.3, and 5.4.
Core
- Improved the replication of slots
- Removed the NAMED_ITEM_SLOT concept, and improved equality checks between item slots
- Re-Added the "Default Item Stack Class" to the Developer Settings. This will be the Item Stack Class chosen when generating items by default. It can be overriden in many places
- Improved Query Functions in the Item Stack Base
- Added Query modes to match Item Definitions
- Added "Default Item Stack" for Item Definitions to the ModularBPFL. This lets you get an item stack that is not replicated that can be used as a default version of that itemstack, similar to a CDO.
- Added helper methods for quickly adding items to inventory.
- Added "Exact Item Stack" inventory queries. This is mostly useful for finding all slots an item is in.
- Added the ability to specify the owner of a newly generated ItemStack in
UArcInventoryModularBPFL::QuickGenerateModularItem
, saving an object duplication if you provide the owner of the inventory the item will be placed into if the item is to be instantly placed into an inventory. - Added the ability to get items from the inventory even if the item is pending kill
Inventory
- Fixed Modular Inventory calling the incorrect processor's OnRep functions when replicating
- Fixed Processors RPCs not working
- Fixed various instances of Processors not being resolved correctly when loading (Instanced Subobject woes)
- Improved Pre-Process Item Swap, and used it in more places. You can now take complete control over item swapping for specific items in a processor
- Added bulk item slot creation and removal, which invokes the Inventory Update event once for all the slots added in bulk
- Batched Callbacks during slot replication so that they all happen at the end of the replication frame. Ensure we only call one of each callback.
- Added an optional context tag for RemoveAllItemsFromInventory
- Cleaned up some issues around Item Slot Generations (NOTE: Item Slot Generations will be removed in a future version)
- Added verbose inventory logging around adding and removing items to the inventory.
- Added a "Contains Item Stack" function
- Added a runtime "AddInventoryProcessor()" function.
- Optimized LootItem() and allowed processors to opt into being considered for looting. This dramatically increases performance with many processors that do not score item slots for LootItem.
- Added sorting of Processors for ProcessItemSwap, so that users have better control over which processors go first when deciding how to put items into the inventory.
- Modular Inventory Events are now split based on the modular inventory event tag. In C++ you will need to bind to the specific tag's event. There is a static event that catches all tags. This allows for optimization reducing the number of callbacks per tag. Note: This is the first part of a major refactor of the event system.
Active Processor
- Fixed the double activate Bug
- Reworked the OnActive event. It is now called regardless of an ActiveAbilityInfo on the item, and is called more reliably on the client in network relevancy scenarios
- Added a behavior toggle for what to do if an item that is currently active is removed.
Equipment Processor
- Fixed some unreliability in the OnEquipped event not being fired in relevancy scenarios
Item Stack
- Added and replicated OnStatTag changed events
- Added Loose Item Tags that are replicated. You can now custom tag items.
UI
- Item Cards now have an Item Slot in addition to the item stack. This is largely optional, but helps when implementing widgets that may have default values