Skip to main content

Accessories

Apoli talks to three accessory frameworks, Trinkets, Accessories and Curios, through one bridge. The types below are the same whichever of them you have installed.

These types are registration-gated: they only exist when at least one accessory framework is loaded. On a server without one, a power that uses them fails to load.

The older trinket IDs are aliases, so packs written for the Apace types keep working.

Types

TypeKindAliasWhat it does
apoli:modify_accessory_slotsPowermodify_trinket_slot, modify_trinket_slotsAdds or removes accessory slots.
apoli:action_on_accessory_changePoweraction_on_trinket_changeReacts to equipping and unequipping.
apoli:prevent_accessory_equipPowerprevent_trinket_equipStops items going in.
apoli:prevent_accessory_unequipPowerprevent_trinket_unequipStops items coming out.
apoli:modify_accessoryEntity actionmodify_trinketActs on equipped accessories.
apoli:accessory_equipped_countEntity conditionequipped_trinket_countCounts what is worn.
apoli:accessory_slot_countEntity conditiontrinket_slot_countCounts the available slots.
apoli:accessoryItem conditiontrinketChecks whether an item is an accessory.

Slots

Wherever a slots field appears, it takes a list of accessory slots. Leaving it out, or leaving it empty, means every slot.

A slot is written either as a string or as an object, and a single slot can be given on its own instead of in an array:

"slots": "charm"
"slots": "hand/ring"
"slots": "hand/ring/1"
"slots":[
   {
      "group":"hand",
      "slot":"ring",
      "index":1,
      "provider":"trinkets"
   }
]

The string form is slot, group/slot or group/slot/index. Every part is a filter, and anything you leave out matches everything. provider (trinkets, accessories or curios) limits a slot to one framework, which only matters when two are installed at once.

apoli:conjure_equipment uses the same format in its accessory_slot field. It is core Apoli and isn't gated, and the field does nothing when no accessory framework is installed.