Maintenance for the week of March 25:
• [COMPLETE] ESO Store and Account System for maintenance – March 28, 9:00AM EDT (13:00 UTC) - 12:00PM EDT (16:00 UTC)

Update 18 API Patch Notes & Change Log (PTS)

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

Jewelry Crafting
We have added Jewelry Crafting as a new crafting type. It is very similar in implementation to Woodworking, Blacksmithing, and Clothier. The major difference is that jewelry does not make use of style items. Any smithing APIs that take style id as parameter should take 0 for Jewelry Crafting. Here are the new enum values for jewelry crafting:
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_BOOSTER_BONUS
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_CRAFT_PERCENT_DISCOUNT
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_EXTRACT_LEVEL
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_HIRELING_LEVEL
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_LEVEL
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_RESEARCH_LEVEL
  • NON_COMBAT_BONUS_JEWELRYCRAFTING_SHOW_NODES
  • RECIPE_CRAFTING_SYSTEM_JEWELRYCRAFTING_SKETCHES
  • CRAFTING_TYPE_JEWELRYCRAFTING
  • ITEM_TRAIT_TYPE_JEWELRY_BLOODTHIRSTY
  • ITEM_TRAIT_TYPE_JEWELRY_HARMONY
  • ITEM_TRAIT_TYPE_JEWELRY_INFUSED
  • ITEM_TRAIT_TYPE_JEWELRY_INTRICATE
  • ITEM_TRAIT_TYPE_JEWELRY_PROTECTIVE
  • ITEM_TRAIT_TYPE_JEWELRY_SWIFT
  • ITEM_TRAIT_TYPE_JEWELRY_TRIUNE
  • ITEMTYPE_JEWELRYCRAFTING_BOOSTER
  • ITEMTYPE_JEWELRYCRAFTING_MATERIAL
  • ITEMTYPE_JEWELRYCRAFTING_RAW_BOOSTER
  • ITEMTYPE_JEWELRYCRAFTING_RAW_MATERIAL
  • ITEMTYPE_JEWELRY_RAW_TRAIT
  • ITEMTYPE_JEWELRY_TRAIT
  • SPECIALIZED_ITEMTYPE_FURNISHING_MATERIAL_JEWELRYCRAFTING
  • SPECIALIZED_ITEMTYPE_JEWELRYCRAFTING_BOOSTER
  • SPECIALIZED_ITEMTYPE_JEWELRYCRAFTING_MATERIAL
  • SPECIALIZED_ITEMTYPE_JEWELRYCRAFTING_RAW_BOOSTER
  • SPECIALIZED_ITEMTYPE_JEWELRYCRAFTING_RAW_MATERIAL
  • SPECIALIZED_ITEMTYPE_JEWELRY_RAW_TRAIT
  • SPECIALIZED_ITEMTYPE_JEWELRY_TRAIT
  • SPECIALIZED_ITEMTYPE_RECIPE_JEWELRYCRAFTING_SKETCH_FURNISHING

Saved Variables Size
We have updated the virtual machine to handle larger tables in saved variables. Please let us know if this helps with saved variable corruption problems.

Rewards
A reward ID can no longer contain multiple rewards. As a result, the reward APIs have had the reward index parameter removed.

Quest Tracker
The quest tracker has been changed from two objects (QUEST_TRACKER and FOCUSED_QUEST_TRACKER) into just one object (FOCUSED_QUEST_TRACKER). The previous structure was a remnant of transitioning from one type of tracker to another. The co-dependency between the two led to a number of bugs including cases where the tracker would change the focused quest when you traveled to a different zone. All uses of QUEST_TRACKER now call the same functions on FOCUSED_QUEST_TRACKER.

Control Profiling
We have added the ability to count the number of controls created by different code paths. This can be used to profile the amount of controls created by your addon. To enable control profiling, set the user setting “ProfileControlCreation” to “1” before starting the game. ZO_DumpTopControlCreations(N) will output the top N sources of control creation ordered by controls created.

ZO_DumpControlCreationStacksForSource(searchTerm) will output all sources of control creation containing the search term. You can use this function with terms common to your lua and XML file paths to evaluate their control creation.

Control::OnRectChanged
A new handler has been added to all controls named “OnRectChanged”. It will fire anytime the top, bottom, left, or right of a control changes. The hander will pass the control followed by newLeft, newTop, newRight, newBottom, oldLeft, oldTop, oldRight, and oldBottom. This handler can fire quite frequently so be careful to evaluate the performance before making use of it.

Label::SetMinLineCount/minLineCount
This function/attribute will set the minimum number of lines that a Label can be.

Miscellaneous
  • StringToId64(stringId) – id.
    • Converts a string representation of an id4 into an id64.
  • GetItemLinkItemId(itemLink) – itemId.
    • Gets the item id from an item link.
  • DoesItemLinkFulfillJournalQuestCondition(link, journalQuestIndex, stepIndex, conditionIndex) – fulfillsCondition.
    • Returns if the linked item fulfills the chosen quest condition.
  • Added conditionType as a return to GetJournalQuestConditionInfo.
Gina Bruno
Senior Community Manager
Dev Tracker | Service Alerts | ESO Twitter | My Twitter
Staff Post
  • Reorx_Holybeard
    Reorx_Holybeard
    ✭✭✭✭✭
    Saved Variables Size
    We have updated the virtual machine to handle larger tables in saved variables. Please let us know if this helps with saved variable corruption problems.

    What was this changed to and (if possible) how exactly? Previously/currently the limit is at 2^17 (131072) unique constants per saved variable. Was this increased to 2^18 (262144) that Lua theoretically should support or more than that. I know Chip mentioned using 64-bit Lua as a possibility over on the ESOUI.com forums.

    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
    ✭✭✭✭✭
    Saved Variables Size
    We have updated the virtual machine to handle larger tables in saved variables. Please let us know if this helps with saved variable corruption problems.

    What was this changed to and (if possible) how exactly? Previously/currently the limit is at 2^17 (131072) unique constants per saved variable. Was this increased to 2^18 (262144) that Lua theoretically should support or more than that. I know Chip mentioned using 64-bit Lua as a possibility over on the ESOUI.com forums.

    To somewhat answer my own question...I've successfully tested saved variable files containing up 2^21 unique constants (2097152, a little more actually) without seeing any form of data corruption. This is x16 times larger than the current limit and should be more than enough seeing as you only see that amount of constants in unique cases.

    Nice work, thanks!

    Edit: I see on the ESOUI Forums Chip has posted this:
    With Summerset we've changed to using the 64bit byte codes which should fix this.

    So assumably the limit is at much, much larger than what I tested. I'll do my best to break it though...;)
    Edited by Reorx_Holybeard on April 25, 2018 1:53PM
    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!
  • calia1120
    calia1120
    ✭✭✭
    Quest Tracker
    The quest tracker has been changed from two objects (QUEST_TRACKER and FOCUSED_QUEST_TRACKER) into just one object (FOCUSED_QUEST_TRACKER). The previous structure was a remnant of transitioning from one type of tracker to another. The co-dependency between the two led to a number of bugs including cases where the tracker would change the focused quest when you traveled to a different zone. All uses of QUEST_TRACKER now call the same functions on FOCUSED_QUEST_TRACKER.

    Miscellaneous
    • DoesItemLinkFulfillJournalQuestCondition(link, journalQuestIndex, stepIndex, conditionIndex) – fulfillsCondition.
      • Returns if the linked item fulfills the chosen quest condition.
    • Added conditionType as a return to GetJournalQuestConditionInfo.

    TY for these bits especially!
    GM, Iron Bank of Bravos | The Psijic Order | Mara's Tester/Mara's Moxie | Dominion Imperial Guard
    Council of Nirn | elderscrollsalliance.com | Addon Dev - part of the Wykkyd code team
Sign In or Register to comment.