Maintenance for the week of June 12:
• PC/Mac: No maintenance – June 12

Orsinium API Patch Notes & Change Log (PTS)

Community Manager
ESO UI API Patch Notes (Version 100013)
These patch notes highlight the larger changes to the ESO API. For the full, updated API take a look at the newest version of the ESO UI documentation.

Gamepad API
The gamepad API is now available for use. When an XInput gamepad is connected to the PC and the game client is in gamepad preferred mode (using the option in the Options window), Lua code will receive input from the gamepad. Keybinds and the keybind strip work very similarly to PC. Directional pad and analog stick input should be queried using the DIRECTIONAL_INPUT object to maintain the input precedence order (so multiple windows aren’t using the sticks at the same time). When a window is shown it should use DIRECTIONAL_INPUT:Activate(table, control) where table has a function named UpdateDirectionalInput which will be called when it is time to poll input, and control is the control associated with the visibility of your window (usually your top level control) which will be used to determine its input order through its render order. When a window is hidden it should use DIRECTIONAL_INPUT:Deactivate.

To determine if the game is in gamepad mode use the function: IsInGamepadPreferredMode() and the event: EVENT_GAMEPAD_PREFERRED_MODE_CHANGED. Most of the default gamepad screens use ZO_ParametricScrollList to layout their contents. It is easily navigable using the gamepad and keeps the selected entry in the center. Library components such as sliders and radio groups have been augmented with gamepad versions. To show a scene as part of the gamepad UI use SCENE_MANAGER’s Push function which will show it and put it on the scene stack. It will return the player to the previous scene when it is hidden.
Please post any other questions about gamepad development below.

Map Pin Filters and Contexts
MAP_OPTION_CONTEXT has become MAP_FILTER_TYPE and has been expanded to match the new environments that the pin filters operate over. MAP_OPTION_CONTEXT_PVE became MAP_FILTER_TYPE_STANDARD. MAP_OPTION_CONTEXT_PVP became MAP_FILTER_TYPE_CYRODIIL. MAP_FILTER_TYPE_AVA_IMPERIAL has been added. The map filter type now comes from the GetMapFilterType() API. There is also a new map pin filter named MAP_FILTER_IMPERIAL_CITY_ENTRANCE.

Raid Leaderboards
Raid leaderboards have been changed from a single list into four lists: Trials, Trial of the Week, Challenges, and Challenge of the Week. Challenges are further split by class. This restructuring was done to support challenges and also to provide a solid foundation to expand in the future.

  • Previous:
    • No parameters.
    • Returned count (number of leaderboards).
  • Current:
    • Returns count (number of leaderboards for that category), hasWeekly (whether or not that category has a raid of the week)
  • Previous:
    • Took raidIndex,
    • Returned name, isWeekly (if that index was a raid of the week leaderboard), raidId (unique identifier for the raid), category (the raidCategory).
  • Current:
    • Takes raidCategory, raidIndex.
    • Returns name, raidId (weekly is in another function now).

  • Previous:
    • Took raidIndex.
  • Current:
    • Takes raidCategory, raidIndex.

  • Split into 4 functions, see “Added” below.

  • Split into 4 functions, see “Added” below.

  • Previous:
    • Took raidIndex.
  • Current:
    • Takes raidCategory, raidIndex.

  • Previous:
    • Took raidIndex.
  • Current:
    • Takes raidCategory, raidIndex.

  • GetRaidOfTheWeekLeaderboardInfo(raidCategory) – name, raidId.
    • RotW extension of GetRaidLeaderboardInfo.
  • GetRaidOfTheWeekLeaderboardLocalPlayerInfo(raidCategory) – rank, bestScore.
    • RotW extension of GetRaidLeaderboardLocalPlayerInfo).
  • GetPlayerRaidOfTheWeekParticipationInfo(raidCategory) – isParticipating, isCredited.
    • RotW extension of GetPlayerRaidParticipationInfo.
  • GetPlayerRaidOfTheWeekProgressInfo(raidCategory) – inProgress, isComplete.
    • RotW extension of GetPlayerRaidProgressInfo.
  • GetNumTrialLeaderboardEntries(raidIndex) – count.
    • Gets the number of entries in the given non-RotW Trial leaderboard.
  • GetNumTrialOfTheWeekLeaderboardEntries() – count.
    • Get the number of entries in the current trial of the week leaderboard.
  • GetNumChallengeLeaderboardEntries(raidIndex. classId)
    • Gets the number of entries in the given non-RotW challenge leaderboard, per class.
  • GetNumChallengeOfTheWeekLeaderboardEntries(classId) – count.
    • Get the number of entries in the current challenge of the week leaderboard.
  • GetTrialLeaderboardEntryInfo(raidIndex, entryIndex) - ranking, charName, time, classId, allianceId, displayName.
    • Gets info for the given non-RotW trial entry.
  • GetTrialOfTheWeekLeaderboardEntryInfo(entryIndex) - ranking, charName, time, classId, allianceId, displayName.
    • Gets info for a trial of the week entry.

Item Comparison
  • Added two APIs for computing stat deltas between items:
  • GetComparisonEquipSlotsFromBagItem(bagId, slotIndex) – comparisonSlot1, comparisonSlot2. Returns the worn inventory slots that this item would be compared against.
  • CompareBagItemToCurrentlyEquipped(bagId, slotIndex, equipSlot) – (derivedStat, statDelta)… . Returns the stat differences between the bag item and equipped item.
  • CompareItemLinkToCurrentlyEquipped(itemLink, equipSlot) – (derivedStat, statDelta)… . Returns the stat differences between the item link and the equipped item.

Added GetSmithingPatternNextMaterialQuantity(patternIndex, materialIndex, startingPoint, step) – value. Smithing, Woodworking, and Clothier can now have gaps in the amount of material that go towards making an item. For example [1-10], 150 could be the valid material amounts. This function will return the closet valid material count to startingPoint + step, in the direction of step. For example, using this function with the aforementioned data and passing in 10 for starting point and 1 for step would return 150. It will return the min or max if the startingPoint plus the step is out of bounds.

Campaign Leaderboards
GetNumCampaignClassLeaderboardEntries(campaignId, classId) and GetCampaignClassLeaderboardEntryInfo(campaignId, classId, entryIndex) are now done by filtering in Lua instead of maintaining class filtered copies in the client. These functions have been removed.

Battle Leveling
Added some new APIs to support UI visualization of battle leveling:
  • IsUnitBattleLeveled(unitTag) – isBattleLeveled.
  • IsUnitVetBattleLeveled(unitTag) – isVetBattleLeveled. IsUnitBattleLeveled(unitTag) will always be true if this returns true.
  • GetUnitBattleLevel(unitTag) – battleLevel.
  • GetUnitVetBattleLevel(unitTag) – vetBattleLevel. GetUnitBattleLevel(unitTag) will always be 50 if this returns a non-zero level.

Currency Limit Functions
Added APIs to return limits on currency operations:
  • GetMaxCarriedCurrencyAmount(currencyType) – maxAmount.
  • GetMaxBankWithdrawal(currencyType) – maxAmount.
  • GetMaxBankDeposit(currencyType) – maxAmount.
  • GetMaxBankCurrencyAmount(currencyType) – maxAmount.
  • GetMaxGuildBankWithdrawal(currencyType) – maxAmount.
  • GetMaxGuildBankDeposit(currencyType) – maxAmount.
  • GetMaxGuildBankCurrencyAmount(currencyType) – maxAmount.

  • CanJumpToGroupMember(unitTag) now also returns a JUMP_TO_PLAYER_RESULT indicating success or why the jump would fail.
  • Added some new RAID_POINT_REASON types.
  • Added a new global: MAX_GUILD_MEMBERS. The max members that can be in a guild.
  • HashString(string) – hashValue. Computes an unsigned 32-bit hash value from a string (case sensitive).
  • ResetKeyboardBindsToDefault() – Resets only the keyboard bindings to default.
  • ResetGamepadBindsToDefault() – Resets on the gamepad bindings to default.
  • GetUnitZoneIndex(unitTag) – Returns the zoneIndex that a unit resides in.
  • GetUnitRaceId(unitTag) – raceId.
  • GetQuestToolLink(questIndex, toolIndex, linkStyle) - link.
  • GetQuestItemLink(questIndex, stepIndex, conditionIndex, linkStyle) – link.
  • GetTelvarStonePercentLossOnPvpDeath() – percentLoss.
  • GetTelvarStonePercentLossOnNonPvpDeath() – percentLoss.
  • IsInJusticeEnabledZone() – isInJusticeZone.
  • GetCollectibleIdForZone(zoneIndex) – collectibleId. Returns the collectible that unlocks a zone.
  • IsLooting() – isLooting.
  • IsReadMailInfoReady(mailId) – isReady. Returns true if the mail info has been retrieved from the server.
  • GetCollectibleHelpIndices(collectibleId) – helpCategoryIndex, helpIndex. Returns the location of the help entry for this collectible if any.
  • GetImperialCityCollectibleId() – collectibleId.
  • GetNumSpentChampionPoints(attribute) – numSpentPoints.
  • GetMaxSpendableChampionPointsInAttribute() – Returns the maximum number of champion points that can be spent in one attribute (set of three constellations).
  • Added EVENT_INVENTORY_BAG_CAPACITY_CHANGED which fires when the maximum size of the backpack changes. Added EVENT_INVENTORY_BANK_CAPACITY_CHANGED which fires when the maximum size of the bank changes.
Jessica Folsom
Lead Community Manager - ZeniMax Online Studios
Facebook | Twitter | Twitch | Tumblr | Instagram | YouTube | Support
Staff Post
  • Woeler
    You forgot to add (found this function myself because I couldn't image it was missing)

    GetChallengeLeaderboardEntryInfo(RaidIndex, ClassID, Position)
  • Philgo68

    Any chance of getting the official API patch notes for "Live". I've heard tell of at least one API change that was supposed to make it in this release that I am extremely interested in to make Master Merchant more reliable.


    Edited by Philgo68 on November 2, 2015 9:17PM
Sign In or Register to comment.