ESOTU UI API Patch Notes (Version 100012)
These patch notes highlight the larger changes to the ESOTU API. For the full, updated API, please take a look at the newest version of the ESOTU UI documentation.
Combat and Effect API Changes
- No information on effects that last less than 30 seconds.
- Addons will now receive information on effects shorter than 30 seconds as long as they affect the player or were cast by the player.
- The EFFECT_CHANGED event was unit tag based, which means it was only sent if a unit tag existed for the unit with the effect on them. This means that if a player cast an effect on a target and then looked away, the addon would not receive updates about that effect. It also means it was difficult to track which unit the effect was cast on if the player casts the same effect on multiple targets.
- The EFFECT_CHANGED event now includes a unit name field and will always be sent, even if no unit tag exists. The event will continue to be sent for each applicable unit tag if unit tags do exist.
- COMBAT_EVENT was stripped of most of its information if it failed a filtering check. These filtering rules were complex and hard to account for.
- COMBAT_EVENT is sent for all ability casts if the source or target is the player or their pet.
- Added GetAbilityIcon(abilityId) – icon.
- Added abilityId to EVENT_COMBAT_EVENT and EVENT_EFFECT_CHANGED.
- Added a unique numerical target id to EVENT_EFFECT_CHANGED to separate units with the same name. This unique id persist as long as the client knows about the unit.
- Added unique numerical source and target ids to EVENT_COMBAT_EVENT. This unique id persist as long as the client knows about the unit.
Changed the API for currencies (gold, alliance points, tel var stones) to allow for more generic handling. The vast majority of existing functions for dealing with currencies (e.g. GetCurrentMoney(), GetAlliancePoints()) have been left intact. However, we have added new functions like GetCarriedCurrenyAmount which takes a currency type. We have also added functions to deal with Tel Var stones for Imperial City.
- GetCarriedCurrencyAmount(currencyType) – amount.
- GetBankedCurrencyAmount(currencyType) – amount.
- DepositCurrencyIntoBank(currencyType, amount).
- WithdrawCurrencyFromBank(currencyType, amount).
- DepositCurrencyIntoGuildBank(currencyType, amount).
- WithdrawCurrencyFromGuildBank(currencyType, amount).
- GetGuildBankedCurrencyAmount (currencyType) – amount.
- GetBankedTelvarStones() – amount.
- GetLootCurrency(currencyType) – unownedCurrency, ownedCurrency.
- GetStoreEntryInfo no longer supplies a currency id, icon, or name. These are now derived from the currency type.
- GetStoreCurrencyTypes no longer returns usesBattleTokens or usesItems, and now also returns usesTelvarStones.
- GetItemCurrencyQuantity was removed because item currencies were removed.
Added display names to a number of functions and events that previously only had character names.
Added support for the Imperial City. Includes new functions for dealing with Tel Var stones. Use GetImperialCityCollectibleId() with IsCollectibleUnlocked(collectibleId) to determine if the player has access to Imperial City.
- GetTelvarStoneBankingFee() – bankingFee.
- GetTelvarStoneMinimumDeposit() – minDeposit.
- GetTelvarStoneMultiplierThresholdIndex() – the index of the current threshold.
- GetTelvarStoneThresholdAmount(thresholdIndex) – minimum amount of stones to get at that threshold.
- GetTelvarStoneMultiplier(thresholdIndex) – multiplier on stone gains.
- IsMaxTelvarStoneMultiplierThreshold(thresholdIndex) – isAtMaxThreshold.
- DoesCurrentZoneHaveTelvarStoneBehavior() – telvarBehaviorEnabled.
- GetCampaignRulesetImperialAccessRule(rulesetId) – accessRuleType.
- GetNumTelvarStonesLost() – returns the number of stones lost on the most recent death.
Moved a lot of the pending point maintenance for Champion into the client to allow client systems a better view of what is happening. Mostly, the Champion class in Lua has had the implementations of its pending points management functions changed to calling client functions instead.
- GetNumPendingChampionPoints(disciplineIndex, skillIndex) – numPendingPoints.
- SetNumPendingChampionPoints(disciplineIndex, skillIndex, numPendingPoints).
- HasAvailableChampionPointsInAttribute(attribute) – hasPoints.
- WillChampionSkillBeUnlocked(disciplineIndex, skillIndex) – willBeUnlocked.
- SetChampionIsInRespecMode(isInRespecMode) .
- IsChampionInRespecMode() – isInRespecMode.
- IsChampionRespecNeeded() – returns true if the pending point allocation would require a respect to achieve.
Improved the cooldown control to allow more flexibility.
Register for Event Filters
- SetRadialCooldownGradient(startAlpha, angularDistance) which fades the cooldown over angularDistance radians from startAlpha to abs(1 – startAlpha).
- SetDesaturation(desaturation) which applies to all cooldown types.
- New cooldown type CD_TYPE_VERTICAL_REVEAL which reveals the texture instead of stretching it.
Added the ability to filter out event calls in the client before they reach Lua. This provides a small performance benefit over using a conditional in the callback. It is useful for events that are fired very frequently (such as EVENT_COMBAT_EVENT). Either use EVENT_MANAGER:AddFilterForEvent(namespace, event, filterType, …) or control:AddFilterForEvent(event, filterType, …). These are the event filter types and their parameters:
- REGISTER_FILTER_ABILITY_ID - abilityId
- REGISTER_FILTER_COMBAT_RESULT - combatResult
- REGISTER_FILTER_POWER_TYPE – powerType.
- REGISTER_FILTER_UNIT_TAG – unitTag.
- REGISTER_FILTER_UNIT_TAG_PREFIX – unitTagPrefix.
- REGISTER_FILTER_VIBRATION_FILTER – filter cutoff.
Added a more complete and consistent API for scripted events.
- GetNumScriptedEventInvites() – numInvites.
- GetScriptedEventInviteIdFromIndex(eventIndex) – eventId.
- GetScriptedEventInviteInfo(eventId) – isValid, eventName, inviterName, questName, timeRemainingMS.
- GetScriptedEventInviteTimeRemainingMS(eventId) – timeRemainingMS.
Added a new enumeration for mouse buttons called MOUSE_BUTTON_INDEX so you no longer have to use the numbers directly:
- GetGuildInfo(guildId) – numMembers, numOnlineMembers, leaderName.
- GetGuildMemberIndexFromDisplayName (displayName) – member index.
- GetUnitDisplayName(unitTag) – displayName.
- InsertNamedActionLayerAbove(layerName, existingLayerName).
- HasActivatableSwapWeaponsEquipped() – canSwapWeaponSets which returns if the player has two set that they can swap between (doesn’t have only one weapon set filled).
- Some more information to GetItemLinkOnUseAbilityInfo, GetItemLinkTraitOnUseAbilityInfo, and GetItemLinkTraitInfo to handle items whose on use effects scale over a level range.
- GetAvAKeepsHeld(campaignId, alliance) – keepsHeld.
- IsItemLinkBook(itemLink) – isBook.
- GetRecallCurrency(nodeIndex) – currencyType for handling recalling to nodes that have Tel Var stone costs.
- IsWerewolfSkillLine(skillType, skillLineIndex) – isWerewolfSkillLine.
- GetCollectibleUnlockStateById(collectibleId) – unlockState.
- GetCollectibleName(collectibleId) – name.
- IsCollectibleUnlocked(collectibleId) – isUnlocked.
- GetAchievementRewardCollectible(achievementId) – hasRewardOfType, collectibleId.
- AnimationObjectTranslate ::GetAnchorIndex() – anchorIndex.
- AnimationTimeline:: GetPlaybackLoopsRemaining() – loopsRemaining.
- AnimationTimeline:: SetPlaybackLoopCount(maxLoopCount).
- LabelControl::GetNumLines() – numLines.
- GetClassInfo(classId) now also returns gamepad icons.
- HasAnyJunk(bagId) to also take a boolean flag to control whether stolen items are included.
- Added return to GetAlchemyItemTraits(reagentBagId, reagentSlotIndex) for cancelling traits.
- Added returns to GetEmoteInfo(emoteIndex) for display name and is shown in gamepad UI.
- EVENT_END_CRAFTING_STATION_INTERACT to now pass the crafting skill of the interaction that just ended.
- EVENT_SCREEN_RESIZED to return the name of the gui that just finished resizing.
- OnTextureLoaded which is fired when a texture control has loaded its file into memory.
Senior Community Manager (English) - The Elder Scrolls Online