# 3.3.1

## Inventory Component

* Count is now revealed if ShowCount is set to true. This is automatically set, but can be changed by fragments. The random count fragment shows an example of this.
* A new template system has been introduced. [Documentation can be found here](https://varian.gitbook.io/varian-docs/inventoryframework/inventory-framework/systems/templates-for-inventory-and-containers)
* Added a new <mark style="color:red;">**PreItemRemoved**</mark> delegate
* Unique ID's are now global and never change when items move from one inventory to another. Once an item or container has received an ID, it will remain valid for as long as that item exists.
  * This is slightly experimental. The old system can be toggled through the runtime IFP project settings.
* <mark style="color:red;">**StartComponent**</mark> now calls numerous virtual functions. This can help projects inject custom logic into the inventory initialization process.

## Quality of Life

* Many functions inside the item asset are now virtual.
* The function library can now be overriden. Greatly improving a projects ability to override some of IFP's functionality without touching the source code.
  * Not all functions have been made virtual, but the most popular ones have been made virtual. More will be added when people ask for them.

<figure><img src="https://3072220171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FD9UVtAB4Tl9vRkQgcS0X%2Fuploads%2FUadVANfjQn5tfaksyh5a%2Fimage.png?alt=media&#x26;token=736b2ffe-7f2b-49f6-826c-d67727fbfc44" alt=""><figcaption></figcaption></figure>

## Editor

* The struct customization for containers and items have been improved and should now work no matter where the struct is, meaning the custom title and other utilities are no longer restricted to just the inventory component or some item assets.
* The item count variable is now revealed when an item is stackable and has no random count fragment assigned.

## Bug fixes

* <mark style="color:red;">**GetItemsPrice**</mark> had a faulty if else statement leading to all items being worth 0
* <mark style="color:red;">**AdjustContainerSize**</mark> was miscalculating items TileIndex so items were moving to wrong places
* <mark style="color:red;">**ItemMoved**</mark> was not returning the correct <mark style="color:purple;">**ItemIndex**</mark>
* Odd crash from containers tick event

## 3.3.1 fixes

* <mark style="color:red;">**GetContainerSettingsForSpawningItem**</mark> was not wiping the item widget reference.
* <mark style="color:red;">**GetItemsShapeWithContext**</mark> would unnecessarily validate the item, when it doesn't need to. This would cause <mark style="color:red;">**GetFirstAvailableContainerAndTile**</mark> to break only for grid containers
* Item instances were getting their ItemID assigned in the editor, causing a crash when opening a context menu in the blueprint.
