Class

RezInventory

RezInventory()

Constructor

# 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]
}

View Source rez_inventory.js, line 5

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

View Source rez_inventory.js, line 315

# 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)

View Source rez_inventory.js, line 63

# static appendItemToSlot(slotBinding, itemId)

appends the given item to the given slot

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 135

# 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

View Source rez_inventory.js, line 146

# static applyEffects(slotBinding, itemId) → {boolean}

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 358

whether the effect was applied

boolean

# static canAddItemForSlot(slotBinding, itemId) → {RezDecision}

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 258

decision object with result

RezDecision

# static canRemoveItemFromSlot(slotBinding, itemId) → {RezDecision}

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 288

decision object with result

RezDecision

# static clearSlot(slotBinding)

remove all items from the given slot, removing any effects granted by those items

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 439

# static containsItem(itemId) → {string|undefined}

Parameters:
Name Type Description
itemId string

View Source rez_inventory.js, line 206

binding prefix of the slot containing the item, or undefined

string | undefined

# static countItemsInSlot(slotBinding) → {integer}

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 185

number of items in the given slot

integer

# static elementInitializer()

called as part of the init process this creates the initial inventory slots

View Source rez_inventory.js, line 45

# static getFirstItemForSlot(slotBinding) → {string}

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 93

id of first item in the slot

string

# static getItemsForSlot(slotBinding) → {array}

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 103

contents of the specified slot

array

# static getSlot(slotBinding) → {object}

Parameters:
Name Type Description
slotBinding string

the binding prefix identifying the slot position

View Source rez_inventory.js, line 78

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

View Source rez_inventory.js, line 219

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

View Source rez_inventory.js, line 417

# static removeItemFromSlot(slotBinding, itemId)

removes the specified item from the specified inventory slot

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 383

# static setItemForSlot(slotBinding, itemId)

replaces any existing item content for the slot with this item

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 163

# 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

View Source rez_inventory.js, line 174

# static setSlot(slotBinding, itemIds)

Parameters:
Name Type Description
slotBinding string
itemIds array

array of item id's

View Source rez_inventory.js, line 124

# static shouldApplyEffects(slotBinding) → {boolean}

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 341

whether effects should be applied for this slot

boolean

# static slotAcceptsItem(slotBinding, itemId) → {boolean}

Parameters:
Name Type Description
slotBinding string
itemId string

View Source rez_inventory.js, line 243

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

View Source rez_inventory.js, line 195

true if the item_id is in the slot

boolean

# static slotIsOccupied(slotBinding) → {boolean}

Parameters:
Name Type Description
slotBinding string

View Source rez_inventory.js, line 114

true if there is at least one item in the slot

boolean