ESO UI API Patch Highlights (V100025)
A summary of important changes to the ESO UI API in this package.
Addon Auto Saving
Addons will now auto-save their saved variables periodically while the game is running. If the addon's saved variables are too large (more than 50kb in size or more than 4ms to write) it will instead wait until the next load screen to do the work. An addon can request to be prioritized for saving, which is useful if you know that a change happened:
- RequestAddOnSavedVariablesPrioritySave(addonName)
This function prioritizes the addon to be saved before non-prioritized addons. After a save, it will no longer be marked as a priority.
You may also disable auto saving for your addon by putting the following line at the top of your addon manifest file:
- ## DisableSavedVariablesAutoSaving 1
Bridges and Milegates
Destructible bridges and milegates have been added to Cyrodiil. They now have their own Keep types:
- KEEPTYPE_BRIDGE
- KEEPTYPE_MILEGATE
Bridges can be either be passable or impassable, while milegates have those states plus the additional state of only being passable from one side.
- KEEP_PIECE_DIRECTIONAL_ACCESS_BIDIRECTIONAL
- KEEP_PIECE_DIRECTIONAL_ACCESS_BLOCKED
- KEEP_PIECE_DIRECTIONAL_ACCESS_IGNORE
- KEEP_PIECE_DIRECTIONAL_ACCESS_UNIDIRECTIONAL
These states can be queried using these new APIs:
- IsKeepPassable(keepId, BGQUERY) – isPassable.
- GetKeepDirectionalAccess(keepId, BGQUERY) - KEEP_PIECE_DIRECTIONAL_ACCESS.
- IsKeepTypeCapturable(KEEPTYPE) – isCapturable.
- IsKeepTypePassable(KEEPTYPE) – isPassable.
And you can stay up to date with these events:
- EVENT_KEEP_IS_PASSABLE_CHANGED (keepId, BGQUERY, isPassable)
- EVENT_KEEP_PIECE_DIRECTIONAL_ACCESS_CHANGED
Furniture Grouping
Pieces of furniture can now be grouped into hierarchies and be moved together. This can either be done by entering linking mode:
- HOUSING_EDITOR_MODE_LINK
- HousingEditorBeginLinkingTargettedFurniture() - HOUSING_REQUEST_RESULT.
- HousingEditorGetPendingBadLinkResult() - HOUSING_REQUEST_RESULT.
- HousingEditorPerformPendingLinkOperation() - HOUSING_REQUEST_RESULT.
- HousingEditorCanRemoveParentFromPendingFurniture() - HOUSING_REQUEST_RESULT.
- HousingEditorRemoveParentFromPendingFurniture() - HOUSING_REQUEST_RESULT.
- HousingEditorCanRemoveAllChildrenFromPendingFurniture() - HOUSING_REQUEST_RESULT.
- HousingEditorRemoveAllChildrenFromPendingFurniture() - HOUSING_REQUEST_RESULT.
- HousingEditorGetLinkRelationshipFromSelectedChildToPendingFurniture() - HOUSING_EDITOR_PENDING_LINK_RELATIONSHIP .
Or by direct API calls:
- HousingEditorRequestSetFurnitureParent(childFurnitureId, parentFurnitureId) - HOUSING_REQUEST_RESULT.
- HousingEditorRequestClearFurnitureParent(furnitureId) - HOUSING_REQUEST_RESULT.
Grouping is controlled by the HOUSE_PERMISSION_SETTING_LINK_FURNITURE permission. There is a max of HOUSING_MAX_FURNITURE_CHILDREN (50) children per parent.
Furniture Undo
An undo/redo stack has been added for housing operations. Each operation is now represented by a command type:
- HOUSING_EDITOR_COMMAND_TYPE_LINK
- HOUSING_EDITOR_COMMAND_TYPE_MOVE
- HOUSING_EDITOR_COMMAND_TYPE_NONE
- HOUSING_EDITOR_COMMAND_TYPE_PLACE
- HOUSING_EDITOR_COMMAND_TYPE_REMOVE
- HOUSING_EDITOR_COMMAND_TYPE_UNLINK
- HOUSING_EDITOR_COMMAND_TYPE_UNLINK_ALL
These are the new functions:
- UndoLastHousingEditorCommand()
- RedoLastHousingEditorCommand()
- CanUndoLastHousingEditorCommand() – canUndo.
- CanRedoLastHousingEditorCommand() – canRedo.
- GetNumHousingEditorHistoryCommands() – numCommands.
- GetCurrentHousingEditorHistoryCommandIndex() – index.
- GetHousingEditorHistoryCommandInfo(index) - HOUSING_EDITOR_COMMAND_TYPE, itemName, textureName.
There is a maximum of HOUSING_MAX_UNDO_REDO_COMMANDS (200) commands stored. Undo history persists until you leave the house or log out.
Guild Store
SetTradingHouseFilter now takes a variable argument list instead of a fixed number of params. It will return false if any of the supplied terms could not be added. The limit on the number of exact terms that a filter can take can be queried with GetMaxTradingHouseFilterExactTerms(TRADING_HOUSE_FILTER_TYPE) – maxTerms.
Quest Item Quick Slotting
Quest items can now be placed in quick slots. SelectSlotCollectible, SelectSlotEmote, SelectSlotQuickChat and quest item quick slotting are now handled by SelectSlotSimpleAction(ACTION_TYPE, actionId, actionSlotIndex).
- ACTION_TYPE_QUEST_ITEM
- IsValidQuestItemForSlot(questItemId, actionSlotIndex) – valid.
- CanQuickslotQuestItemById(questItemId) – canQuickslot.
Animations
Animation timelines can now pause and resume with the aptly named Pause and Resume functions. IsPaused has also been added.
Miscellaneous
- Added GetClassIndexById(classId) – index.
- Added GetAbilityBuffType(abilityId) – BUFF_TYPE.
- DoesItemLinkFulfillJournalQuestCondition now also takes isSelfCrafted as an argument.
- Added DoesItemFulfillJournalQuestCondition(BAG, slotIndex, journalQuestIndex, stepIndex, conditionIndex) – fulfillsCondition.
- GetPOIMapInfo now also returns if the POI is discovered and if it is nearby.
- Added DidDeathCauseDurabilityDamage().
- Added GetFurnitureIdFromCollectibleId(collectibleId) – furnitureId.
- Added GetCollectibleIdFromFurnitureId(furnitureId) – collectibleId.
- Added GetZoneId(zoneIndex) – zoneId.
- Added GetParentZoneId(zoneId) – parentZoneId.
- Added GetZoneNameById(zoneId) – name.