# new RezInventory()
Manages a collection of slots that can hold items.
An inventory is a container system that organizes items into typed slots. Each slot can accept items of a specific type and may have capacity limits. Inventories can be owned by actors, enabling equipment systems with effects.
Key features:
- Typed Slots: Each slot accepts only items of a matching type
- Capacity: Slots can have size limits based on item sizes
- Effects: Items can apply effects to the inventory's owner when inserted
- Events: Triggers events on insert/remove for items, slots, and inventory
Slots are defined as a binding list on the slots attribute where each
binding key (prefix) is the slot position name and the value is a reference
to a @slot element that defines the slot's type configuration. Multiple
positions can share the same slot type definition.
Define in Rez:
@inventory player_inv {
slots: [weapon: #s_weapon, armor: #s_armor]
initial_weapon: [#item_sword]
}
Example
Add an item at runtime
const inv = $("player_inv");
if(inv.canAddItemForSlot("weapon", "item_axe").result) {
inv.addItemToSlot("weapon", "item_axe");
}
Extends
Methods
# static addItemToSlot(slotBinding, itemId)
adds the given item to the given slot, notifying inventory, slot & item and applying effects
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
# static addSlot(slotBinding, slotId)
add a new slot to the inventory
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
the binding prefix for the slot position |
slotId |
string
|
the slot element id (unused but kept for API clarity) |
# static appendItemToSlot(slotBinding, itemId)
appends the given item to the given slot
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
# static appendToSlot(slotBinding, itemOrItems)
add either a single item_id or an array of item_ids to the slot
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemOrItems |
string
|
array
|
either an item_id or array of item_id's to append to the slot |
# static applyEffects(slotBinding, itemId) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
whether the effect was applied
boolean
# static canAddItemForSlot(slotBinding, itemId) → {RezDecision}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
decision object with result
# static canRemoveItemFromSlot(slotBinding, itemId) → {RezDecision}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
decision object with result
# static clearSlot(slotBinding)
remove all items from the given slot, removing any effects granted by those items
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
# static containsItem(itemId) → {string|undefined}
Parameters:
| Name | Type | Description |
|---|---|---|
itemId |
string
|
binding prefix of the slot containing the item, or undefined
string
|
undefined
# static countItemsInSlot(slotBinding) → {integer}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
number of items in the given slot
integer
# static elementInitializer()
called as part of the init process this creates the initial inventory slots
# static getFirstItemForSlot(slotBinding) → {string}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
id of first item in the slot
string
# static getItemsForSlot(slotBinding) → {array}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
contents of the specified slot
array
# static getSlot(slotBinding) → {object}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
the binding prefix identifying the slot position |
reference to the slot element for this binding, or throws if the binding does not exist in this inventory.
object
# static itemFitsInSlot(slotBinding, itemId) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
true if the item will fit with any other contents of the slot
boolean
# static removeEffects(slotBinding, itemId)
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
# static removeItemFromSlot(slotBinding, itemId)
removes the specified item from the specified inventory slot
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
# static setItemForSlot(slotBinding, itemId)
replaces any existing item content for the slot with this item
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
# static setItemsForSlot(slotBinding, items)
replaces any existing item content for the slot with these items
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
items |
array
|
array of item ids |
# static setSlot(slotBinding, itemIds)
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemIds |
array
|
array of item id's |
# static shouldApplyEffects(slotBinding) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
whether effects should be applied for this slot
boolean
# static slotAcceptsItem(slotBinding, itemId) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
true if the given item has a type that this slot accepts
boolean
# static slotContainsItem(slotBinding, itemId) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
|
itemId |
string
|
true if the item_id is in the slot
boolean
# static slotIsOccupied(slotBinding) → {boolean}
Parameters:
| Name | Type | Description |
|---|---|---|
slotBinding |
string
|
true if there is at least one item in the slot
boolean