Updated API Version to 100007
First off, this patch has introduced a few bugs that the development community has been very helpful in addressing. Thanks for your help; we apologize for any inconvenience the issues create. The main bugs are related to displayName not being set properly, which leads to saved variable table corruption as well as some Lua table serialization issues with long strings and improperly escaped character sequences. Both of those issues are in the process of being fixed now, and we hope to take care of them quickly.
While we work on new systems, you’ll notice new, non-functional APIs appear. This time we've been working on some upcoming features for the dye, guild heraldry, guild trader, and chat bubble systems. To support the features of systems that use dyeing, a new control type called TextureComposite was added. It supports rendering multiple layers of textures within a single control for optimization reasons.
- Unit reaction types have been changed to remove “dead” and “interact” and instead only include typical reaction types (friendly, hostile, neutral, etc.).
- The ExperienceReason and VeteranPointReason enumerations have been consolidated into a single ProgressReason.
- The ItemTypes enumeration has been updated to include some new types and to differentiate between enchanting rune types.
- Added some new mouse cursor types in support of upcoming features. Some are already usable in-game (for things like Map Panning and Character Rotation).
Player reporting is improved with a new “quick report” feature. Bots and spammers can be reported from chat, mail, and in-world. When a quick report is filed against a player, they're added to a per-session filter that prevents their chat from appearing on your client. The per-session ignore list can be managed with:
- SetSessionIgnore(playerName, isIgnored)
- SubmitSpamReport(userName, reason) can be used to report a player for behavior reasons.
Chat logging got a minor improvement with the following functions (ToggleChatLog has been removed):
To prevent too many guild store queries in a short period of time, there's a cooldown period on searches. Check it with GetTradingHouseCooldownRemaining(), which returns the number of milliseconds remaining until the next search is legal.
Added GetKeyboardLayout in case the system keyboard type changes. This is primarily a notification function; currently, only generic layout types that match ESO's supported locales are used.
EULA details can now be queried in-game (exciting, we know):
- message, agreeText, disagreeText, hasAgreed = GetEULADetails(eulaType)
The mail API has been extended to include:
- displayName, characterName = GetMailSender(mailId)
- numAttachments, attachedMoney, codAmount = GetMailAttachmentInfo(mailId)
- unread, returned, fromSystem, fromCustomerService = GetMailFlags(mailId)
The progression API has been extended to include:
- xpAmount = GetNumExperiencePointsInLevel(level)
- vpAmount = GetNumVeteranPointsInRank(veteranRank)
- EVENT_DISCOVERY_EXPERIENCE (areaName, level, previousExperience, currentExperience)
- EVENT_EXPERIENCE_GAIN (reason, level, previousExperience, currentExperience)
- EVENT_GROUP_MEMBER_IN_REMOTE_REGION (unitTag, isInRemoteRegion)
- EVENT_LORE_BOOK_LEARNED_SKILL_EXPERIENCE (categoryIndex, collectionIndex, bookIndex, guildIndex, skillType, skillIndex, rank, previousXP, currentXP)
- EVENT_LORE_COLLECTION_COMPLETED (categoryIndex, collectionIndex, guildIndex)
- EVENT_LORE_COLLECTION_COMPLETED_SKILL_EXPERIENCE (categoryIndex, collectionIndex, bookIndex, guildIndex, skillType, skillIndex, rank, previousXP, currentXP)
- EVENT_OBJECTIVE_COMPLETED (zoneIndex, poiIndex, level, previousXP, currentXP, rank, previousPoints, currentPoints)
- EVENT_QUEST_COMPLETE (questName, level, previousXP, currentXP, rank, previousPoints, currentPoints)
- EVENT_SKILL_XP_UPDATE (skillType, skillIndex, reason, rank, previousXP, currentXP)
- EVENT_TRADING_HOUSE_OPERATION_TIME_OUT (responseType)
- EVENT_TRADING_HOUSE_SEARCH_COOLDOWN_UPDATE (cooldownMilliseconds)
- EVENT_VETERAN_POINTS_GAIN (reason, rank, previousPoints, currentPoints)
TextureComposite: This control type is used to draw several layers of textures in an efficient manner. See API notes for usage details.
Changed Control APIs (and updated XML control layouts):
- The Texture and Line controls' GetTextureInfo member has been removed and replaced with a more fine-grained API to query individual Texture attributes.
- Controls that render textures have all had SetPixelRoundingEnabled and IsPixelRoundingEnabled added. Pixel rounding determines how screen-space positioning works for controls. If enabled, the positions of the control's final screen rect are rounded to the next pixel value before being rendered (rather than letting the shader determine which pixels the control covers). This helps reduce jitter for animated controls, sometimes at the cost a legibility/blurriness.