ItemTypes - MSUTeam/MSU GitHub Wiki

Item Types

MSU provides functions to safely add a new ItemType to the game, and to modify the ItemType of items. It also allows adding names to ItemTypes to display in tooltips. For example, you could add a new Cultist item type and have it show "Cultist Item" in the tooltips of relevant items to help the user identify such items.

Create a new ItemType

img-cultist-item
::Const.Items.addNewItemType( _itemType, _name = "" )
// _itemType and _name are strings

itemType will become a key in the ::Const.Items.ItemType table.
_name if not empty will be used in the expanded tooltips of items with this item type to identify their types.

::Const.Items.addNewItemType( "Cultist", _name = "Cultist Item" )

The above code will create a new ItemType called Cultist which can then be added to items via <item>.addItemType(::Const.Items.ItemType.Cultist) and will show up as "Cultist Item" under the name of the item in its tooltip.

Get an ItemType's name

::Const.Items.getItemTypeName( _itemType )
// _itemType is an ItemType in the ::Const.Items.ItemType table

Returns the name of the given _itemType. Throws an exception if _itemType is not a valid ItemType.

Add an item type to an item

There are two methods of doing this. The recommended method is to use the create() function of the item to set its this.m.ItemType. For example:

this.m.ItemType = ::Const.Items.ItemType.OneHanded | ::Const.Items.ItemType.Cultist;

Alternatively, the following function can be used after the item has been created:

<item>.addItemType( _t )
// _t is a key in ::Const.Items.ItemType

The above function adds the given ItemType to the item.

Set the item type of an item

<item>.setItemType( _t )
// _t is an ItemType in the ::Const.Items.ItemType table

Sets the this.m.ItemType of the item to _t.

Check the item type of an item

<item>.isItemType( _t, _any = true, _only = false )
// _t is a key in ::Const.Items.ItemType
// _any and _only are booleans

MSU hooks the vanilla isItemType function to expand its functionality.
_t can be a list of | separated keys as well.
If _any and not _only returns true if _t is any of the types in this.m.ItemType.
If _any and _only, returns true if this.m.ItemType has no types that aren't in _t.
If not _any and not _only, returns true if all of the types in _t are in this.m.ItemType.
If not _any and _only, return true if _t == this.m.ItemType

Remove an item type from an item

<item>.removeItemType( _t )
// _t is an ItemType in the ::Const.Items.ItemType table

Removes _t from the ItemType of this item. Throws ::MSU.Exception.KeyNotFound if any of the item types in _t are not present in the item.

⚠️ **GitHub.com Fallback** ⚠️