Maintenance for the week of May 20:
• [COMPLETE] Xbox One: NA and EU megaservers for maintenance – May 22, 6:00AM EDT (10:00 UTC) – 9:00AM EDT (13:00 UTC)
• [COMPLETE] PlayStation®4: NA and EU megaservers for maintenance – May 22, 6:00AM EDT (10:00 UTC) – 9:00AM EDT (13:00 UTC)

Update 22 API Patch Notes & Change Log (PTS)

ZOS_GinaBruno
ZOS_GinaBruno
Community Manager
ESO UI API Patch Highlights (V100027)
A summary of important changes to the ESO UI API in this package.

Artifact Weapons
A new objective type, OBJECTIVE_DAEDRIC_WEAPON, has been added. It behaves similarly to a capture-the-flag flag in terms of pick up, carrying, and dropping. However, it also differs in a few ways:
  • The daedric weapon has its own power pool (POWERTYPE_DAEDRIC). Information about the power level can be queried using the same functions for other power types like stamina and magicka.
  • Daedric weapon objectives start out in an unknown objective control state where there is no information available about them and will stay that way until a fixed time after they spawned, or the daedric weapon is picked up.
  • There is an objective for each possible daedric weapon spawn location but most of them will be inactive.
Use EVENT_ACTIVE_DAEDRIC_ARTIFACT_CHANGED and GetActiveDaedricArtifactId to check the active daedric weapon.

Add-On Library Flag
A new directive has been added to the manifest file:
  • ## IsLibrary: true
Add-ons marked as libraries will appear at the bottom of the addon list in their own section. GetAddOnInfo now also returns isLibrary at the end of its returns.

Lua Profiler
The Lua profiler API now records C functions, garbage collection, and user events generated through RecordScriptProfilerUserEvent("text").
  • GetScriptProfilerNumCFunctions
  • GetScriptProfilerCFunctionInfo
  • GetScriptProfilerNumGarbageCollectionTypes
  • GetScriptProfilerGarbageCollectionInfo
  • RecordScriptProfilerUserEvent
  • GetScriptProfilerNumUserEvents
  • GetScriptProfilerUserEventInfo

Guild Finder
The guild finder system adds a large number of new APIs for creating guild applications, applying to guilds, and reviewing applications. It also adds APIs for querying some information (name, languages, alliance, etc.) about any guild in the game as long as they are openly recruiting. These APIs require first pulling the guild information from the server using RequestGuildFinderAttributesForGuild(guildId). This API will be rate limited so please use it with care. When information is available, EVENT_GUILD_INFO_REQUEST_COMPLETE will be sent with the matching guild id.

To make these new APIs possible guild ids in all APIs have been switched from fake, non-persistent IDs to the actual persistent guild IDs. Additionally, a new link type has been added for guilds (LINK_TYPE_GUILD), which lets you link guild recruitment in chat (GetGuildRecruitmentLink).

Encounter Log
An out of game log file has been added to record combat information. It can be enabled and disabled with the “/encounterlog” command. For information about the types of data that can appear in the log use the “/encounterlog format” command. By default, the encounter log is output in a compact format to minimize file size. However, it can be output in a more human readable format using the “/encounterlog verbose” and “/encounterlog inline” options. The encounter log includes information on all combat events, not just ones involving the player. However, players may choose to prevent their name from appearing in the log using an anonymity setting in the combat options.

Combat Event
EVENT_COMBAT_EVENT now splits damage and healing values into effective and overflow. The overflow amount is a new field that appears after the existing combat event fields.

World Events (Dragons)
Dragons make use of the new world event system. It provides information about the active locations and boss units that are participating in the world event.

Events:
  • EVENT_WORLD_EVENTS_INITIALIZED
  • EVENT_WORLD_EVENT_ACTIVATED - worldEventInstanceId.
  • EVENT_WORLD_EVENT_ACTIVE_LOCATION_CHANGED - worldEventInstanceId, oldWorldEventLocationId, newWorldEventLocationId.
  • EVENT_WORLD_EVENT_DEACTIVATED – worldEventInstanceId.
  • EVENT_WORLD_EVENT_UNIT_CHANGED_PIN_TYPE - worldEventInstanceId, unitTag, oldPinType, newPinType.
  • EVENT_WORLD_EVENT_UNIT_CREATED - worldEventInstanceId, unitTag.
  • EVENT_WORLD_EVENT_UNIT_DESTROYED.

Functions:
  • GetNextWorldEventInstanceId(lastWorldEventInstanceId) – nextWorldEventInstanceId.
  • GetWorldEventId(worldEventInstanceId) – worldEventId.
  • GetWorldEventType(worldEventId) – worldEventType.
  • GetNumWorldEventInstanceUnits(worldEventInstanceId) – numUnits.
  • GetWorldEventInstanceUnitTag(worldEventInstanceId, unitIndex) – unitTag.
  • GetWorldEventInstanceUnitPinType(worldEventInstanceId, unitTag) – pinType.

Compass Pins
The way the alpha and scale values of compass pins are specified has changed to make it easier to understand. The new method involves setting close and far distances for each attribute and interpolating between them. For example, setting closeAlphaDistanceM to “1” and farAlphaDistanceM to “100” with closeAlpha set to “1” and farAlpha set to “0.4” will cause the alpha to be 1 from 0-1m, scale down to 0.4 from 1-100m, and be 0.4 from 100m on. Additionally, you can set the max distance the pin exists at using maxDistanceM, which can be a distance in meters or the sentinel value COMPASS_PIN_NO_MAX_DISTANCE.
  • maxDistanceM
  • closeScale
  • farScale
  • closeScaleDistanceM
  • farScaleDistanceM
  • closeAlpha
  • farAlpha
  • closeAlphaDistanceM
  • farAlphaDistanceM

Miscellaneous
The boolean escapeMarkup attribute on edit boxes has been replaced with allowMarkupType which has three values:
  • ALLOW_MARKUP_TYPE_ALL
  • ALLOW_MARKUP_TYPE_COLOR_ONLY
  • ALLOW_MARKUP_TYPE_NONE
PreviewTradingHouseSearchResultItemLinkAsFurniture(itemLink, variation) has also been added to allow previewing any item link seen in trading house search results this session.
Gina Bruno
Community Manager - The Elder Scrolls Online
Dev Tracker | Service Alerts | Facebook | Twitter
Staff Post
  • Reorx_Holybeard
    Reorx_Holybeard
    ✭✭✭✭✭
    Is there any function that gives you if the ability is considered "Criminal" act (i.e., some of the new Necromantic skills)? Took a quick look and didn't see anything that might be relevant.
    Reorx Holybeard -- NA/PC
    Founder/Admin of www.uesp.net -- UESP ESO Guilds
    Creator of the "Best" ESO Build Editor
    I'm on a quest to build the world's toughest USB drive!
  • Reorx_Holybeard
    Reorx_Holybeard
    ✭✭✭✭✭
    Is there any function that gives you if the ability is considered "Criminal" act (i.e., some of the new Necromantic skills)? Took a quick look and didn't see anything that might be relevant.

    To partially answer my own question, you can get this indirectly by calling the GetAbilityDescriptionHeader(id) API function and checking if the text "CRIMINAL ACT" appears in the returned text.

    As an aside, the text is double-formatted:
    |cffffff|ce60000CRIMIMAL ACT|r|r
    
    Reorx Holybeard -- NA/PC
    Founder/Admin of www.uesp.net -- UESP ESO Guilds
    Creator of the "Best" ESO Build Editor
    I'm on a quest to build the world's toughest USB drive!
  • Baertram
    Baertram
    ✭✭✭
    Hm, having to check texts on multilanguage games is kind of Bad Imo.
    @Zos,could you please add an API function for this? Would be very nice!

    And thank you for the natch potes!
    Edited by Baertram on April 16, 2019 8:04PM
  • Enodoc
    Enodoc
    Community Ambassador
    Anyone know what the returns to EVENT_ACTIVE_DAEDRIC_ARTIFACT_CHANGED are?

    Edit: Also, does anyone know whether there are new OBJECTIVE_CONTROL_EVENTs for this weapon (picking up, dropping, etc), and whether they are tied to the above event, or EVENT_ARTIFACT_CONTROL_STATE like Elder Scrolls, or EVENT_OBJECTIVE_CONTROL_STATE like keep flags?
    Edited by Enodoc on April 18, 2019 9:51PM
    UESP: The Unofficial Elder Scrolls Pages - A collaborative source for all knowledge on the Elder Scrolls series since 1995
  • VaranisArano
    VaranisArano
    ✭✭✭✭✭
    ✭✭✭✭✭
    Would the API have to change significantly if Anonymity were made the default in game option for the encounter log?
  • Enodoc
    Enodoc
    Community Ambassador
    The four player name strings returned by EVENT_DAEDRIC_ARTIFACT_OBJECTIVE_STATE_CHANGED (holderRawCharacterName, holderDisplayName, lastHolderRawCharacterName, lastHolderDisplayName) don't appear to be working - as far as I can see, they are coming out blank. The returns seem to be similar to EVENT_ARTIFACT_CONTROL_STATE, and I've never had problems with the playerName in that one, so I'm not sure what the problem is.

    The Event also does not return objectiveName, so it is not possible to attach a "<Player> has picked up <Objective>" message to this event. Without player names or objective names, this event is not very useful right now, and it is easier to use EVENT_OBJECTIVE_CONTROL_STATE with OBJECTIVE_DAEDRIC_WEAPON instead (since that event returns objectiveName, I can at least create half of the message). Daedric artifacts also don't fire EVENT_ARTIFACT_CONTROL_STATE, so it is currently not possible to add a player name to the message that way either.
    UESP: The Unofficial Elder Scrolls Pages - A collaborative source for all knowledge on the Elder Scrolls series since 1995
  • GandalfTheGuardian
    GandalfTheGuardian
    Soul Shriven
    Enodoc wrote: »
    The four player name strings returned by EVENT_DAEDRIC_ARTIFACT_OBJECTIVE_STATE_CHANGED (holderRawCharacterName, holderDisplayName, lastHolderRawCharacterName, lastHolderDisplayName) don't appear to be working - as far as I can see, they are coming out blank. The returns seem to be similar to EVENT_ARTIFACT_CONTROL_STATE, and I've never had problems with the playerName in that one, so I'm not sure what the problem is.
    The names are working but a very odd way. The event is giving you the names only when you (as player) are taking/dropping the weapon. If an other player is doing this, the names are "" and only the alliance code is provided.
    Hope this a bug (pts5.0.2)
    Enodoc wrote: »
    The Event also does not return objectiveName, so it is not possible to attach a "<Player> has picked up <Objective>" message to this event. Without player names or objective names, this event is not very useful right now, and it is easier to use EVENT_OBJECTIVE_CONTROL_STATE with OBJECTIVE_DAEDRIC_WEAPON instead (since that event returns objectiveName, I can at least create half of the message). Daedric artifacts also don't fire EVENT_ARTIFACT_CONTROL_STATE, so it is currently not possible to add a player name to the message that way either.
    You get all the params to get the objectiveName:
    local objectiveName = GetObjectiveInfo(objectiveKeepId, objectiveObjectiveId, battlegroundContext)

    However, the holder names must be filled in for the objectiveControlEvent OBJECTIVE_CONTROL_EVENT_FLAG_TAKEN and
    OBJECTIVE_CONTROL_EVENT_FLAG_DROPPED to make this event useful

    BTW: There is an undocumented objectiveControlEvent with value 16 that comes when weapon returns to Oblivion aka despawns -> SI_DAEDRIC_ARTIFACT_DESPAWNED
Sign In or Register to comment.