--[[ This file and its accompanying XML file exist for when we decide to rename/refactor a system and want ensure backward compatibility for addons. Just alias the old functions and inherit any controls you change in a newly commented section. --]] -- Adds aliases to source object for the specified methods of target object. local function AddMethodAliases(sourceObject, targetObject, methodNameList) for _, methodName in ipairs(methodNameList) do internalassert(sourceObject[methodName] == nil, string.format("Method '%s' of sourceObject already exists.", methodName)) internalassert(type(targetObject[methodName]) == "function", string.format("Method '%s' of targetObject does not exist.", methodName)) sourceObject[methodName] = function(originalSelf, ...) return targetObject[methodName](targetObject, ...) end end end --ZO_MoneyInput Changes to ZO_CurrencyInput MONEY_INPUT = CURRENCY_INPUT ZO_DefaultMoneyInputField_Initialize = ZO_DefaultCurrencyInputField_Initialize ZO_DefaultMoneyInputField_SetUsePlayerGoldAsMax = ZO_DefaultCurrencyInputField_SetUsePlayerCurrencyAsMax ZO_DefaultMoneyInputField_SetGoldMax = ZO_DefaultCurrencyInputField_SetCurrencyMax ZO_DefaultMoneyInputField_SetGoldMin = ZO_DefaultCurrencyInputField_SetCurrencyMin ZO_DefaultMoneyInputField_SetMoney = ZO_DefaultCurrencyInputField_SetCurrencyAmount ZO_DefaultMoneyInputField_GetMoney = ZO_DefaultCurrencyInputField_GetCurrency --TopLevel CurrencyInput control ZO_MoneyInput = ZO_CurrencyInput EVENT_RESURRECT_FAILURE = EVENT_RESURRECT_RESULT RESURRECT_FAILURE_REASON_DECLINED = RESURRECT_RESULT_DECLINED RESURRECT_FAILURE_REASON_ALREADY_CONSIDERING = RESURRECT_RESULT_ALREADY_CONSIDERING RESURRECT_FAILURE_REASON_SOUL_GEM_IN_USE = RESURRECT_RESULT_SOUL_GEM_IN_USE RESURRECT_FAILURE_REASON_NO_SOUL_GEM = RESURRECT_RESULT_NO_SOUL_GEM -- Cadwell progression is now separate from player difficulty EVENT_DIFFICULTY_LEVEL_CHANGED = EVENT_CADWELL_PROGRESSION_LEVEL_CHANGED GetPlayerDifficultyLevel = GetCadwellProgressionLevel GetNumZonesForDifficultyLevel = GetNumZonesForCadwellProgressionLevel GetNumPOIsForDifficultyLevelAndZone = GetNumPOIsForCadwellProgressionLevelAndZone PLAYER_DIFFICULTY_LEVEL_FIRST_ALLIANCE = CADWELL_PROGRESSION_LEVEL_BRONZE PLAYER_DIFFICULTY_LEVEL_SECOND_ALLIANCE = CADWELL_PROGRESSION_LEVEL_SILVER PLAYER_DIFFICULTY_LEVEL_THIRD_ALLIANCE = CADWELL_PROGRESSION_LEVEL_GOLD -- Player Inventory List Control ZO_PlayerInventoryBackpack = ZO_PlayerInventoryList ZO_PlayerInventorySearch = ZO_PlayerInventorySearchFiltersTextSearch ZO_PlayerBankSearch = ZO_PlayerBankSearchFiltersTextSearch ZO_HouseBankSearch = ZO_HouseBankSearchFiltersTextSearch ZO_GuildBankSearch = ZO_GuildBankSearchFiltersTextSearch ZO_CraftBagSearch = ZO_CraftBagSearchFiltersTextSearch ZO_PlayerInventorySearchBox = ZO_PlayerInventorySearchFiltersTextSearchBox ZO_PlayerBankSearchBox = ZO_PlayerBankSearchFiltersTextSearchBox ZO_HouseBankSearchBox = ZO_HouseBankSearchFiltersTextSearchBox ZO_GuildBankSearchBox = ZO_GuildBankSearchFiltersTextSearchBox ZO_CraftBagSearchBox = ZO_CraftBagSearchFiltersTextSearchBox --Raid function rename GetRaidReviveCounterInfo = GetRaidReviveCountersRemaining --ItemStoleType is now OwnershipStatus ITEM_STOLEN_TYPE_ANY = OWNERSHIP_STATUS_ANY ITEM_STOLEN_TYPE_NOT_STOLEN = OWNERSHIP_STATUS_NOT_STOLEN ITEM_STOLEN_TYPE_STOLEN = OWNERSHIP_STATUS_STOLEN RESURRECT_FAILURE_REASON_ALREADY_CONSIDERING = RESURRECT_RESULT_ALREADY_CONSIDERING RESURRECT_FAILURE_REASON_DECLINED = RESURRECT_RESULT_DECLINED EVENT_GUILD_MEMBER_CHARACTER_VETERAN_RANK_CHANGED = EVENT_GUILD_MEMBER_CHARACTER_CHAMPION_POINTS_CHANGED EVENT_FRIEND_CHARACTER_VETERAN_RANK_CHANGED = EVENT_FRIEND_CHARACTER_CHAMPION_POINTS_CHANGED function GetItemLinkGlyphMinMaxLevels(itemLink) local minLevel, minChampPoints = GetItemLinkGlyphMinLevels(itemLink) local maxLevel = nil local maxChampPoints = nil return minLevel, maxLevel, minChampPoints, maxChampPoints end --Renamed some NameplateDisplayChoice settings NAMEPLATE_CHOICE_OFF = NAMEPLATE_CHOICE_NEVER NAMEPLATE_CHOICE_ON = NAMEPLATE_CHOICE_ALWAYS NAMEPLATE_CHOICE_HURT = NAMEPLATE_CHOICE_INJURED_OR_TARGETED --Stat Change STAT_WEAPON_POWER = STAT_WEAPON_AND_SPELL_DAMAGE --CombatMechanicType to CombatMechanicFlags POWERTYPE_INVALID = COMBAT_MECHANIC_FLAGS_INVALID POWERTYPE_MAGICKA = COMBAT_MECHANIC_FLAGS_MAGICKA POWERTYPE_HEALTH_BONUS = COMBAT_MECHANIC_FLAGS_HEALTH POWERTYPE_WEREWOLF = COMBAT_MECHANIC_FLAGS_WEREWOLF POWERTYPE_STAMINA = COMBAT_MECHANIC_FLAGS_STAMINA POWERTYPE_ULTIMATE = COMBAT_MECHANIC_FLAGS_ULTIMATE POWERTYPE_MOUNT_STAMINA = COMBAT_MECHANIC_FLAGS_MOUNT_STAMINA POWERTYPE_HEALTH = COMBAT_MECHANIC_FLAGS_HEALTH POWERTYPE_DAEDRIC = COMBAT_MECHANIC_FLAGS_DAEDRIC NUM_POWER_POOLS = COMBAT_MECHANIC_FLAGS_MAX_INDEX -- VR Removal GetUnitVeteranRank = GetUnitChampionPoints GetUnitVeteranPoints = GetUnitXP GetNumVeteranPointsInRank = GetNumChampionXPInChampionPoint GetItemRequiredVeteranRank = GetItemRequiredChampionPoints IsUnitVetBattleLeveled = IsUnitChampionBattleLeveled IsUnitVeteran = IsUnitChampion GetItemLinkRequiredVeteranRank = GetItemLinkRequiredChampionPoints GetGamepadVeteranRankIcon = ZO_GetGamepadChampionPointsIcon GetVeteranRankIcon = ZO_GetChampionPointsIcon GetMaxVeteranRank = GetChampionPointsPlayerProgressionCap VETERAN_POINTS_GAIN = EVENT_EXPERIENCE_GAIN VETERAN_POINTS_UPDATE = CHAMPION_POINT_UPDATE EVENT_FRIEND_CHARACTER_VETERAN_RANK_CHANGED = EVENT_FRIEND_CHARACTER_CHAMPION_POINTS_CHANGED EVENT_GUILD_MEMBER_CHARACTER_VETERAN_RANK_CHANGED = EVENT_GUILD_MEMBER_CHARACTER_CHAMPION_POINTS_CHANGED --Traits Changed ITEM_TRAIT_TYPE_ARMOR_EXPLORATION = ITEM_TRAIT_TYPE_ARMOR_PROSPEROUS ITEM_TRAIT_TYPE_WEAPON_WEIGHTED = ITEM_TRAIT_TYPE_WEAPON_DECISIVE --Dyeing Changed SetPendingEquippedItemDye = function(equipSlot, primary, secondary, accent) SetPendingSlotDyes(RESTYLE_MODE_EQUIPMENT, ZO_RESTYLE_DEFAULT_SET_INDEX, equipSlot, primary, secondary, accent) end GetPendingEquippedItemDye = function(equipSlot) return GetPendingSlotDyes(RESTYLE_MODE_EQUIPMENT, ZO_RESTYLE_DEFAULT_SET_INDEX, equipSlot) end -- Removed 'by-zone' scaling for OneTamriel. Zone is no longer relevant to quest rewards. GetJournalQuestRewardInfoInZone = function(zoneIndex, journalQuestIndex, rewardIndex) return GetJournalQuestRewardInfo(journalQuestIndex, rewardIndex) end --Merged these two events in to one event that also includes success EVENT_COLLECTIBLE_ON_COOLDOWN = EVENT_COLLECTIBLE_USE_RESULT EVENT_COLLECTIBLE_USE_BLOCKED = EVENT_COLLECTIBLE_USE_RESULT -- Renamed quest zone display type function to match the others -- Renamed InstanceDisplayType to ZoneDisplayType GetJournalInstanceDisplayType = GetJournalQuestZoneDisplayType GetJournalQuestInstanceDisplayType = GetJournalQuestZoneDisplayType INSTANCE_DISPLAY_TYPE_NONE = ZONE_DISPLAY_TYPE_NONE INSTANCE_DISPLAY_TYPE_SOLO = ZONE_DISPLAY_TYPE_SOLO INSTANCE_DISPLAY_TYPE_DUNGEON = ZONE_DISPLAY_TYPE_DUNGEON INSTANCE_DISPLAY_TYPE_RAID = ZONE_DISPLAY_TYPE_RAID INSTANCE_DISPLAY_TYPE_GROUP_DELVE = ZONE_DISPLAY_TYPE_GROUP_DELVE INSTANCE_DISPLAY_TYPE_GROUP_AREA = ZONE_DISPLAY_TYPE_GROUP_AREA INSTANCE_DISPLAY_TYPE_PUBLIC_DUNGEON = ZONE_DISPLAY_TYPE_PUBLIC_DUNGEON INSTANCE_DISPLAY_TYPE_DELVE = ZONE_DISPLAY_TYPE_DELVE INSTANCE_DISPLAY_TYPE_HOUSING = ZONE_DISPLAY_TYPE_HOUSING INSTANCE_DISPLAY_TYPE_BATTLEGROUND = ZONE_DISPLAY_TYPE_BATTLEGROUND INSTANCE_DISPLAY_TYPE_ZONE_STORY = ZONE_DISPLAY_TYPE_ZONE_STORY INSTANCE_DISPLAY_TYPE_COMPANION = ZONE_DISPLAY_TYPE_COMPANION ZO_ANY_INSTANCE_DISPLAY_TYPE = ZO_ANY_ZONE_DISPLAY_TYPE --Recipes can now have multiple tradeskill requirements GetItemLinkRecipeRankRequirement = function(itemLink) for i = 1, GetItemLinkRecipeNumTradeskillRequirements(itemLink) do local tradeskill, levelRequirement = GetItemLinkRecipeTradeskillRequirement(itemLink, i) if tradeskill == CRAFTING_TYPE_PROVISIONING then return levelRequirement end end return 0 end --renamed this type COLLECTIBLE_CATEGORY_TYPE_TROPHY = COLLECTIBLE_CATEGORY_TYPE_MEMENTO --Condensed these into one function IsPOIWayshrine = function(zoneIndex, poiIndex) return GetPOIType(zoneIndex, poiIndex) == POI_TYPE_WAYSHRINE end IsPOIPublicDungeon = function(zoneIndex, poiIndex) return GetPOIType(zoneIndex, poiIndex) == POI_TYPE_PUBLIC_DUNGEON end IsPOIGroupDungeon = function(zoneIndex, poiIndex) return GetPOIType(zoneIndex, poiIndex) == POI_TYPE_GROUP_DUNGEON end -- Added category to item tags GetItemLinkItemTagDescription = function(itemLink, index) local description, category = GetItemLinkItemTagInfo(itemLink, index) return description end --Switched Activity Finder API from activityType and index based to Id based function GetCurrentLFGActivity() local activityId = GetCurrentLFGActivityId() if activityId > 0 then return GetActivityTypeAndIndex(activityId) end end do local function BasicTypeIndexToIdTemplate(idFunction, activityType, index) local activityId = GetActivityIdByTypeAndIndex(activityType, index) return idFunction(activityId) end GetLFGOption = function(...) return BasicTypeIndexToIdTemplate(GetActivityInfo, ...) end GetLFGOptionKeyboardDescriptionTextures = function(...) return BasicTypeIndexToIdTemplate(GetActivityKeyboardDescriptionTextures, ...) end GetLFGOptionGamepadDescriptionTexture = function(...) return BasicTypeIndexToIdTemplate(GetActivityGamepadDescriptionTexture, ...) end GetLFGOptionGroupType = function(...) return BasicTypeIndexToIdTemplate(GetActivityGroupType, ...) end DoesPlayerMeetLFGLevelRequirements = function(...) return BasicTypeIndexToIdTemplate(DoesPlayerMeetActivityLevelRequirements, ...) end DoesGroupMeetLFGLevelRequirements = function(...) return BasicTypeIndexToIdTemplate(DoesGroupMeetActivityLevelRequirements, ...) end GetRequiredLFGCollectibleId = function(...) return BasicTypeIndexToIdTemplate(GetRequiredActivityCollectibleId, ...) end end function AddGroupFinderSearchEntry(activityType, index) if index then local activityId = GetActivityIdByTypeAndIndex(activityType, index) AddActivityFinderSpecificSearchEntry(activityId) end end function GetLFGRequestInfo(requestIndex) local activityId = GetActivityRequestIds() return GetActivityTypeAndIndex(activityId) end function GetLFGFindReplacementNotificationInfo() local activityId = GetActivityFindReplacementNotificationInfo() if activityId then return GetActivityTypeAndIndex(activityId) end end function GetLFGAverageRoleTimeByActivity(activityType, index, role) local activityId = GetActivityIdByTypeAndIndex(activityType, index) return GetActivityAverageRoleTime(activityId, role) end -- Queueing by activity type is no longer supported, replaced by LFGSets function AddActivityFinderRandomSearchEntry() -- Do nothing end function DoesLFGActivityHasAllOption() return false end function GetLFGActivityRewardData() local REWARD_UI_DATA_ID = 0 local XP_REWARD = 0 return REWARD_UI_DATA_ID, XP_REWARD end GetNumLFGOptions = GetNumActivitiesByType GetNumLFGRequests = GetNumActivityRequests HasLFGFindReplacementNotification = HasActivityFindReplacementNotification AcceptLFGFindReplacementNotification = AcceptActivityFindReplacementNotification DeclineLFGFindReplacementNotification = DeclineActivityFindReplacementNotification --Used to be dungeon only. Now there's also battlegrounds. Should use GetLFGCooldownTimeRemainingSeconds now. function IsEligibleForDailyActivityReward() return IsActivityEligibleForDailyReward(LFG_ACTIVITY_DUNGEON) end --Renamed the objective functions to indicate that they aren't specific to AvA anymore GetNumAvAObjectives = GetNumObjectives GetAvAObjectiveKeysByIndex = GetObjectiveIdsForIndex GetAvAObjectiveInfo = GetObjectiveInfo GetAvAObjectivePinInfo = GetObjectivePinInfo GetAvAObjectiveSpawnPinInfo = GetObjectiveSpawnPinInfo IsAvAObjectiveInBattleground = IsBattlegroundObjective --Exposed the quest item id instead of duplicating the tooltip function for each system GetQuestLootItemTooltipInfo = function(lootId) local questItemId = GetLootQuestItemId(lootId) local itemName = GetQuestItemName(questItemId) local tooltipText = GetQuestItemTooltipText(questItemId) return GetString(SI_ITEM_FORMAT_STR_QUEST_ITEM), itemName, tooltipText end GetQuestToolTooltipInfo = function(questIndex, toolIndex) local questItemId = GetQuestToolQuestItemId(questIndex, toolIndex) local itemName = GetQuestItemName(questItemId) local tooltipText = GetQuestItemTooltipText(questItemId) return GetString(SI_ITEM_FORMAT_STR_QUEST_ITEM), itemName, tooltipText end GetQuestItemTooltipInfo = function(questIndex, stepIndex, conditionIndex) local questItemId = GetQuestConditionQuestItemId(questIndex, stepIndex, conditionIndex) local itemName = GetQuestItemName(questItemId) local tooltipText = GetQuestItemTooltipText(questItemId) return GetString(SI_ITEM_FORMAT_STR_QUEST_ITEM), itemName, tooltipText end GetNumGuildPermissions = function() return GUILD_PERMISSION_MAX_VALUE end -- Removal of ItemStyle Enum function GetNumSmithingStyleItems() return GetHighestItemStyleId() end function GetFirstKnownStyleIndex() return GetFirstKnownItemStyleId() end function GetSmithingStyleItemInfo(itemStyleId) local styleItemLink = GetItemStyleMaterialLink(itemStyleId) local alwaysHideIfLocked = GetItemStyleInfo(itemStyleId) local name = GetItemLinkName(styleItemLink) local icon, sellPrice, meetsUsageRequirement = GetItemLinkInfo(styleItemLink) local displayQuality = GetItemLinkDisplayQuality(styleItemLink) return name, icon, sellPrice, meetsUsageRequirement, itemStyleId, displayQuality, alwaysHideIfLocked end ITEMSTYLE_NONE = 0 ITEMSTYLE_RACIAL_BRETON = 1 ITEMSTYLE_RACIAL_REDGUARD = 2 ITEMSTYLE_RACIAL_ORC = 3 ITEMSTYLE_RACIAL_DARK_ELF = 4 ITEMSTYLE_RACIAL_NORD = 5 ITEMSTYLE_RACIAL_ARGONIAN = 6 ITEMSTYLE_RACIAL_HIGH_ELF = 7 ITEMSTYLE_RACIAL_WOOD_ELF = 8 ITEMSTYLE_RACIAL_KHAJIIT = 9 ITEMSTYLE_UNIQUE = 10 ITEMSTYLE_ORG_THIEVES_GUILD = 11 ITEMSTYLE_ORG_DARK_BROTHERHOOD = 12 ITEMSTYLE_DEITY_MALACATH = 13 ITEMSTYLE_AREA_DWEMER = 14 ITEMSTYLE_AREA_ANCIENT_ELF = 15 ITEMSTYLE_DEITY_AKATOSH = 16 ITEMSTYLE_AREA_REACH = 17 ITEMSTYLE_ENEMY_BANDIT = 18 ITEMSTYLE_ENEMY_PRIMITIVE = 19 ITEMSTYLE_ENEMY_DAEDRIC = 20 ITEMSTYLE_DEITY_TRINIMAC = 21 ITEMSTYLE_AREA_ANCIENT_ORC = 22 ITEMSTYLE_ALLIANCE_DAGGERFALL = 23 ITEMSTYLE_ALLIANCE_EBONHEART = 24 ITEMSTYLE_ALLIANCE_ALDMERI = 25 ITEMSTYLE_UNDAUNTED = 26 ITEMSTYLE_RAIDS_CRAGLORN = 27 ITEMSTYLE_GLASS = 28 ITEMSTYLE_AREA_XIVKYN = 29 ITEMSTYLE_AREA_SOUL_SHRIVEN = 30 ITEMSTYLE_ENEMY_DRAUGR = 31 ITEMSTYLE_ENEMY_MAORMER = 32 ITEMSTYLE_AREA_AKAVIRI = 33 ITEMSTYLE_RACIAL_IMPERIAL = 34 ITEMSTYLE_AREA_YOKUDAN = 35 ITEMSTYLE_UNIVERSAL = 36 ITEMSTYLE_AREA_REACH_WINTER = 37 ITEMSTYLE_AREA_TSAESCI = 38 ITEMSTYLE_ENEMY_MINOTAUR = 39 ITEMSTYLE_EBONY = 40 ITEMSTYLE_ORG_ABAHS_WATCH = 41 ITEMSTYLE_HOLIDAY_SKINCHANGER = 42 ITEMSTYLE_ORG_MORAG_TONG = 43 ITEMSTYLE_AREA_RA_GADA = 44 ITEMSTYLE_ENEMY_DROMOTHRA = 45 ITEMSTYLE_ORG_ASSASSINS = 46 ITEMSTYLE_ORG_OUTLAW = 47 ITEMSTYLE_ORG_REDORAN = 48 ITEMSTYLE_ORG_HLAALU = 49 ITEMSTYLE_ORG_ORDINATOR = 50 ITEMSTYLE_ORG_TELVANNI = 51 ITEMSTYLE_ORG_BUOYANT_ARMIGER = 52 ITEMSTYLE_HOLIDAY_FROSTCASTER = 53 ITEMSTYLE_AREA_ASHLANDER = 54 ITEMSTYLE_ORG_WORM_CULT = 55 ITEMSTYLE_ENEMY_SILKEN_RING = 56 ITEMSTYLE_ENEMY_MAZZATUN = 57 ITEMSTYLE_HOLIDAY_GRIM_HARLEQUIN = 58 ITEMSTYLE_HOLIDAY_HOLLOWJACK = 59 ITEMSTYLE_MIN_VALUE = 1 ITEMSTYLE_MAX_VALUE = GetHighestItemStyleId() --Currency Generalization function GetCurrentMoney() return GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER) end function GetCarriedCurrencyAmount(currencyType) return GetCurrencyAmount(currencyType, CURRENCY_LOCATION_CHARACTER) end function GetBankedCurrencyAmount(currencyType) return GetCurrencyAmount(currencyType, CURRENCY_LOCATION_BANK) end function GetGuildBankedMoney() return GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_GUILD_BANK) end function GetGuildBankedCurrencyAmount(currencyType) return GetCurrencyAmount(currencyType, CURRENCY_LOCATION_GUILD_BANK) end function GetMaxCarriedCurrencyAmount(currencyType) return GetMaxPossibleCurrency(currencyType, CURRENCY_LOCATION_CHARACTER) end function GetMaxBankCurrencyAmount(currencyType) return GetMaxPossibleCurrency(currencyType, CURRENCY_LOCATION_BANK) end function GetMaxGuildBankCurrencyAmount(currencyType) return GetMaxPossibleCurrency(currencyType, CURRENCY_LOCATION_GUILD_BANK) end function GetMaxBankWithdrawal(currencyType) return GetMaxCurrencyTransfer(currencyType, CURRENCY_LOCATION_BANK, CURRENCY_LOCATION_CHARACTER) end function GetMaxBankDeposit(currencyType) return GetMaxCurrencyTransfer(currencyType, CURRENCY_LOCATION_CHARACTER, CURRENCY_LOCATION_BANK) end function GetMaxGuildBankWithdrawal(currencyType) return GetMaxCurrencyTransfer(currencyType, CURRENCY_LOCATION_GUILD_BANK, CURRENCY_LOCATION_CHARACTER) end function GetMaxGuildBankDeposit(currencyType) return GetMaxCurrencyTransfer(currencyType, CURRENCY_LOCATION_CHARACTER, CURRENCY_LOCATION_GUILD_BANK) end function DepositCurrencyIntoBank(currencyType, amount) TransferCurrency(currencyType, amount, CURRENCY_LOCATION_CHARACTER, CURRENCY_LOCATION_BANK) end function WithdrawCurrencyFromBank(currencyType, amount) TransferCurrency(currencyType, amount, CURRENCY_LOCATION_BANK, CURRENCY_LOCATION_CHARACTER) end function DepositMoneyIntoGuildBank(amount) TransferCurrency(CURT_MONEY, amount, CURRENCY_LOCATION_CHARACTER, CURRENCY_LOCATION_GUILD_BANK) end function WithdrawMoneyFromGuildBank(amount) TransferCurrency(CURT_MONEY, amount, CURRENCY_LOCATION_GUILD_BANK, CURRENCY_LOCATION_CHARACTER) end function DepositCurrencyIntoGuildBank(currencyType, amount) TransferCurrency(currencyType, amount, CURRENCY_LOCATION_CHARACTER, CURRENCY_LOCATION_GUILD_BANK) end function WithdrawCurrencyFromGuildBank(currencyType, amount) TransferCurrency(currencyType, amount, CURRENCY_LOCATION_GUILD_BANK, CURRENCY_LOCATION_CHARACTER) end function GetBankedMoney() return GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_BANK) end function DepositMoneyIntoBank(amount) DepositCurrencyIntoBank(CURT_MONEY, amount) end function WithdrawMoneyFromBank(amount) WithdrawCurrencyFromBank(CURT_MONEY, amount) end function GetBankedTelvarStones() return GetCurrencyAmount(CURT_TELVAR_STONES, CURRENCY_LOCATION_BANK) end function DepositTelvarStonesIntoBank(amount) DepositCurrencyIntoBank(CURT_TELVAR_STONES, amount) end function WithdrawTelvarStonesFromBank(amount) WithdrawCurrencyFromBank(CURT_TELVAR_STONES, amount) end function GetAlliancePoints() return GetCurrencyAmount(CURT_ALLIANCE_POINTS, CURRENCY_LOCATION_CHARACTER) end MAX_PLAYER_MONEY = MAX_PLAYER_CURRENCY function ZO_Currency_GetPlatformFormattedGoldIcon() return ZO_Currency_GetPlatformFormattedCurrencyIcon(CURT_MONEY) end -- The concept of "abilities earned at a level" went away when we added Skill Lines, so we finally removed API for it function GetNumAbilitiesLearnedForLevel(level, isProgression) if level == 0 then return GetNumAbilities() else return 0 end end -- The concept of "abilities earned at a level" went away when we added Skill Lines, so we finally removed API for it function GetLearnedAbilityInfoForLevel(level, learnedIndex, isProgression) if level == 0 then local name, textureFile, _, _, _, _ = GetAbilityInfoByIndex(learnedIndex) return name, textureFile, learnedIndex, 0 else return "", "", 0, 0 end end -- -- Map related aliases -- -- Battleground pin enum fixup MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_A_NEUTRAL = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_A_NEUTRAL MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_A_FIRE_DRAKES = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_A_FIRE_DRAKES MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_A_PIT_DAEMONS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_A_PIT_DAEMONS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_A_STORM_LORDS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_A_STORM_LORDS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_B_NEUTRAL = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_B_NEUTRAL MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_B_FIRE_DRAKES = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_B_FIRE_DRAKES MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_B_PIT_DAEMONS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_B_PIT_DAEMONS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_B_STORM_LORDS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_B_STORM_LORDS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_C_NEUTRAL = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_C_NEUTRAL MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_C_FIRE_DRAKES = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_C_FIRE_DRAKES MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_C_PIT_DAEMONS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_C_PIT_DAEMONS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_C_STORM_LORDS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_C_STORM_LORDS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_D_NEUTRAL = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_D_NEUTRAL MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_D_FIRE_DRAKES = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_D_FIRE_DRAKES MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_D_PIT_DAEMONS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_D_PIT_DAEMONS MAP_PIN_TYPE_BGPIN_MULTI_CAPTURE_AREA_D_STORM_LORDS = MAP_PIN_TYPE_BGPIN_CAPTURE_AREA_D_STORM_LORDS -- World Event Unit pin enum fixup MAP_PIN_TYPE_DRAGON_COMBAT_HEALTHY = MAP_PIN_TYPE_UNIT_COMBAT_HEALTHY MAP_PIN_TYPE_DRAGON_COMBAT_WEAK = MAP_PIN_TYPE_UNIT_COMBAT_WEAK MAP_PIN_TYPE_DRAGON_IDLE_HEALTHY = MAP_PIN_TYPE_UNIT_IDLE_HEALTHY MAP_PIN_TYPE_DRAGON_IDLE_WEAK = MAP_PIN_TYPE_UNIT_IDLE_WEAK ZO_MapPin.PulseAninmation = ZO_MapPin.PulseAnimation --Added Tracking Level Map Pin Function function SetMapQuestPinsAssisted(questIndex, assisted) SetMapQuestPinsTrackingLevel(questIndex, assisted and TRACKING_LEVEL_ASSISTED or TRACKING_LEVEL_UNTRACKED) end function ZO_WorldMap_RefreshMapFrameAnchor() WORLD_MAP_MANAGER:RefreshMapFrameAnchor() end function ZO_WorldMap_PushSpecialMode(mode) WORLD_MAP_MANAGER:PushSpecialMode(mode) end function ZO_WorldMap_PopSpecialMode() WORLD_MAP_MANAGER:PopSpecialMode() end function ZO_WorldMap_GetMode() return WORLD_MAP_MANAGER:GetMode() end function ZO_WorldMap_IsMapChangingAllowed(zoomDirection) return WORLD_MAP_MANAGER:IsMapChangingAllowed(zoomDirection) end function ZO_WorldMap_GetFilterValue(option) return WORLD_MAP_MANAGER:GetFilterValue(option) end function ZO_WorldMap_AreStickyPinsEnabledForPinGroup(pinGroup) return WORLD_MAP_MANAGER:AreStickyPinsEnabledForPinGroup(pinGroup) end function GetMapInfo(mapIndex) local name, mapType, mapContentType, zoneIndex, description = GetMapInfoByIndex(mapIndex) -- The initial function GetMapInfo treated a luaIndex like an Id. As a result the index was off by one -- To keep this backward compatible function consistent with the previous behavior we have to offset it by one return name, mapType, mapContentType, zoneIndex - 1, description end -- -- End map related aliases -- VISUAL_LAYER_HEADWEAR = VISUAL_LAYER_HAT -- Unifying smithing filters ZO_SMITHING_IMPROVEMENT_SHARED_FILTER_TYPE_ARMOR = SMITHING_FILTER_TYPE_ARMOR ZO_SMITHING_IMPROVEMENT_SHARED_FILTER_TYPE_WEAPONS = SMITHING_FILTER_TYPE_WEAPONS ZO_SMITHING_EXTRACTION_SHARED_FILTER_TYPE_ARMOR = SMITHING_FILTER_TYPE_ARMOR ZO_SMITHING_EXTRACTION_SHARED_FILTER_TYPE_WEAPONS = SMITHING_FILTER_TYPE_WEAPONS ZO_SMITHING_EXTRACTION_SHARED_FILTER_TYPE_RAW_MATERIALS = SMITHING_FILTER_TYPE_RAW_MATERIALS ZO_SMITHING_CREATION_FILTER_TYPE_WEAPONS = SMITHING_FILTER_TYPE_WEAPONS ZO_SMITHING_CREATION_FILTER_TYPE_ARMOR = SMITHING_FILTER_TYPE_ARMOR ZO_SMITHING_CREATION_FILTER_TYPE_SET_WEAPONS = SMITHING_FILTER_TYPE_SET_WEAPONS ZO_SMITHING_CREATION_FILTER_TYPE_SET_ARMOR = SMITHING_FILTER_TYPE_SET_ARMOR ZO_SMITHING_RESEARCH_FILTER_TYPE_WEAPONS = SMITHING_FILTER_TYPE_WEAPONS ZO_SMITHING_RESEARCH_FILTER_TYPE_ARMOR = SMITHING_FILTER_TYPE_ARMOR ZO_RETRAIT_FILTER_TYPE_ARMOR = SMITHING_FILTER_TYPE_ARMOR ZO_RETRAIT_FILTER_TYPE_WEAPONS = SMITHING_FILTER_TYPE_WEAPONS SMITHING_MODE_REFINMENT = SMITHING_MODE_REFINEMENT -- Rewards Refactor EVENT_CLAIM_LEVEL_UP_REWARD_RESULT = EVENT_CLAIM_REWARD_RESULT -- Collectible entitlement restrictions are now handled on the acquisition end only function DoesCollectibleRequireEntitlement(collectibleId) return false end -- Crafting animation bugfix. Please also consider ZO_CraftingUtils_IsPerformingCraftProcess() IsPerformingCraftProcess = IsAwaitingCraftingProcessResponse --Collectible hide mode rework function IsCollectibleHiddenWhenLockedDynamic(collectibleId) return GetCollectibleHideMode(collectibleId) == COLLECTIBLE_HIDE_MODE_WHEN_LOCKED_REQUIREMENT end function IsCollectibleHiddenWhenLocked(collectibleId) if IsCollectibleHiddenWhenLockedDynamic(collectibleId) then return IsCollectibleDynamicallyHidden(collectibleId) else return GetCollectibleHideMode(collectibleId) == COLLECTIBLE_HIDE_MODE_WHEN_LOCKED end end -- LFG now only supports single role selection do local function RoleToRoles(role) local isDPS = false local isHealer = false local isTank = false if role == LFG_ROLE_DPS then isDPS = true elseif role == LFG_ROLE_HEAL then isHealer = true elseif role == LFG_ROLE_TANK then isTank = true end return isDPS, isHealer, isTank end function GetGroupMemberRoles(unitTag) local role = GetGroupMemberSelectedRole(unitTag) return RoleToRoles(role) end function GetPlayerRoles() local role = GetSelectedLFGRole() return RoleToRoles(role) end end GetGroupMemberAssignedRole = GetGroupMemberSelectedRole function DoAllGroupMembersHavePreferredRole() return true end function UpdatePlayerRole(role, selected) if selected then UpdateSelectedLFGRole(role) end end -- Renamed to specify being transformed into werewolf form rather than having the skill line IsWerewolf = IsPlayerInWerewolfForm --Skills refactor SelectSlotSkillAbility = SlotSkillAbilityInSlot function ZO_Skills_GetIconsForSkillType(skillType) local skillTypeData = SKILLS_DATA_MANAGER:GetSkillTypeData(skillType) if skillTypeData then local normal, pressed, mouseOver = skillTypeData:GetKeyboardIcons() local announce = skillTypeData:GetAnnounceIcon() return pressed, normal, mouseOver, announce end end function ZO_Skills_GenerateAbilityName(stringIndex, name, currentUpgradeLevel, maxUpgradeLevel, progressionIndex) if currentUpgradeLevel and maxUpgradeLevel then return zo_strformat(stringIndex, name, currentUpgradeLevel, maxUpgradeLevel) elseif progressionIndex then local _, _, rank = GetAbilityProgressionInfo(progressionIndex) if rank > 0 then return zo_strformat(SI_ABILITY_NAME_AND_RANK, name, rank) end end return zo_strformat(SI_SKILLS_ENTRY_NAME_FORMAT, name) end function ZO_Skills_PurchaseAbility(skillType, skillLineIndex, skillIndex) local skillData = SKILLS_DATA_MANAGER:GetSkillDataByIndices(skillType, skillLineIndex, skillIndex) if skillData then skillData:GetPointAllocator():Purchase() end end function ZO_Skills_UpgradeAbility(skillType, skillLineIndex, skillIndex) local skillData = SKILLS_DATA_MANAGER:GetSkillDataByIndices(skillType, skillLineIndex, skillIndex) if skillData then skillData:GetPointAllocator():IncreaseRank() end end function ZO_Skills_MorphAbility(progressionIndex, morphSlot) local skillType, skillLineIndex, skillIndex = GetSkillAbilityIndicesFromProgressionIndex(progressionIndex) local skillData = SKILLS_DATA_MANAGER:GetSkillDataByIndices(skillType, skillLineIndex, skillIndex) if skillData then skillData:GetPointAllocator():Morph(morphSlot) end end function ZO_Skills_AbilityFailsWerewolfRequirement(skillType, skillLineIndex) local skillLineData = SKILLS_DATA_MANAGER:GetSkillLineDataByIndices(skillType, skillLineIndex) return IsInWerewolfForm() and not skillLineData:IsWerewolf() end function ZO_Skills_OnlyWerewolfAbilitiesAllowedAlert() ZO_AlertEvent(EVENT_HOT_BAR_RESULT, HOT_BAR_RESULT_CANNOT_USE_WHILE_WEREWOLF) end EVENT_SKILL_ABILITY_PROGRESSIONS_UPDATED = EVENT_SKILLS_FULL_UPDATE function GetSkillLineInfo(skillType, skillLineIndex) local skillLineData = SKILLS_DATA_MANAGER:GetSkillLineDataByIndices(skillType, skillLineIndex) if skillLineData then return skillLineData:GetName(), skillLineData:GetCurrentRank(), skillLineData:IsAvailable(), skillLineData:GetId(), skillLineData:IsAdvised(), skillLineData:GetUnlockText(), skillLineData:IsActive(), skillLineData:IsDiscovered() end return "", 1, false, 0, false, "", false, false end -- Campaign Bonus Ability Refactor function GetArtifactScoreBonusInfo(alliance, artifactType, index) local abilityId = GetArtifactScoreBonusAbilityId(alliance, artifactType, index) local name = GetAbilityName(abilityId) local icon = GetAbilityIcon(abilityId) local description = GetAbilityDescription(abilityId) return name, icon, description end function GetEmperorAllianceBonusInfo(campaignId, alliance) local abilityId = GetEmperorAllianceBonusAbilityId(campaignId, alliance) local name = GetAbilityName(abilityId) local icon = GetAbilityIcon(abilityId) local description = GetAbilityDescription(abilityId) return name, icon, description end function GetKeepScoreBonusInfo(index) local abilityId = GetKeepScoreBonusAbilityId(index) local name = GetAbilityName(abilityId) local icon = GetAbilityIcon(abilityId) local description = GetAbilityDescription(abilityId) return name, icon, description end -- Action slots refactor EVENT_ACTION_SLOTS_FULL_UPDATE = EVENT_ACTION_SLOTS_ACTIVE_HOTBAR_UPDATED EVENT_ACTION_BAR_SLOTTING_ALLOWED_STATE_CHANGED = EVENT_ACTION_BAR_IS_RESPECCABLE_BAR_STATE_CHANGED IsActionBarSlottingAllowed = IsActionBarRespeccable function GetCollectibleCurrentActionBarSlot(collectibleId) return FindActionSlotMatchingSimpleAction(ACTION_TYPE_COLLECTIBLE, collectibleId) end function GetFirstFreeValidSlotForCollectible(collectibleId) return GetFirstFreeValidSlotForSimpleAction(ACTION_TYPE_COLLECTIBLE, collectibleId) end -- You can now weapon swap to unarmed, so this function no longer means anything to the UI function HasActivatableSwapWeaponsEquipped() return true end -- rename rankIndex -> rank: ranks are from 1-4, and not array indices GetSkillLineProgressionAbilityRankIndex = GetSkillLineProgressionAbilityRank GetUpgradeSkillHighestRankIndexAvailableAtSkillLineRank = GetUpgradeSkillHighestRankAvailableAtSkillLineRank -- removed placeholder collectibles function ZO_CollectibleData:IsPlaceholder() return false end -- Renamed to better reflect behavior: the output isn't localized, it's delimited. ZO_LocalizeDecimalNumber = ZO_CommaDelimitDecimalNumber -- Removed alliance war guest campaigns. You can now join any campaign, so no need to guest anywhere. function GetGuestCampaignId() return 0 end function GetCampaignGuestCooldown() return 0 end function SwitchGuestCampaign(campaignId) -- do nothing end GetAllianceBannerIcon = ZO_GetAllianceSymbolIcon -- GetCraftingSkillLineIndices removed function GetCraftingSkillLineIndices(tradeskillType) local skillLineData = SKILLS_DATA_MANAGER:GetCraftingSkillLineData(tradeskillType) if skillLineData then return skillLineData:GetIndices() end return 0, 0 end -- Deconstruction now supports multiple items per deconstruct function ExtractOrRefineSmithingItem(bagId, slotIndex) local isRefine = CanItemBeRefined(bagId, slotIndex, GetCraftingInteractionType()) PrepareDeconstructMessage() local quantity = isRefine and GetRequiredSmithingRefinementStackSize() or 1 if AddItemToDeconstructMessage(bagId, slotIndex, quantity) then SendDeconstructMessage() end end function ExtractEnchantingItem(bagId, slotIndex) PrepareDeconstructMessage() if AddItemToDeconstructMessage(bagId, slotIndex, 1) then SendDeconstructMessage() end end function CanItemBeSmithingExtractedOrRefined(bagId, slotIndex, craftingType) return CanItemBeRefined(bagId, slotIndex, craftingType) or CanItemBeDeconstructed(bagId, slotIndex, craftingType) end -- The only information you need to determine if a trait is known is the pattern function IsSmithingTraitKnownForResult(patternIndex, materialIndex, materialQuantity, styleId, traitIndex) local traitType = traitIndex - 1 -- traitIndex is just the trait type offset by one so it behaves like a lua index, let's just manually convert return IsSmithingTraitKnownForPattern(patternIndex, traitType) end -- CHAT_SYSTEM refactor -- Many of the internals/method calls have changed in chat system to support multiple chat systems at once. -- This will preserve compatibility with addons that add messages to chat using CHAT_SYSTEM:AddMessage(), but more complex chat addons may need rewrites. CHAT_SYSTEM = KEYBOARD_CHAT_SYSTEM function CHAT_SYSTEM:AddMessage(messageText) return CHAT_ROUTER:AddSystemMessage(messageText) end function ZO_ChatSystem_GetEventHandlers() return CHAT_ROUTER:GetRegisteredMessageFormatters() end function ZO_ChatEvent(eventKey, ...) CHAT_ROUTER:FormatAndAddChatMessage(eventKey, ...) end function ZO_ChatSystem_AddEventHandler(eventKey, eventFormatter) CHAT_ROUTER:RegisterMessageFormatter(eventKey, eventFormatter) end -- State machine refactor function ZO_CrownCratesStateMachine:IsCurrentStateByName(stateName) return self:IsCurrentState(stateName) end HousingEditorPushFurniture = HousingEditorPushSelectedObject HousingEditorMoveFurniture = HousingEditorMoveSelectedObject HousingEditorRotateFurniture = HousingEditorRotateSelectedObject HousingEditorStraightenFurniture = HousingEditorStraightenSelectedObject function ZO_ItemPreview_Shared:RemoveFragmentImmediately(fragment) SCENE_MANAGER:RemoveFragmentImmediately(fragment) end -- Object Pools function ZO_ObjectPool:GetExistingObject(objectKey) return self:GetActiveObject(objectKey) end function ZO_MetaPool:GetExistingObject(objectKey) return self:GetActiveObject(objectKey) end -- Create a separate item display quality distinct from an item's functional quality support TOOLTIP_GAME_DATA_STOLEN = TOOLTIP_GAME_DATA_MYTHIC_OR_STOLEN ITEM_QUALITY_TRASH = ITEM_FUNCTIONAL_QUALITY_TRASH ITEM_QUALITY_NORMAL = ITEM_FUNCTIONAL_QUALITY_NORMAL ITEM_QUALITY_MAGIC = ITEM_FUNCTIONAL_QUALITY_MAGIC ITEM_QUALITY_ARCANE = ITEM_FUNCTIONAL_QUALITY_ARCANE ITEM_QUALITY_ARTIFACT = ITEM_FUNCTIONAL_QUALITY_ARTIFACT ITEM_QUALITY_LEGENDARY = ITEM_FUNCTIONAL_QUALITY_LEGENDARY ITEM_QUALITY_MIN_VALUE = ITEM_FUNCTIONAL_QUALITY_MIN_VALUE ITEM_QUALITY_MAX_VALUE = ITEM_FUNCTIONAL_QUALITY_MAX_VALUE ITEM_QUALITY_ITERATION_BEGIN = ITEM_FUNCTIONAL_QUALITY_ITERATION_BEGIN ITEM_QUALITY_ITERATION_END = ITEM_FUNCTIONAL_QUALITY_ITERATION_END GetItemQuality = GetItemFunctionalQuality GetItemLinkQuality = GetItemLinkFunctionalQuality ZO_FurnitureDataBase.GetQuality = ZO_FurnitureDataBase.GetDisplayQuality ZO_PlaceableFurnitureItem.GetQuality = ZO_PlaceableFurnitureItem.GetDisplayQuality ZO_RetrievableFurniture.GetQuality = ZO_RetrievableFurniture.GetDisplayQuality ZO_HousingMarketProduct.GetQuality = ZO_HousingMarketProduct.GetDisplayQuality ZO_RewardData.SetItemQuality = ZO_RewardData.SetItemDisplayQuality ZO_RewardData.GetItemQuality = ZO_RewardData.GetItemDisplayQuality GetPlacedHousingFurnitureQuality = GetPlacedHousingFurnitureDisplayQuality -- Interact Window function ZO_InteractionManager:OnEndInteraction(...) --This name was always an action, not a reaction self:EndInteraction(...) end function ZO_SharedInteraction:EndInteraction() self:SwitchInteraction() end function ZO_InteractScene_Mixin:InitializeInteractScene(_, _, interactionInfo) self:InitializeInteractInfo(interactionInfo) end -- ZO_HelpManager was really specifically keyboard help, naming to meet standards because we need an actual manager now ZO_HelpManager = ZO_Help_Keyboard -- Renamed event to be more consistent with our naming conventions EVENT_HELP_SHOW_SPECIFIC_PAGE = EVENT_SHOW_SPECIFIC_HELP_PAGE function ResetHousingEditorTrackedFurnitureId() ResetHousingEditorTrackedFurnitureOrNode() end -- ZO_RetraitStation_Base refactor. do local ALIAS_METHODS = { "IsItemAlreadySlottedToCraft", "CanItemBeAddedToCraft", "AddItemToCraft", "RemoveItemFromCraft", "OnRetraitResult", "HandleDirtyEvent", } AddMethodAliases(ZO_RETRAIT_STATION_KEYBOARD, ZO_RETRAIT_KEYBOARD, ALIAS_METHODS) end ZO_COMBOBOX_SUPRESS_UPDATE = ZO_COMBOBOX_SUPPRESS_UPDATE GetCollectibleCategoryName = GetCollectibleCategoryNameByCollectibleId -- No longer let the leaderboardObject do the adding and removing directly itself, in case the leaderboard object is no longer around when we need to remove it (ESO-596810) function ZO_LeaderboardBase_Shared:TryAddKeybind() if self.keybind then KEYBIND_STRIP:AddKeybindButton(self.keybind) end end function ZO_LeaderboardBase_Shared:TryRemoveKeybind() if self.keybind then KEYBIND_STRIP:RemoveKeybindButton(self.keybind) end end ZO_RETRAIT_STATION_KEYBOARD.retraitPanel = ZO_RETRAIT_KEYBOARD function GetLatestAbilityRespecNote() return GetString("SI_RESPECTYPE", RESPEC_TYPE_SKILLS) end function GetLatestAttributeRespecNote() return GetString("SI_RESPECTYPE", RESPEC_TYPE_ATTRIBUTES) end -- Preview Refactor GetNumStoreEntryAsFurniturePreviewVariations = GetNumStoreEntryPreviewVariations GetStoreEntryAsFurniturePreviewVariationDisplayName = GetStoreEntryPreviewVariationDisplayName PreviewTradingHouseSearchResultItemAsFurniture = PreviewTradingHouseSearchResultItem GetNumInventoryItemAsFurniturePreviewVariations = GetNumInventoryItemPreviewVariations GetInventoryItemAsFurniturePreviewVariationDisplayName = GetInventoryItemPreviewVariationDisplayName IsCurrentlyPreviewingCollectibleAsFurniture = IsCurrentlyPreviewingPlacedFurniture IsCurrentlyPreviewingInventoryItemAsFurniture = IsCurrentlyPreviewingInventoryItem GetNumTradingHouseSearchResultItemAsFurniturePreviewVariations = GetNumTradingHouseSearchResultItemPreviewVariations GetTradingHouseSearchResultItemAsFurniturePreviewVariationDisplayName = GetTradingHouseSearchResultItemPreviewVariationDisplayName -- Outfits Naming Update ZO_Restyle_Station_Gamepad = ZO_RestyleStation_Gamepad ZO_Restyle_Station_Gamepad_SetOutfitEntryBorder = ZO_RestyleStation_Gamepad_SetOutfitEntryBorder ZO_Restyle_Station_Gamepad_CleanupAnimationOnControl = ZO_RestyleStation_Gamepad_CleanupAnimationOnControl ZO_Restyle_Station_OnInitialize = ZO_RestyleStation_OnInitialize ZO_Restyle_Station_Gamepad_TopLevel = ZO_RestyleStation_Gamepad_TopLevel -- skills companion refactor local function ConvertToSkillLineId(method) return function(skillType, skillLineIndex, ...) local skillLineId = GetSkillLineId(skillType, skillLineIndex) return method(skillLineId, ...) end end GetSkillLineName = ConvertToSkillLineId(GetSkillLineNameById) GetSkillLineUnlockText = ConvertToSkillLineId(GetSkillLineUnlockTextById) GetSkillLineAnnouncementIcon = ConvertToSkillLineId(GetSkillLineAnnouncementIconById) IsWerewolfSkillLine = ConvertToSkillLineId(IsWerewolfSkillLineById) GetSkillLineCraftingGrowthType = ConvertToSkillLineId(GetSkillLineCraftingGrowthTypeById) ZO_SLOTTABLE_ACTION_TYPE_SKILL = ZO_SLOTTABLE_ACTION_TYPE_PLAYER_SKILL ZO_SlottableSkill = ZO_SlottablePlayerSkill ZO_ColorDef.ToARGBHexadecimal = ZO_ColorDef.FloatsToHex ZO_ColorDef.FromARGBHexadecimal = function(hexColor) return ZO_ColorDef:New(hexColor) end function EquipItem(bagId, slotIndex, equipSlot) RequestEquipItem(bagId, slotIndex, BAG_WORN, equipSlot) end function UnequipItem(equipSlot) RequestUnequipItem(BAG_WORN, equipSlot) end ZO_Currency_MarketCurrencyToUICurrency = GetCurrencyTypeFromMarketCurrencyType -- Item Comparison -- function GetComparisonEquipSlotsFromItemLink(itemLink) local equipSlot1, equipSlot2 = GetItemLinkComparisonEquipSlots(itemLink) if equipSlot1 == EQUIP_SLOT_NONE then equipSlot1 = nil end if equipSlot2 == EQUIP_SLOT_NONE then equipSlot2 = nil end return equipSlot1, equipSlot2 end function GetComparisonEquipSlotsFromBagItem(bagId, slotIndex) local equipSlot1, equipSlot2 = GetItemComparisonEquipSlots(bagId, slotIndex) if equipSlot1 == EQUIP_SLOT_NONE then equipSlot1 = nil end if equipSlot2 == EQUIP_SLOT_NONE then equipSlot2 = nil end return equipSlot1, equipSlot2 end -- Layout Improvements GetStringWidthScaledPixels = GetStringWidthScaled -- ZO_Tree function ZO_TreeControl_GetNode(self) return self.node end -- ScrollTemplates ZO_ScrollList_SetScrollBarHiddenCallback = ZO_ScrollList_SetScrollBarVisibilityCallback --ZO_RadialMenu ZO_RadialMenu.UpdateEntry = ZO_RadialMenu.UpdateEntriesByName --Hotbar refactor IsSlotLocked = IsActionSlotRestricted HasCostFailure = ActionSlotHasCostFailure HasRequirementFailure = ActionSlotHasRequirementFailure HasWeaponSlotFailure = ActionSlotHasWeaponSlotFailure HasTargetFailure = ActionSlotHasTargetFailure HasRangeFailure = ActionSlotHasRangeFailure HasLeapKeepTargetFailure = ActionSlotHasLeapKeepTargetFailure HasSubzoneFailure = ActionSlotHasSubzoneFailure HasStatusEffectFailure = ActionSlotHasStatusEffectFailure HasFallingFailure = ActionSlotHasFallingFailure HasSwimmingFailure = ActionSlotHasSwimmingFailure HasMountedFailure = ActionSlotHasMountedFailure HasReincarnatingFailure = ActionSlotHasReincarnatingFailure HasActivationHighlight = ActionSlotHasActivationHighlight HasNonCostStateFailure = ActionSlotHasNonCostStateFailure -- Leaderboard refactor BATTLEGROUND_LEADERBOARD_SYSTEM_NAME = ZO_BATTLEGROUND_LEADERBOARD_SYSTEM_NAME CAMPAIGN_LEADERBOARD_SYSTEM_NAME = ZO_CAMPAIGN_LEADERBOARD_SYSTEM_NAME HOUSING_LEADERBOARD_SYSTEM_NAME = ZO_HOUSING_LEADERBOARD_SYSTEM_NAME RAID_LEADERBOARD_SYSTEM_NAME = ZO_RAID_LEADERBOARD_SYSTEM_NAME RAID_LEADERBOARD_SELECT_OPTION_DEFAULT = ZO_RAID_LEADERBOARD_SELECT_OPTION_DEFAULT RAID_LEADERBOARD_SELECT_OPTION_SKIP_WEEKLY = ZO_RAID_LEADERBOARD_SELECT_OPTION_SKIP_WEEKLY RAID_LEADERBOARD_SELECT_OPTION_PREFER_WEEKLY = ZO_RAID_LEADERBOARD_SELECT_OPTION_PREFER_WEEKLY --Renamed to be more specific ZO_GenerateCommaSeparatedList = ZO_GenerateCommaSeparatedListWithAnd --Mouse Input refactor --if you happen to have XML code that uses , that should be changed to MOUSE_BUTTON_INDEX_4 = MOUSE_BUTTON_INDEX_BUTTON_4 MOUSE_BUTTON_INDEX_5 = MOUSE_BUTTON_INDEX_BUTTON_5 -- Loot sound -- PlayLootWindowSound is not a direct equivalent to PlayMonsterLootSound, as it adds functionality for non-monster loot. We've deemed this acceptable due to low likelihood of negative impact. ZO_PlayMonsterLootSound = ZO_PlayLootWindowSound -- EditBox default text has moved to the C++ control function ZO_EditDefaultText_OnTextChanged() end function ZO_EditDefaultText_Initialize(control, defaultText) control:SetDefaultText(defaultText) end function ZO_EditDefaultText_Disable(control) control:SetDefaultText("") end --Lore Library Gamepad Refactor ZO_Gamepad_BookSet_OnInitialize = ZO_LoreLibraryBookSet_Gamepad_OnInitialize ZO_Gamepad_BookSet = ZO_LoreLibraryBookSetTopLevel_Gamepad ZO_Gamepad_LoreLibrary_OnInitialize = ZO_LoreLibrary_Gamepad_OnInitialize BOOK_SET_GAMEPAD = LORE_LIBRARY_BOOK_SET_GAMEPAD BOOKSET_SCENE_GAMEPAD = LORE_LIBRARY_BOOK_SET_SCENE_GAMEPAD --Armory refactor ARMORY_OPERATION_COOLDOWN_DURATION_MS = DEFAULT_ARMORY_OPERATION_COOLDOWN_DURATION_MS --Renaming functions in ZO_ChampionRankUtils.lua to fit standards GetLevelOrChampionPointsStringNoIcon = ZO_GetLevelOrChampionPointsStringNoIcon GetChampionIconMarkupString = ZO_GetChampionIconMarkupString GetChampionIconMarkupStringInheritColor = ZO_GetChampionIconMarkupStringInheritColor GetLevelOrChampionPointsString = ZO_GetLevelOrChampionPointsString GetLevelOrChampionPointsRangeString = ZO_GetLevelOrChampionPointsRangeString --Spelling correction for ZO_Dyeing_GetAchievementText ZO_Dyeing_GetAchivementText = ZO_Dyeing_GetAchievementText -- Refactoring WorldMap.lua ZO_WorldMapPins = ZO_WorldMapPins_Manager ZO_MapLocations = ZO_MapLocationPins_Manager function ZO_WorldMap_GetPinHandlers(mouseButton) ZO_WorldMap_GetPinManager():GetPinHandlers(mouseButton) end function ZO_WorldMap_WouldPinHandleClick(pinControl, button, ctrl, alt, shift) ZO_WorldMap_GetPinManager():WouldPinHandleClick(pinControl, button, ctrl, alt, shift) end function ZO_WorldMap_HandlePinClicked(pinControl, mouseButton, ctrl, alt, shift) ZO_WorldMap_GetPinManager():HandlePinClicked(pinControl, mouseButton, ctrl, alt, shift) end function ZO_WorldMap_ChoosePinOption(pin, handler) ZO_WorldMap_GetPinManager():ChoosePinOption(pin, handler) end function ZO_WorldMap_RefreshGroupPins() ZO_WorldMap_GetPinManager():RefreshGroupPins() end function ZO_WorldMap_GetFoundTooltipMouseOverPins() ZO_WorldMap_GetPinManager():GetFoundTooltipMouseOverPins() end function ZO_WorldMap_InvalidateTooltip() ZO_WorldMap_GetPinManager():InvalidateTooltip() end function ZO_WorldMap_AddCustomPin(pinType, pinTypeAddCallback, pinTypeOnResizeCallback, pinLayoutData, pinTooltipCreator) ZO_WorldMap_GetPinManager():AddCustomPin(pinType, pinTypeAddCallback, pinTypeOnResizeCallback, pinLayoutData, pinTooltipCreator) end function ZO_WorldMap_SetCustomPinEnabled(pinType, enabled) ZO_WorldMap_GetPinManager():SetCustomPinEnabled(pinType, enabled) end function ZO_WorldMap_IsCustomPinEnabled(pinType) ZO_WorldMap_GetPinManager():IsCustomPinEnabled(pinType) end function ZO_WorldMap_ResetCustomPinsOfType(pinTypeString) ZO_WorldMap_GetPinManager():RemovePins(pinTypeString) end function ZO_WorldMap_RefreshCustomPinsOfType(pinType) ZO_WorldMap_GetPinManager():RefreshCustomPins(pinType) end function ZO_WorldMap_DoesMapHideQuestPins() return ZO_WorldMapPins_Manager.DoesCurrentMapHideQuestPins() end function ZO_WorldMap_SetMapByIndex(mapIndex) WORLD_MAP_MANAGER:SetMapByIndex(mapIndex) end --Renaming functions in SharedTexture.lua to fit standards GetAllianceTexture = ZO_GetAllianceTexture GetAllianceSymbolIcon = ZO_GetAllianceSymbolIcon GetLargeBattlegroundAllianceSymbolIcon = ZO_GetLargeBattlegroundAllianceSymbolIcon GetCountdownBattlegroundAllianceSymbolIcon = ZO_GetCountdownBattlegroundAllianceSymbolIcon GetLargeAllianceSymbolIcon = ZO_GetLargeAllianceSymbolIcon GetPlatformAllianceSymbolIcon = ZO_GetPlatformAllianceSymbolIcon GetAllianceKeepRewardIcon = ZO_GetAllianceKeepRewardIcon GetInstanceDisplayTypeIcon = ZO_GetZoneDisplayTypeIcon ZO_GetInstanceDisplayTypeIcon = ZO_GetZoneDisplayTypeIcon GetSocketTexture = ZO_GetSocketTexture GetClassIcon = ZO_GetClassIcon GetGamepadClassIcon = ZO_GetGamepadClassIcon GetPlatformClassIcon = ZO_GetPlatformClassIcon GetPlayerStatusIcon = ZO_GetPlayerStatusIcon GetGamepadPlayerStatusIcon = ZO_GetGamepadPlayerStatusIcon GetChampionPointsIcon = ZO_GetChampionPointsIcon GetChampionPointsIconSmall = ZO_GetChampionPointsIconSmall GetGamepadChampionPointsIcon = ZO_GetGamepadChampionPointsIcon GetChampionBarDisciplineTextures = ZO_GetChampionBarDisciplineTextures GetVeteranIcon = ZO_GetVeteranIcon GetGamepadVeteranIcon = ZO_GetGamepadVeteranIcon GetColoredAvARankIconMarkup = ZO_GetColoredAvARankIconMarkup GetKeyboardRoleIcon = ZO_GetKeyboardRoleIcon GetGamepadRoleIcon = ZO_GetGamepadRoleIcon GetRoleIcon = ZO_GetRoleIcon GetKeyboardBattlegroundTeamIcon = ZO_GetKeyboardBattlegroundTeamIcon GetGamepadBattlegroundTeamIcon = ZO_GetGamepadBattlegroundTeamIcon GetBattlegroundTeamIcon = ZO_GetBattlegroundTeamIcon GetBattlegroundIconMarkup = ZO_GetBattlegroundIconMarkup GetKeyboardDungeonDifficultyIcon = ZO_GetKeyboardDungeonDifficultyIcon GetGamepadDungeonDifficultyIcon = ZO_GetGamepadDungeonDifficultyIcon GetKeyboardRecipeCraftingSystemButtonTextures = ZO_GetKeyboardRecipeCraftingSystemButtonTextures GetGamepadRecipeCraftingSystemMenuTextures = ZO_GetGamepadRecipeCraftingSystemMenuTextures GetPlatformTraitInformationIcon = ZO_GetPlatformTraitInformationIcon GetItemSellInformationIcon = ZO_GetItemSellInformationIcon GetPlatformTargetMarkerIcon = ZO_GetPlatformTargetMarkerIcon GetPlatformTargetMarkerIconTable = ZO_GetPlatformTargetMarkerIconTable -- Enum update for RespecPaymentType SKILLS_RESPEC_PAYMENT_TYPE_GOLD = RESPEC_PAYMENT_TYPE_GOLD SKILLS_RESPEC_PAYMENT_TYPE_RESPEC_SCROLL = RESPEC_PAYMENT_TYPE_RESPEC_SCROLL -- ZO_SharedFurnitureManager method alias function ZO_SharedFurnitureManager:InitializeFurnitureCaches() self:RebuildFurnitureCaches() end ZO_MaskIterator = ZO_FlagHelpers.FlagIterator ZO_FlagIterator = ZO_FlagHelpers.FlagIterator ZO_MaskHasFlag = ZO_FlagHelpers.MaskHasFlag ZO_MaskHasFlagsIterator = ZO_FlagHelpers.MaskHasFlagsIterator ZO_ClearMaskFlag = ZO_FlagHelpers.ClearMaskFlag ZO_ClearMaskFlags = ZO_FlagHelpers.ClearMaskFlags ZO_SetMaskFlag = ZO_FlagHelpers.SetMaskFlag ZO_SetMaskFlags = ZO_FlagHelpers.SetMaskFlags ZO_CompareMaskFlags = ZO_FlagHelpers.CompareMaskFlags --Error Frame Refactor ZO_UIErrors_ToggleSupressDialog = ZO_UIErrors_ToggleSuppressDialog ZO_UIErrors_HideAll = ZO_UIErrors_Dismiss ZO_UIErrors_HideCurrent = ZO_UIErrors_Dismiss ZO_ERROR_FRAME.dismissControl = ZO_ERROR_FRAME.dismissKeybind ZO_ERROR_FRAME.HideAllErrors = function(self) self:HideErrorFrame() end ZO_ERROR_FRAME.HideCurrentError = function(self) self:HideErrorFrame() end ZO_ERROR_FRAME.ToggleSupressDialog = function(self) self:ToggleSuppressDialog() end -- ZO_SetDefaultCollectibleData rename ZO_SetDefaultCollectibleData = ZO_SetToDefaultCollectibleData ZO_CollectibleDataManager.GetSetDefaultCollectibleData = ZO_CollectibleDataManager.GetSetToDefaultCollectibleData ZO_CompanionCollectionBook_Gamepad.BuildCollectibleCategorySetDefaultData = ZO_CompanionCollectionBook_Gamepad.BuildCollectibleCategorySetToDefaultData --LoreReader.lua scene rename LORE_READER_INTERACTION_SCENE = LORE_READER_DEFAULT_SCENE GAMEPAD_LORE_READER_INTERACTION_SCENE = GAMEPAD_LORE_READER_DEFAULT_SCENE -- Group Size Constants SMALL_GROUP_SIZE_THRESHOLD = STANDARD_GROUP_SIZE_THRESHOLD RAID_GROUP_SIZE_THRESHOLD = LARGE_GROUP_SIZE_THRESHOLD GROUP_SIZE_MAX = MAX_GROUP_SIZE_THRESHOLD -- Rewrite GetSynergyInfo to not rely on optionals function GetSynergyInfo() local hasSynergy, synergyName, iconFilename, prompt, priority = GetCurrentSynergyInfo() if hasSynergy then return synergyName, iconFilename, priority, prompt end return nil, nil, nil, nil end SCENE_GROUP_SHOWING = SCENE_SHOWING SCENE_GROUP_SHOWN = SCENE_SHOWN SCENE_GROUP_HIDING = SCENE_HIDING SCENE_GROUP_HIDDEN = SCENE_HIDDEN GAMEPAD_GUILD_HOME_SCENE_NAME = "gamepad_guild_home" ClearGroupFinderSearch = ClearActivityFinderSearch StartGroupFinderSearch = StartActivityFinderSearch -- Collectible combination update function GetCombinationUnlockedCollectible(combinationId) return GetCombinationUnlockedCollectibleId(combinationId, 1) end function GetCombinationFirstNonFragmentCollectibleComponentId(combinationId) local firstCollectibleId = GetCombinationNonFragmentComponentCollectibleIds(combinationId) return firstCollectibleId or 0 end -- Combo box refactor ZO_SCROLLABLE_ENTRY_TEMPLATE_HEIGHT = ZO_COMBO_BOX_ENTRY_TEMPLATE_HEIGHT ZO_ScrollableComboBox = ZO_ComboBox -- rename of the toplevel for HousingFurnitureSettings_Keyboard ZO_HousingFurnitureSettingsPanel_KeyboardTopLevel = ZO_HousingFurnitureSettingsPanel_Keyboard_TL -- Renaming 'Timed event' to 'Leaderboard event' COLLECTIBLE_USAGE_BLOCK_REASON_BLOCKED_BY_TIMED_EVENT = COLLECTIBLE_USAGE_BLOCK_REASON_BLOCKED_BY_LEADERBOARD_EVENT -- Enum update renaming Endless Dungeon Currency to Archival Fortunes CURT_ENDLESS_DUNGEON = CURT_ARCHIVAL_FORTUNES STORE_FAILURE_NOT_ENOUGH_ENDLESS_DUNGEON_CURRENCY = STORE_FAILURE_NOT_ENOUGH_ARCHIVAL_FORTUNES LOOT_TYPE_ENDLESS_DUNGEON_CURRENCY = LOOT_TYPE_ARCHIVAL_FORTUNES TUTORIAL_TRIGGER_CURRENCY_GAINED_ENDLESS_DUNGEON = TUTORIAL_TRIGGER_CURRENCY_GAINED_ARCHIVAL_FORTUNES --[[ multiselect combo box ui widget for keyboard screens. Uses a custom control definition with the box border, selected item label, and a dropdown button. The actual combobox menu is implemented using a ZO_ContextMenu. The anchoring of the menu is managed by the combo box, allows for multiple entries to be selected at the same time. --]] ZO_MultiSelectComboBox = ZO_ComboBox_Base:Subclass() function ZO_MultiSelectComboBox:Initialize(container) ZO_ComboBox_Base.Initialize(self, container) self.m_selectedItemData = {} -- Set text to default values. Order matters; self.m_selectedItemData must exist before we call these. self:SetMultiSelectionTextFormatter() self:SetNoSelectionText() end do --Padding is handled using SetSpacing local NO_PADDING_Y = 0 -- Overridden function function ZO_MultiSelectComboBox:AddMenuItems() for i, item in ipairs(self.m_sortedItems) do local function OnMenuItemSelected() self:SelectItem(item) end local needsHighlight = self:IsItemSelected(item) local normalColor local highlightColor if item.enabled == false then normalColor = item.disabledColor or self.m_disabledColor highlightColor = item.disabledColor or self.m_disabledColor else normalColor = item.normalColor or self.m_normalColor highlightColor = item.highlightColor or self.m_highlightColor end AddMenuItem(item.name, OnMenuItemSelected, MENU_ADD_OPTION_LABEL, self.m_font, normalColor, highlightColor, NO_PADDING_Y, self.horizontalAlignment, needsHighlight, item.onEnter, item.onExit, item.enabled) end end end local function GlobalMenuClearCallback(comboBox) comboBox:HideDropdown() end function ZO_MultiSelectComboBox:ShowDropdownInternal() ZO_Menu_SetUseUnderlay(true) -- Just stealing the menu from anything else that's using it. That should be correct. ClearMenu() SetMenuMinimumWidth(self.m_container:GetWidth() - GetMenuPadding() * 2) SetMenuSpacing(self.m_spacing) self:AddMenuItems() SetMenuHiddenCallback(function() GlobalMenuClearCallback(self) end) ShowMenu(self.m_container, nil, self:GetMenuType()) local OFFSET_Y = 0 AnchorMenu(self.m_container, OFFSET_Y) self:SetVisible(true) end function ZO_MultiSelectComboBox:HideDropdownInternal() ZO_Menu_SetUseUnderlay(false) ClearMenu() self:SetVisible(false) if self.onHideDropdownCallback then self.onHideDropdownCallback() end end function ZO_MultiSelectComboBox:SetHideDropdownCallback(callback) self.onHideDropdownCallback = callback end function ZO_MultiSelectComboBox:SetNoSelectionText(text) self.noSelectionText = text or SI_COMBO_BOX_DEFAULT_NO_SELECTION_TEXT self:RefreshSelectedItemText() end function ZO_MultiSelectComboBox:SetMultiSelectionTextFormatter(textFormatter) self.multiSelectionTextFormatter = textFormatter or SI_COMBO_BOX_DEFAULT_MULTISELECTION_TEXT_FORMATTER self:RefreshSelectedItemText() end function ZO_MultiSelectComboBox:RefreshSelectedItemText() local numSelectedEntries = self:GetNumSelectedEntries() if numSelectedEntries > 0 then self:SetSelectedItemText(zo_strformat(self.multiSelectionTextFormatter, numSelectedEntries)) else self:SetSelectedItemText(self.noSelectionText) end end function ZO_MultiSelectComboBox:GetNumSelectedEntries() return #self.m_selectedItemData end function ZO_MultiSelectComboBox:GetMenuType() return MENU_TYPE_MULTISELECT_COMBO_BOX end -- Overridden function function ZO_MultiSelectComboBox:ClearItems() ZO_ComboBox_Base.ClearItems(self) self.m_selectedItemData = {} end -- Overridden function function ZO_MultiSelectComboBox:SelectItem(item, ignoreCallback) if item.enabled == false then return end local newSelectionStatus = not self:IsItemSelected(item) if newSelectionStatus then self:AddItemToSelected(item) else self:RemoveItemFromSelected(item) end PlaySound(SOUNDS.COMBO_CLICK) if item.callback and not ignoreCallback then item.callback(self, item.name, item) end self:RefreshSelectedItemText() end function ZO_MultiSelectComboBox:AddItemToSelected(item) table.insert(self.m_selectedItemData, item) end function ZO_MultiSelectComboBox:RemoveItemFromSelected(item) for i, itemData in ipairs(self.m_selectedItemData) do if itemData == item then table.remove(self.m_selectedItemData, i) return end end end function ZO_MultiSelectComboBox:IsItemSelected(item) for i, itemData in ipairs(self.m_selectedItemData) do if itemData == item then return true end end return false end function ZO_MultiSelectComboBox:ClearAllSelections() self.m_selectedItemData = {} self:RefreshSelectedItemText() end ZO_ComboBox_DropdownClicked = ZO_ComboBoxDropdown_Keyboard.OnClicked ZO_ComboBox_Entry_OnMouseEnter = ZO_ComboBoxDropdown_Keyboard.OnEntryMouseEnter ZO_ComboBox_Entry_OnMouseExit = ZO_ComboBoxDropdown_Keyboard.OnEntryMouseExit ZO_ComboBox_Entry_OnSelected = ZO_ComboBoxDropdown_Keyboard.OnEntryMouseUp IsTributeMechanicSetbackForPlayer = function(...) return GetTributeMechanicSetbackTypeForPlayer(...) ~= TRIBUTE_MECHANIC_SETBACK_TYPE_NONE end