5.20.0
This commit is contained in:
+2
-1
@@ -155,6 +155,7 @@ globals = {
|
|||||||
"ChatFontNormal",
|
"ChatFontNormal",
|
||||||
"GameFontNormal",
|
"GameFontNormal",
|
||||||
"GameFontNormalHuge",
|
"GameFontNormalHuge",
|
||||||
|
"GameFontNormalSmall",
|
||||||
"GameFontNormalSmall2",
|
"GameFontNormalSmall2",
|
||||||
"GameFontHighlight",
|
"GameFontHighlight",
|
||||||
"GameFontHighlightLarge",
|
"GameFontHighlightLarge",
|
||||||
@@ -19557,7 +19558,7 @@ globals = {
|
|||||||
"BNGetNumFriendToons", "BNGetFriendToonInfo", "KuiNameplates", "TidyPlatesThreat",
|
"BNGetNumFriendToons", "BNGetFriendToonInfo", "KuiNameplates", "TidyPlatesThreat",
|
||||||
"UnitIsPartyLeader", "EasyMenu", "SELECTED_CHAT_FRAME", "handler", "InterfaceOptions_AddCategory",
|
"UnitIsPartyLeader", "EasyMenu", "SELECTED_CHAT_FRAME", "handler", "InterfaceOptions_AddCategory",
|
||||||
"PanelTemplates_SetDisabledTabState", "PanelTemplates_SelectTab", "PanelTemplates_DeselectTab",
|
"PanelTemplates_SetDisabledTabState", "PanelTemplates_SelectTab", "PanelTemplates_DeselectTab",
|
||||||
"PanelTemplates_TabResize", "GameFontNormalSmall", "ColorPickerFrame", "OpacitySliderFrame",
|
"PanelTemplates_TabResize", "ColorPickerFrame", "OpacitySliderFrame",
|
||||||
"AceGUIEditBoxInsertLink", "AceGUIMultiLineEditBoxInsertLink",
|
"AceGUIEditBoxInsertLink", "AceGUIMultiLineEditBoxInsertLink",
|
||||||
"ObjectPoolMixin", "FramePoolMixin", "FramePool_Hide", "FramePool_HideAndClearAnchors",
|
"ObjectPoolMixin", "FramePoolMixin", "FramePool_Hide", "FramePool_HideAndClearAnchors",
|
||||||
"TexturePoolMixin", "TexturePool_Hide", "TexturePool_HideAndClearAnchors", "CreateTexturePool",
|
"TexturePoolMixin", "TexturePool_Hide", "TexturePool_HideAndClearAnchors", "CreateTexturePool",
|
||||||
|
|||||||
+31
-29
@@ -2811,55 +2811,55 @@ function BuffTrigger.GetAdditionalProperties(data, triggernum)
|
|||||||
local trigger = data.triggers[triggernum].trigger
|
local trigger = data.triggers[triggernum].trigger
|
||||||
local props = {}
|
local props = {}
|
||||||
|
|
||||||
props["spellId"] = L["Spell ID"]
|
props["spellId"] = { display = L["Spell ID"] }
|
||||||
props["debuffClass"] = L["Debuff Class"]
|
props["debuffClass"] = { display = L["Debuff Class"] }
|
||||||
props["debuffClassIcon"] = L["Debuff Class Icon"]
|
props["debuffClassIcon"] = { display = L["Debuff Class Icon"] }
|
||||||
props["unitCaster"] = L["Caster Unit"]
|
props["unitCaster"] = { display = L["Caster Unit"], formatter = "Unit", formatterArgs = { color = "class" } }
|
||||||
props["casterName"] = L["Caster Name"]
|
props["casterName"] = { display = L["Caster Name"], formatter = "string" }
|
||||||
|
|
||||||
if trigger.unit ~= "multi" then
|
if trigger.unit ~= "multi" then
|
||||||
props["unit"] = L["Unit"]
|
props["unit"] = { display = L["Unit"], formatter = "Unit", formatterArgs = { color = "class" } }
|
||||||
|
props["unitName"] = { display = L["Unit Name"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
props["unitName"] = L["Unit Name"]
|
props["matchCount"] = { display = L["Match Count"] }
|
||||||
props["matchCount"] = L["Match Count"]
|
props["matchCountPerUnit"] = { display = L["Match Count per Unit"] }
|
||||||
props["matchCountPerUnit"] = L["Match Count per Unit"]
|
props["unitCount"] = { display = L["Units Affected"] }
|
||||||
props["unitCount"] = L["Units Affected"]
|
props["totalStacks"] = { display = L["Total stacks over all matches"] }
|
||||||
props["totalStacks"] = L["Total stacks over all matches"]
|
|
||||||
|
|
||||||
if trigger.unit ~= "multi" then
|
if trigger.unit ~= "multi" then
|
||||||
props["maxUnitCount"] = L["Total Units"]
|
props["maxUnitCount"] = { display = L["Total Units"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
if not IsSingleMissing(trigger) and trigger.unit ~= "multi" and trigger.fetchTooltip then
|
if not IsSingleMissing(trigger) and trigger.unit ~= "multi" and trigger.fetchTooltip then
|
||||||
props["tooltip"] = L["Tooltip"]
|
props["tooltip"] = { display = L["Tooltip"], formatter = "string" }
|
||||||
props["tooltip1"] = L["First Value of Tooltip Text"]
|
props["tooltip1"] = { display = L["First Value of Tooltip Text"] }
|
||||||
props["tooltip2"] = L["Second Value of Tooltip Text"]
|
props["tooltip2"] = { display = L["Second Value of Tooltip Text"] }
|
||||||
props["tooltip3"] = L["Third Value of Tooltip Text"]
|
props["tooltip3"] = { display = L["Third Value of Tooltip Text"] }
|
||||||
props["tooltip4"] = L["Fourth Value of Tooltip Text"]
|
props["tooltip4"] = { display = L["Fourth Value of Tooltip Text"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
if trigger.unit ~= "multi" then
|
if trigger.unit ~= "multi" then
|
||||||
props["stackGainTime"] = L["Since Stack Gain"]
|
props["stackGainTime"] = { display = L["Since Stack Gain"], formatter = "timed" }
|
||||||
props["stackLostTime"] = L["Since Stack Lost"]
|
props["stackLostTime"] = { display = L["Since Stack Lost"], formatter = "timed" }
|
||||||
props["initialTime"] = L["Since Apply"]
|
props["initialTime"] = { display = L["Since Apply"], formatter = "timed" }
|
||||||
props["refreshTime"] = L["Since Apply/Refresh"]
|
props["refreshTime"] = { display = L["Since Apply/Refresh"], formatter = "timed" }
|
||||||
end
|
end
|
||||||
|
|
||||||
if trigger.unit ~= "multi" and trigger.fetchRole then
|
if trigger.unit ~= "multi" and trigger.fetchRole then
|
||||||
props["role"] = L["Assigned Role"]
|
props["role"] = { display = L["Assigned Role"] }
|
||||||
props["roleIcon"] = L["Assigned Role Icon"]
|
props["roleIcon"] = { display = L["Assigned Role Icon"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
if trigger.unit ~= "multi" and trigger.fetchRaidMark then
|
if trigger.unit ~= "multi" and trigger.fetchRaidMark then
|
||||||
props["raidMark"] = L["Raid Mark"]
|
props["raidMark"] = { display = L["Raid Mark"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
if (trigger.unit == "group" or trigger.unit == "raid" or trigger.unit == "party") and trigger.useAffected then
|
if (trigger.unit == "group" or trigger.unit == "raid" or trigger.unit == "party") and trigger.useAffected then
|
||||||
props["affected"] = L["Names of affected Players"]
|
props["affected"] = { display = L["Names of affected Players"], formatter = "string" }
|
||||||
props["unaffected"] = L["Names of unaffected Players"]
|
props["unaffected"] = { display = L["Names of unaffected Players"], formatter = "string" }
|
||||||
props["affectedUnits"] = L["Units of affected Players in a table format"]
|
props["affectedUnits"] = { display = L["Units of affected Players in a table format"]}
|
||||||
props["unaffectedUnits"] = L["Units of unaffected Players in a table format"]
|
props["unaffectedUnits"] = { display = L["Units of unaffected Players in a table format"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
return props
|
return props
|
||||||
@@ -2968,7 +2968,9 @@ function BuffTrigger.GetTriggerConditions(data, triggernum)
|
|||||||
|
|
||||||
result["unitCaster"] = {
|
result["unitCaster"] = {
|
||||||
display = L["Caster Unit"],
|
display = L["Caster Unit"],
|
||||||
type = "string"
|
type = "unit",
|
||||||
|
formatter = "Unit",
|
||||||
|
formatterArgs = { color = "class" }
|
||||||
}
|
}
|
||||||
|
|
||||||
result["nameCaster"] = {
|
result["nameCaster"] = {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ Private.DiscordList = {
|
|||||||
[=[Chab]=],
|
[=[Chab]=],
|
||||||
[=[Darian]=],
|
[=[Darian]=],
|
||||||
[=[Desik]=],
|
[=[Desik]=],
|
||||||
[=[DjinnFish]=],
|
|
||||||
[=[Dodgen]=],
|
[=[Dodgen]=],
|
||||||
[=[exality]=],
|
[=[exality]=],
|
||||||
[=[Fatpala]=],
|
[=[Fatpala]=],
|
||||||
@@ -27,11 +26,11 @@ Private.DiscordList = {
|
|||||||
[=[Fx]=],
|
[=[Fx]=],
|
||||||
[=[Guffin]=],
|
[=[Guffin]=],
|
||||||
[=[Ifor]=],
|
[=[Ifor]=],
|
||||||
[=[Ipwnturkeys]=],
|
|
||||||
[=[Ironi]=],
|
[=[Ironi]=],
|
||||||
[=[Jiberish]=],
|
[=[Jiberish]=],
|
||||||
[=[Jods]=],
|
[=[Jods]=],
|
||||||
[=[kanegasi]=],
|
[=[kanegasi]=],
|
||||||
|
[=[Korvus]=],
|
||||||
[=[Koxy]=],
|
[=[Koxy]=],
|
||||||
[=[Krazyito]=],
|
[=[Krazyito]=],
|
||||||
[=[Listefano]=],
|
[=[Listefano]=],
|
||||||
@@ -46,14 +45,14 @@ Private.DiscordList = {
|
|||||||
[=[Nona]=],
|
[=[Nona]=],
|
||||||
[=[NostraDumAzz]=],
|
[=[NostraDumAzz]=],
|
||||||
[=[Oi]=],
|
[=[Oi]=],
|
||||||
[=[opti]=],
|
|
||||||
[=[Ora]=],
|
[=[Ora]=],
|
||||||
[=[phoenix7700]=],
|
[=[phoenix7700]=],
|
||||||
|
[=[Photoshoot]=],
|
||||||
[=[pit]=],
|
[=[pit]=],
|
||||||
[=[Putro]=],
|
[=[Putro]=],
|
||||||
[=[reggie]=],
|
|
||||||
[=[Reloe]=],
|
[=[Reloe]=],
|
||||||
[=[Saaggs]=],
|
[=[Saaggs]=],
|
||||||
|
[=[Sammy]=],
|
||||||
[=[Spaten]=],
|
[=[Spaten]=],
|
||||||
[=[Tel]=],
|
[=[Tel]=],
|
||||||
[=[Translit]=],
|
[=[Translit]=],
|
||||||
@@ -61,6 +60,7 @@ Private.DiscordList = {
|
|||||||
[=[vozochris]=],
|
[=[vozochris]=],
|
||||||
[=[Wizeowel]=],
|
[=[Wizeowel]=],
|
||||||
[=[Xepheris]=],
|
[=[Xepheris]=],
|
||||||
|
[=[Zeus]=],
|
||||||
}
|
}
|
||||||
Private.DiscordListCJ = {
|
Private.DiscordListCJ = {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,143 @@
|
|||||||
|
local AddonName = ...
|
||||||
|
local Private = select(2, ...)
|
||||||
|
|
||||||
|
-- BuildTypes "dev" | "pr" | "alpha" | "beta" | "release"
|
||||||
|
|
||||||
|
local Features = {
|
||||||
|
__feats = {},
|
||||||
|
hydrated = false,
|
||||||
|
}
|
||||||
|
Private.Features = Features
|
||||||
|
|
||||||
|
|
||||||
|
function Features:Exists(id)
|
||||||
|
return self.__feats[id] ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Enabled(id)
|
||||||
|
return self.hydrated and self:Exists(id) and self.__feats[id].enabled
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Enable(id)
|
||||||
|
if not self:Exists(id) then return end
|
||||||
|
if not self.hydrated then
|
||||||
|
error("Cannot enable a feature before hydration", 2)
|
||||||
|
elseif not self.__feats[id].enabled then
|
||||||
|
self.__feats[id].enabled = true
|
||||||
|
if self.__feats[id].persist then
|
||||||
|
self.db[id] = true
|
||||||
|
end
|
||||||
|
self.__feats[id].sub:Notify("Enable")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Disable(id)
|
||||||
|
if not self:Exists(id) then return end
|
||||||
|
if not self.hydrated then
|
||||||
|
error("Cannot disable a feature before hydration", 2)
|
||||||
|
elseif self.__feats[id].enabled then
|
||||||
|
self.__feats[id].enabled = false
|
||||||
|
if self.__feats[id].persist then
|
||||||
|
self.db[id] = false
|
||||||
|
end
|
||||||
|
self.__feats[id].sub:Notify("Disable")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:ListFeatures()
|
||||||
|
if not self.hydrated then return {} end
|
||||||
|
local list = {}
|
||||||
|
for id, feature in pairs(self.__feats) do
|
||||||
|
table.insert(list, {
|
||||||
|
id = id,
|
||||||
|
enabled = feature.enabled
|
||||||
|
})
|
||||||
|
end
|
||||||
|
table.sort(list, function(a, b)
|
||||||
|
return a.id < b.id
|
||||||
|
end)
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Hydrate()
|
||||||
|
self.db = Private.db.features
|
||||||
|
for id, feature in pairs(self.__feats) do
|
||||||
|
local enable = false
|
||||||
|
if self.db[id] ~= nil then
|
||||||
|
enable = self.db[id]
|
||||||
|
else
|
||||||
|
for _, buildType in ipairs(feature.autoEnable or {}) do
|
||||||
|
if WeakAuras.buildType == buildType then
|
||||||
|
enable = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
feature.enabled = enable
|
||||||
|
end
|
||||||
|
self.hydrated = true
|
||||||
|
for _, feature in pairs(self.__feats) do
|
||||||
|
-- cannot notify before hydrated flag is set, or we risk consumers getting wrong information
|
||||||
|
feature.sub:Notify(feature.enabled and "Enable" or "Disable")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Register(feature)
|
||||||
|
if self.hydrated then
|
||||||
|
error("Cannot register a feature after hydration", 2)
|
||||||
|
end
|
||||||
|
if not self.__feats[feature.id] then
|
||||||
|
self.__feats[feature.id] = feature
|
||||||
|
feature.sub = Private.CreateSubscribableObject()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---hide a code path behind a feature flag,
|
||||||
|
---optionally provide a disabled path
|
||||||
|
function Features:Wrap(id, enabledFunc, disabledFunc)
|
||||||
|
return function(...)
|
||||||
|
if self:Enabled(id) then
|
||||||
|
return enabledFunc(...)
|
||||||
|
else
|
||||||
|
if disabledFunc then
|
||||||
|
return disabledFunc(...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:AuraCanFunction(data)
|
||||||
|
local enabled = true
|
||||||
|
local reasons = {}
|
||||||
|
|
||||||
|
for _, feature in pairs(self.__feats) do
|
||||||
|
if feature.requiredByAura and not feature:requiredByAura(data) then
|
||||||
|
enabled = false
|
||||||
|
reasons[feature.id] = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return enabled, reasons
|
||||||
|
end
|
||||||
|
|
||||||
|
function Features:Subscribe(id, enable, disable)
|
||||||
|
local tbl = {
|
||||||
|
Enable = enable,
|
||||||
|
Disable = disable
|
||||||
|
}
|
||||||
|
if self:Exists(id) then
|
||||||
|
self.__feats[id].sub:AddSubscriber("Enable", tbl)
|
||||||
|
self.__feats[id].sub:AddSubscriber("Disable", tbl)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Features:Register({
|
||||||
|
id = "debug",
|
||||||
|
autoEnable = {"dev"}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
Private.DebugPrint = Features:Wrap("debug", function(...)
|
||||||
|
print("|cff00d3ffWeakAuras-Debug:|r ", ...)
|
||||||
|
end)
|
||||||
@@ -4114,7 +4114,17 @@ function GenericTrigger.GetAdditionalProperties(data, triggernum)
|
|||||||
enable = v.enable
|
enable = v.enable
|
||||||
end
|
end
|
||||||
if (enable and v.store and v.name and v.display and v.conditionType ~= "bool") then
|
if (enable and v.store and v.name and v.display and v.conditionType ~= "bool") then
|
||||||
props[v.name] = v.display
|
local formatter = v.formatter
|
||||||
|
local formatterArgs = v.formatterArgs or {}
|
||||||
|
if not formatter then
|
||||||
|
if v.type == "unit" then
|
||||||
|
formatter = "Unit"
|
||||||
|
formatterArgs = { color = "class" }
|
||||||
|
elseif v.type == "string" then
|
||||||
|
formatter = "string"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
props[v.name] = { display = v.display, formatter = formatter, formatterArgs = formatterArgs }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if prototype.countEvents then
|
if prototype.countEvents then
|
||||||
@@ -4126,7 +4136,7 @@ function GenericTrigger.GetAdditionalProperties(data, triggernum)
|
|||||||
if (type(variables) == "table") then
|
if (type(variables) == "table") then
|
||||||
for var, varData in pairs(variables) do
|
for var, varData in pairs(variables) do
|
||||||
if (type(varData) == "table") then
|
if (type(varData) == "table") then
|
||||||
props[var] = varData.display or var
|
props[var] = { display = varData.display or var, formatter = varData.formatter, formatterArgs = varData.formatterArgs }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -4172,6 +4182,7 @@ local commonConditions = {
|
|||||||
duration = {
|
duration = {
|
||||||
display = L["Total Duration"],
|
display = L["Total Duration"],
|
||||||
type = "number",
|
type = "number",
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
paused = {
|
paused = {
|
||||||
display =L["Is Paused"],
|
display =L["Is Paused"],
|
||||||
@@ -4191,7 +4202,8 @@ local commonConditions = {
|
|||||||
},
|
},
|
||||||
stacks = {
|
stacks = {
|
||||||
display = L["Stacks"],
|
display = L["Stacks"],
|
||||||
type = "number"
|
type = "number",
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
name = {
|
name = {
|
||||||
display = L["Name"],
|
display = L["Name"],
|
||||||
@@ -4308,7 +4320,7 @@ function GenericTrigger.GetTriggerConditions(data, triggernum)
|
|||||||
if (enable) then
|
if (enable) then
|
||||||
result[v.name] = {
|
result[v.name] = {
|
||||||
display = v.display,
|
display = v.display,
|
||||||
type = v.conditionType
|
type = v.conditionType,
|
||||||
}
|
}
|
||||||
if (result[v.name].type == "select" or result[v.name].type == "unit") then
|
if (result[v.name].type == "select" or result[v.name].type == "unit") then
|
||||||
if (v.conditionValues) then
|
if (v.conditionValues) then
|
||||||
|
|||||||
+2
-2
@@ -9,8 +9,8 @@ WeakAuras.halfWidth = WeakAuras.normalWidth / 2
|
|||||||
WeakAuras.doubleWidth = WeakAuras.normalWidth * 2
|
WeakAuras.doubleWidth = WeakAuras.normalWidth * 2
|
||||||
|
|
||||||
local versionStringFromToc = GetAddOnMetadata("WeakAuras", "Version")
|
local versionStringFromToc = GetAddOnMetadata("WeakAuras", "Version")
|
||||||
local versionString = "5.19.12 Beta"
|
local versionString = "5.20.0 Beta"
|
||||||
local buildTime = "20250618195500"
|
local buildTime = "20250721200906"
|
||||||
local isAwesomeEnabled = C_NamePlate and C_NamePlate.GetNamePlateForUnit and true or false
|
local isAwesomeEnabled = C_NamePlate and C_NamePlate.GetNamePlateForUnit and true or false
|
||||||
|
|
||||||
local flavor
|
local flavor
|
||||||
|
|||||||
@@ -1049,10 +1049,10 @@ L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Insta
|
|||||||
L["Instance"] = "Instanz"
|
L["Instance"] = "Instanz"
|
||||||
L["Instance Difficulty"] = "Instanzschwierigkeit"
|
L["Instance Difficulty"] = "Instanzschwierigkeit"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance ID"] = "Instance ID"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Instance Id"] = "Instance Id"
|
L["Instance Id"] = "Instance Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Instance ID"] = "Instance ID"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Instance Info"] = "Instance Info"
|
L["Instance Info"] = "Instance Info"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance Name"] = "Instance Name"
|
L["Instance Name"] = "Instance Name"
|
||||||
@@ -1619,9 +1619,9 @@ L["Progress Total"] = "Totaler Fortschritt"
|
|||||||
L["Progress Value"] = "Fortschrittswert"
|
L["Progress Value"] = "Fortschrittswert"
|
||||||
L["Pulse"] = "Pulsieren"
|
L["Pulse"] = "Pulsieren"
|
||||||
L["PvP Flagged"] = "PvP aktiv"
|
L["PvP Flagged"] = "PvP aktiv"
|
||||||
|
L["PvP Talent selected"] = "Gewähltes PvP-Talent"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["PvP Talent Selected"] = "PvP Talent Selected"
|
L["PvP Talent Selected"] = "PvP Talent Selected"
|
||||||
L["PvP Talent selected"] = "Gewähltes PvP-Talent"
|
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Quality Id"] = "Quality Id"
|
L["Quality Id"] = "Quality Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
@@ -1970,6 +1970,8 @@ L["Stage"] = "Stage"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stage Counter"] = "Stage Counter"
|
L["Stage Counter"] = "Stage Counter"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Stagger (%)"] = "Stagger (%)"
|
L["Stagger (%)"] = "Stagger (%)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
||||||
@@ -2059,8 +2061,8 @@ L["Talent |cFFFF0000Not|r Known"] = "Talent |cFFFF0000Not|r Known"
|
|||||||
L["Talent |cFFFF0000Not|r Selected"] = "Talent |cFFFF0000Not|r Selected"
|
L["Talent |cFFFF0000Not|r Selected"] = "Talent |cFFFF0000Not|r Selected"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Talent Known"] = "Talent Known"
|
L["Talent Known"] = "Talent Known"
|
||||||
L["Talent selected"] = "Gewähltes Talent"
|
|
||||||
L["Talent Selected"] = "Talent gewählt"
|
L["Talent Selected"] = "Talent gewählt"
|
||||||
|
L["Talent selected"] = "Gewähltes Talent"
|
||||||
L["Talent Specialization"] = "Talentspezialisierung"
|
L["Talent Specialization"] = "Talentspezialisierung"
|
||||||
L["Tanking And Highest"] = "Höchster und Aggro"
|
L["Tanking And Highest"] = "Höchster und Aggro"
|
||||||
L["Tanking But Not Highest"] = "Aggro aber nicht höchste"
|
L["Tanking But Not Highest"] = "Aggro aber nicht höchste"
|
||||||
|
|||||||
@@ -654,8 +654,8 @@ L["Hybrid"] = "Hybrid"
|
|||||||
L["Icon"] = "Icon"
|
L["Icon"] = "Icon"
|
||||||
L["Icon Function"] = "Icon Function"
|
L["Icon Function"] = "Icon Function"
|
||||||
L["Icon Function (fallback state)"] = "Icon Function (fallback state)"
|
L["Icon Function (fallback state)"] = "Icon Function (fallback state)"
|
||||||
L["ID"] = "ID"
|
|
||||||
L["Id"] = "Id"
|
L["Id"] = "Id"
|
||||||
|
L["ID"] = "ID"
|
||||||
L["If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"] = "If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"
|
L["If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"] = "If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"
|
||||||
L["Ignore Dead"] = "Ignore Dead"
|
L["Ignore Dead"] = "Ignore Dead"
|
||||||
L["Ignore Disconnected"] = "Ignore Disconnected"
|
L["Ignore Disconnected"] = "Ignore Disconnected"
|
||||||
@@ -805,8 +805,8 @@ Intermissions are .5
|
|||||||
E.g. 1;2;1;2;2.5;3]=] ] = [=[Matches stage number of encounter journal.
|
E.g. 1;2;1;2;2.5;3]=] ] = [=[Matches stage number of encounter journal.
|
||||||
Intermissions are .5
|
Intermissions are .5
|
||||||
E.g. 1;2;1;2;2.5;3]=]
|
E.g. 1;2;1;2;2.5;3]=]
|
||||||
L["Max Char"] = "Max Char"
|
|
||||||
L["Max Char "] = "Max Char "
|
L["Max Char "] = "Max Char "
|
||||||
|
L["Max Char"] = "Max Char"
|
||||||
L["Max Charges"] = "Max Charges"
|
L["Max Charges"] = "Max Charges"
|
||||||
L["Max Health"] = "Max Health"
|
L["Max Health"] = "Max Health"
|
||||||
L["Max Power"] = "Max Power"
|
L["Max Power"] = "Max Power"
|
||||||
@@ -1070,8 +1070,8 @@ L["Progress Total"] = "Progress Total"
|
|||||||
L["Progress Value"] = "Progress Value"
|
L["Progress Value"] = "Progress Value"
|
||||||
L["Pulse"] = "Pulse"
|
L["Pulse"] = "Pulse"
|
||||||
L["PvP Flagged"] = "PvP Flagged"
|
L["PvP Flagged"] = "PvP Flagged"
|
||||||
L["PvP Talent Selected"] = "PvP Talent Selected"
|
|
||||||
L["PvP Talent selected"] = "PvP Talent selected"
|
L["PvP Talent selected"] = "PvP Talent selected"
|
||||||
|
L["PvP Talent Selected"] = "PvP Talent Selected"
|
||||||
L["Quality Id"] = "Quality Id"
|
L["Quality Id"] = "Quality Id"
|
||||||
L["Quantity"] = "Quantity"
|
L["Quantity"] = "Quantity"
|
||||||
L["Quantity earned this week"] = "Quantity earned this week"
|
L["Quantity earned this week"] = "Quantity earned this week"
|
||||||
@@ -1288,6 +1288,7 @@ L["Stacks Function"] = "Stacks Function"
|
|||||||
L["Stacks Function (fallback state)"] = "Stacks Function (fallback state)"
|
L["Stacks Function (fallback state)"] = "Stacks Function (fallback state)"
|
||||||
L["Stage"] = "Stage"
|
L["Stage"] = "Stage"
|
||||||
L["Stage Counter"] = "Stage Counter"
|
L["Stage Counter"] = "Stage Counter"
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
L["Stagger (%)"] = "Stagger (%)"
|
L["Stagger (%)"] = "Stagger (%)"
|
||||||
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
||||||
L["Stagger Scale"] = "Stagger Scale"
|
L["Stagger Scale"] = "Stagger Scale"
|
||||||
|
|||||||
@@ -1016,8 +1016,8 @@ L["Progress Total"] = "Progreso total"
|
|||||||
L["Progress Value"] = "Valor de progreso"
|
L["Progress Value"] = "Valor de progreso"
|
||||||
L["Pulse"] = "Pulso"
|
L["Pulse"] = "Pulso"
|
||||||
L["PvP Flagged"] = "Marcado JcJ"
|
L["PvP Flagged"] = "Marcado JcJ"
|
||||||
L["PvP Talent Selected"] = "Talento de JcJ seleccionado"
|
|
||||||
L["PvP Talent selected"] = "Talento de JcJ seleccionado"
|
L["PvP Talent selected"] = "Talento de JcJ seleccionado"
|
||||||
|
L["PvP Talent Selected"] = "Talento de JcJ seleccionado"
|
||||||
L["Quality Id"] = "ID de calidad"
|
L["Quality Id"] = "ID de calidad"
|
||||||
L["Quantity"] = "Cantidad"
|
L["Quantity"] = "Cantidad"
|
||||||
L["Quantity earned this week"] = "Cantidad ganada esta semana"
|
L["Quantity earned this week"] = "Cantidad ganada esta semana"
|
||||||
@@ -1233,6 +1233,7 @@ L["Stacks Function"] = "Función de acumulaciones"
|
|||||||
L["Stacks Function (fallback state)"] = "Función de acumulaciones (estado reserva)"
|
L["Stacks Function (fallback state)"] = "Función de acumulaciones (estado reserva)"
|
||||||
L["Stage"] = "Etapa"
|
L["Stage"] = "Etapa"
|
||||||
L["Stage Counter"] = "Contador de etapa"
|
L["Stage Counter"] = "Contador de etapa"
|
||||||
|
L["Stagger"] = "Escalonar"
|
||||||
L["Stagger (%)"] = "Tambalear (%)"
|
L["Stagger (%)"] = "Tambalear (%)"
|
||||||
L["Stagger against Target (%)"] = "Tambalearse contra el objetivo (%)"
|
L["Stagger against Target (%)"] = "Tambalearse contra el objetivo (%)"
|
||||||
L["Stagger Scale"] = "Escala escalonada"
|
L["Stagger Scale"] = "Escala escalonada"
|
||||||
@@ -1283,8 +1284,8 @@ L["Talent"] = "Talento"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "Talento |cFFFF0000desconocido|r"
|
L["Talent |cFFFF0000Not|r Known"] = "Talento |cFFFF0000desconocido|r"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "Talento |cFFFF0000no|r seleccionado"
|
L["Talent |cFFFF0000Not|r Selected"] = "Talento |cFFFF0000no|r seleccionado"
|
||||||
L["Talent Known"] = "Talento conocido"
|
L["Talent Known"] = "Talento conocido"
|
||||||
L["Talent selected"] = "Talento seleccionado"
|
|
||||||
L["Talent Selected"] = "Talento seleccionado"
|
L["Talent Selected"] = "Talento seleccionado"
|
||||||
|
L["Talent selected"] = "Talento seleccionado"
|
||||||
L["Talent Specialization"] = "Especialización de Talentos"
|
L["Talent Specialization"] = "Especialización de Talentos"
|
||||||
L["Tanking And Highest"] = "Tanqueando y el más alto"
|
L["Tanking And Highest"] = "Tanqueando y el más alto"
|
||||||
L["Tanking But Not Highest"] = "Tanqueando pero no el mas alto"
|
L["Tanking But Not Highest"] = "Tanqueando pero no el mas alto"
|
||||||
|
|||||||
@@ -675,8 +675,8 @@ L["Instakill"] = "Muerte Instantanea"
|
|||||||
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Instala los addons BugSack y BugGrabber para obtener registros de errores detallados."
|
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Instala los addons BugSack y BugGrabber para obtener registros de errores detallados."
|
||||||
L["Instance"] = "Instancia"
|
L["Instance"] = "Instancia"
|
||||||
L["Instance Difficulty"] = "Dificultad de la instancia"
|
L["Instance Difficulty"] = "Dificultad de la instancia"
|
||||||
L["Instance ID"] = "ID de estancia"
|
|
||||||
L["Instance Id"] = "ID de estancia"
|
L["Instance Id"] = "ID de estancia"
|
||||||
|
L["Instance ID"] = "ID de estancia"
|
||||||
L["Instance Info"] = "Info de estancia"
|
L["Instance Info"] = "Info de estancia"
|
||||||
L["Instance Name"] = "Nombre de estancia"
|
L["Instance Name"] = "Nombre de estancia"
|
||||||
L["Instance Size Type"] = "Tipo de tamaño de estancia"
|
L["Instance Size Type"] = "Tipo de tamaño de estancia"
|
||||||
@@ -787,8 +787,8 @@ L["Matches (Pattern)"] = "Corresponde (Patrón)"
|
|||||||
L[ [=[Matches stage number of encounter journal.
|
L[ [=[Matches stage number of encounter journal.
|
||||||
Intermissions are .5
|
Intermissions are .5
|
||||||
E.g. 1;2;1;2;2.5;3]=] ] = "Coincide con el número de etapa del diario de encuentros. Los intermedios son .5 Por ej. 1;2;1;2;2.5;3"
|
E.g. 1;2;1;2;2.5;3]=] ] = "Coincide con el número de etapa del diario de encuentros. Los intermedios son .5 Por ej. 1;2;1;2;2.5;3"
|
||||||
L["Max Char"] = "Carácter máximo"
|
|
||||||
L["Max Char "] = "Caracteres máx."
|
L["Max Char "] = "Caracteres máx."
|
||||||
|
L["Max Char"] = "Carácter máximo"
|
||||||
L["Max Charges"] = "Cargas máx."
|
L["Max Charges"] = "Cargas máx."
|
||||||
L["Max Health"] = "Salud máx."
|
L["Max Health"] = "Salud máx."
|
||||||
L["Max Power"] = "Poder máx."
|
L["Max Power"] = "Poder máx."
|
||||||
@@ -1017,8 +1017,8 @@ L["Progress Total"] = "Progreso total"
|
|||||||
L["Progress Value"] = "Valor de progreso"
|
L["Progress Value"] = "Valor de progreso"
|
||||||
L["Pulse"] = "Pulso"
|
L["Pulse"] = "Pulso"
|
||||||
L["PvP Flagged"] = "Marcado JcJ"
|
L["PvP Flagged"] = "Marcado JcJ"
|
||||||
L["PvP Talent Selected"] = "Talento de JcJ seleccionado"
|
|
||||||
L["PvP Talent selected"] = "Talento de JcJ seleccionado"
|
L["PvP Talent selected"] = "Talento de JcJ seleccionado"
|
||||||
|
L["PvP Talent Selected"] = "Talento de JcJ seleccionado"
|
||||||
L["Quality Id"] = "ID de calidad"
|
L["Quality Id"] = "ID de calidad"
|
||||||
L["Quantity"] = "Cantidad"
|
L["Quantity"] = "Cantidad"
|
||||||
L["Quantity earned this week"] = "Cantidad ganada esta semana"
|
L["Quantity earned this week"] = "Cantidad ganada esta semana"
|
||||||
@@ -1234,6 +1234,7 @@ L["Stacks Function"] = "Función de acumulaciones"
|
|||||||
L["Stacks Function (fallback state)"] = "Función de acumulaciones (estado reserva)"
|
L["Stacks Function (fallback state)"] = "Función de acumulaciones (estado reserva)"
|
||||||
L["Stage"] = "Etapa"
|
L["Stage"] = "Etapa"
|
||||||
L["Stage Counter"] = "Contador de etapa"
|
L["Stage Counter"] = "Contador de etapa"
|
||||||
|
L["Stagger"] = "Escalonar"
|
||||||
L["Stagger (%)"] = "Tambalear (%)"
|
L["Stagger (%)"] = "Tambalear (%)"
|
||||||
L["Stagger against Target (%)"] = "Tambalearse contra el objetivo (%)"
|
L["Stagger against Target (%)"] = "Tambalearse contra el objetivo (%)"
|
||||||
L["Stagger Scale"] = "Escala escalonada"
|
L["Stagger Scale"] = "Escala escalonada"
|
||||||
@@ -1284,8 +1285,8 @@ L["Talent"] = "Talento"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "Talento |cFFFF0000desconocido|r"
|
L["Talent |cFFFF0000Not|r Known"] = "Talento |cFFFF0000desconocido|r"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "Talento |cFFFF0000no|r seleccionado"
|
L["Talent |cFFFF0000Not|r Selected"] = "Talento |cFFFF0000no|r seleccionado"
|
||||||
L["Talent Known"] = "Talento conocido"
|
L["Talent Known"] = "Talento conocido"
|
||||||
L["Talent selected"] = "Talento seleccionado"
|
|
||||||
L["Talent Selected"] = "Talento seleccionado"
|
L["Talent Selected"] = "Talento seleccionado"
|
||||||
|
L["Talent selected"] = "Talento seleccionado"
|
||||||
L["Talent Specialization"] = "Especialización de Talentos"
|
L["Talent Specialization"] = "Especialización de Talentos"
|
||||||
L["Tanking And Highest"] = "Tanqueando y el más alto"
|
L["Tanking And Highest"] = "Tanqueando y el más alto"
|
||||||
L["Tanking But Not Highest"] = "Tanqueando pero no el mas alto"
|
L["Tanking But Not Highest"] = "Tanqueando pero no el mas alto"
|
||||||
|
|||||||
@@ -1424,9 +1424,9 @@ L["Progress Total"] = "Progrès Total"
|
|||||||
L["Progress Value"] = "Valeur de progression"
|
L["Progress Value"] = "Valeur de progression"
|
||||||
L["Pulse"] = "Pulsation"
|
L["Pulse"] = "Pulsation"
|
||||||
L["PvP Flagged"] = "JcJ activé"
|
L["PvP Flagged"] = "JcJ activé"
|
||||||
|
L["PvP Talent selected"] = "Talent JcJ sélectionné"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["PvP Talent Selected"] = "PvP Talent Selected"
|
L["PvP Talent Selected"] = "PvP Talent Selected"
|
||||||
L["PvP Talent selected"] = "Talent JcJ sélectionné"
|
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Quality Id"] = "Quality Id"
|
L["Quality Id"] = "Quality Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
@@ -1741,6 +1741,8 @@ L["Stage"] = "Stage"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stage Counter"] = "Stage Counter"
|
L["Stage Counter"] = "Stage Counter"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Stagger (%)"] = "Stagger (%)"
|
L["Stagger (%)"] = "Stagger (%)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
||||||
@@ -1823,8 +1825,8 @@ L["Talent |cFFFF0000Not|r Known"] = "Talent |cFFFF0000Not|r Known"
|
|||||||
L["Talent |cFFFF0000Not|r Selected"] = "Talent |cFFFF0000Not|r Selected"
|
L["Talent |cFFFF0000Not|r Selected"] = "Talent |cFFFF0000Not|r Selected"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Talent Known"] = "Talent Known"
|
L["Talent Known"] = "Talent Known"
|
||||||
L["Talent selected"] = "Talent sélectionné"
|
|
||||||
L["Talent Selected"] = "Talent sélectionné"
|
L["Talent Selected"] = "Talent sélectionné"
|
||||||
|
L["Talent selected"] = "Talent sélectionné"
|
||||||
L["Talent Specialization"] = "Spécialisation"
|
L["Talent Specialization"] = "Spécialisation"
|
||||||
L["Tanking And Highest"] = "Tank et le plus haut"
|
L["Tanking And Highest"] = "Tank et le plus haut"
|
||||||
L["Tanking But Not Highest"] = "Tank mais pas le plus haut"
|
L["Tanking But Not Highest"] = "Tank mais pas le plus haut"
|
||||||
|
|||||||
@@ -1078,10 +1078,10 @@ L["Instance"] = "Instance"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance Difficulty"] = "Instance Difficulty"
|
L["Instance Difficulty"] = "Instance Difficulty"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance ID"] = "Instance ID"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Instance Id"] = "Instance Id"
|
L["Instance Id"] = "Instance Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Instance ID"] = "Instance ID"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Instance Info"] = "Instance Info"
|
L["Instance Info"] = "Instance Info"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance Name"] = "Instance Name"
|
L["Instance Name"] = "Instance Name"
|
||||||
@@ -1762,10 +1762,10 @@ L["Pulse"] = "Pulse"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["PvP Flagged"] = "PvP Flagged"
|
L["PvP Flagged"] = "PvP Flagged"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["PvP Talent Selected"] = "PvP Talent Selected"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["PvP Talent selected"] = "PvP Talent selected"
|
L["PvP Talent selected"] = "PvP Talent selected"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["PvP Talent Selected"] = "PvP Talent Selected"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Quality Id"] = "Quality Id"
|
L["Quality Id"] = "Quality Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Quantity"] = "Quantity"
|
L["Quantity"] = "Quantity"
|
||||||
@@ -2196,6 +2196,8 @@ L["Stage"] = "Stage"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stage Counter"] = "Stage Counter"
|
L["Stage Counter"] = "Stage Counter"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Stagger (%)"] = "Stagger (%)"
|
L["Stagger (%)"] = "Stagger (%)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ L["Alert Type"] = "경보 종류"
|
|||||||
L["Alive"] = "생존"
|
L["Alive"] = "생존"
|
||||||
L["All"] = "모두"
|
L["All"] = "모두"
|
||||||
L["All children of this aura will also not be loaded, to minimize the chance of further corruption."] = "이 위크오라의 모든 자식 위크오라도 불러오지 않을 것입니다. 오염 가능성을 최소화하기 위함입니다."
|
L["All children of this aura will also not be loaded, to minimize the chance of further corruption."] = "이 위크오라의 모든 자식 위크오라도 불러오지 않을 것입니다. 오염 가능성을 최소화하기 위함입니다."
|
||||||
L["All States table contains a non table at key: '%s'."] = "All States 테이블의 키에 테이블이 아닌 데이터가 있습니다: '%s'."
|
L["All States table contains a non table at key: '%s'."] = "All States 테이블 키 중 테이블에 속하지 않은 것이 있습니다: '%s'"
|
||||||
L["All Triggers"] = "활성 조건 전부 발동"
|
L["All Triggers"] = "활성 조건 전부 발동"
|
||||||
L["Alliance"] = "얼라이언스"
|
L["Alliance"] = "얼라이언스"
|
||||||
L["Allow partial matches"] = "부분 일치 허용"
|
L["Allow partial matches"] = "부분 일치 허용"
|
||||||
@@ -300,7 +300,7 @@ L["Charging"] = "충전중"
|
|||||||
L["Chat Frame"] = "대화창"
|
L["Chat Frame"] = "대화창"
|
||||||
L["Chat Message"] = "대화 메시지"
|
L["Chat Message"] = "대화 메시지"
|
||||||
L["Check if a single talent match a Rank"] = "단일 특성이 등급과 일치하는지 확인"
|
L["Check if a single talent match a Rank"] = "단일 특성이 등급과 일치하는지 확인"
|
||||||
L["Check nameplate's target every 0.2s"] = "0.2초마다 이름표의 대상 확인"
|
L["Check nameplate's target every 0.2s"] = "0.2초마다 이름표의 대상을 확인합니다"
|
||||||
L["Chromaggus"] = "크로마구스"
|
L["Chromaggus"] = "크로마구스"
|
||||||
L["Circle"] = "동그라미"
|
L["Circle"] = "동그라미"
|
||||||
L["Circular Texture"] = "테두리 텍스처"
|
L["Circular Texture"] = "테두리 텍스처"
|
||||||
@@ -675,7 +675,7 @@ L["In Group"] = "그룹 상태"
|
|||||||
L["In Party"] = "파티"
|
L["In Party"] = "파티"
|
||||||
L["In Pet Battle"] = "애완동물 대전 중"
|
L["In Pet Battle"] = "애완동물 대전 중"
|
||||||
L["In Raid"] = "공격대"
|
L["In Raid"] = "공격대"
|
||||||
L["In Range"] = "유효 거리 범위"
|
L["In Range"] = "유효 거리 이내"
|
||||||
L["In Vehicle"] = "차량 탑승 중"
|
L["In Vehicle"] = "차량 탑승 중"
|
||||||
L["In War Mode"] = "전쟁 모드"
|
L["In War Mode"] = "전쟁 모드"
|
||||||
L["Include Bank"] = "은행 포함"
|
L["Include Bank"] = "은행 포함"
|
||||||
@@ -805,8 +805,8 @@ L["Matches (Pattern)"] = "일치 (패턴)"
|
|||||||
L[ [=[Matches stage number of encounter journal.
|
L[ [=[Matches stage number of encounter journal.
|
||||||
Intermissions are .5
|
Intermissions are .5
|
||||||
E.g. 1;2;1;2;2.5;3]=] ] = "던전 도감의 단계 번호를 기준으로 맞춥니다. 사잇단계는 .5가 됩니다. 예를 들면 1;2;1;2;2.5;3"
|
E.g. 1;2;1;2;2.5;3]=] ] = "던전 도감의 단계 번호를 기준으로 맞춥니다. 사잇단계는 .5가 됩니다. 예를 들면 1;2;1;2;2.5;3"
|
||||||
L["Max Char"] = "최대 글자 수"
|
|
||||||
L["Max Char "] = "최대 글자 수"
|
L["Max Char "] = "최대 글자 수"
|
||||||
|
L["Max Char"] = "최대 글자 수"
|
||||||
L["Max Charges"] = "최대 충전량"
|
L["Max Charges"] = "최대 충전량"
|
||||||
L["Max Health"] = "최대 생명력"
|
L["Max Health"] = "최대 생명력"
|
||||||
L["Max Power"] = "최대 자원"
|
L["Max Power"] = "최대 자원"
|
||||||
@@ -1070,8 +1070,8 @@ L["Progress Total"] = "진행 현황"
|
|||||||
L["Progress Value"] = "진행도 값"
|
L["Progress Value"] = "진행도 값"
|
||||||
L["Pulse"] = "맥박"
|
L["Pulse"] = "맥박"
|
||||||
L["PvP Flagged"] = "플레이어 간 전투 활성화"
|
L["PvP Flagged"] = "플레이어 간 전투 활성화"
|
||||||
L["PvP Talent Selected"] = "선택한 PvP 특성"
|
|
||||||
L["PvP Talent selected"] = "선택한 PvP 특성"
|
L["PvP Talent selected"] = "선택한 PvP 특성"
|
||||||
|
L["PvP Talent Selected"] = "선택한 PvP 특성"
|
||||||
L["Quality Id"] = "품질 Id"
|
L["Quality Id"] = "품질 Id"
|
||||||
L["Quantity"] = "수량"
|
L["Quantity"] = "수량"
|
||||||
L["Quantity earned this week"] = "이번주 획득량"
|
L["Quantity earned this week"] = "이번주 획득량"
|
||||||
@@ -1128,7 +1128,7 @@ L["Requested display does not exist"] = "요청한 디스플레이가 존재하
|
|||||||
L["Requested display not authorized"] = "요청한 디스플레이가 올바르지 않습니다"
|
L["Requested display not authorized"] = "요청한 디스플레이가 올바르지 않습니다"
|
||||||
L["Requesting display information from %s ..."] = "%s|1이;가; 디스플레이 정보를 요청 중입니다 ..."
|
L["Requesting display information from %s ..."] = "%s|1이;가; 디스플레이 정보를 요청 중입니다 ..."
|
||||||
L["Require Valid Target"] = "유효한 대상 필요"
|
L["Require Valid Target"] = "유효한 대상 필요"
|
||||||
L["Requires syncing the specialization via LibSpecialization."] = "LibSpecialization을 통한 전문화 동기화를 요구합니다."
|
L["Requires syncing the specialization via LibSpecialization."] = "전문화 동기화를 위해 LibSpecialization이 필요합니다."
|
||||||
L["Resilience (%)"] = "탄력 (%)"
|
L["Resilience (%)"] = "탄력 (%)"
|
||||||
L["Resilience Rating"] = "탄력도 수치"
|
L["Resilience Rating"] = "탄력도 수치"
|
||||||
L["Resist"] = "저항"
|
L["Resist"] = "저항"
|
||||||
@@ -1288,6 +1288,7 @@ L["Stacks Function"] = "중첩 함수"
|
|||||||
L["Stacks Function (fallback state)"] = "Stacks 함수 (고장 대체 상태)"
|
L["Stacks Function (fallback state)"] = "Stacks 함수 (고장 대체 상태)"
|
||||||
L["Stage"] = "단계"
|
L["Stage"] = "단계"
|
||||||
L["Stage Counter"] = "단계 카운터"
|
L["Stage Counter"] = "단계 카운터"
|
||||||
|
L["Stagger"] = "시간차"
|
||||||
L["Stagger (%)"] = "시간차 (%)"
|
L["Stagger (%)"] = "시간차 (%)"
|
||||||
L["Stagger against Target (%)"] = "대상에 대한 시간차 (%)"
|
L["Stagger against Target (%)"] = "대상에 대한 시간차 (%)"
|
||||||
L["Stagger Scale"] = "단계적 비율 조정"
|
L["Stagger Scale"] = "단계적 비율 조정"
|
||||||
@@ -1338,8 +1339,8 @@ L["Talent"] = "특성"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "습득하지 |cFFFF0000않은|r 특성"
|
L["Talent |cFFFF0000Not|r Known"] = "습득하지 |cFFFF0000않은|r 특성"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "선택하지 |cFFFF0000않은|r 특성"
|
L["Talent |cFFFF0000Not|r Selected"] = "선택하지 |cFFFF0000않은|r 특성"
|
||||||
L["Talent Known"] = "습득한 특성"
|
L["Talent Known"] = "습득한 특성"
|
||||||
L["Talent selected"] = "선택한 특성"
|
|
||||||
L["Talent Selected"] = "선택한 특성"
|
L["Talent Selected"] = "선택한 특성"
|
||||||
|
L["Talent selected"] = "선택한 특성"
|
||||||
L["Talent Specialization"] = "특성 전문화"
|
L["Talent Specialization"] = "특성 전문화"
|
||||||
L["Tanking And Highest"] = "탱커이면서 제일 높을 때"
|
L["Tanking And Highest"] = "탱커이면서 제일 높을 때"
|
||||||
L["Tanking But Not Highest"] = "탱커지만 제일 높지 않을 때"
|
L["Tanking But Not Highest"] = "탱커지만 제일 높지 않을 때"
|
||||||
|
|||||||
@@ -1142,10 +1142,10 @@ L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Insta
|
|||||||
L["Instance"] = "Instance"
|
L["Instance"] = "Instance"
|
||||||
L["Instance Difficulty"] = "Dificuldade da Instância"
|
L["Instance Difficulty"] = "Dificuldade da Instância"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance ID"] = "Instance ID"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Instance Id"] = "Instance Id"
|
L["Instance Id"] = "Instance Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Instance ID"] = "Instance ID"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Instance Info"] = "Instance Info"
|
L["Instance Info"] = "Instance Info"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Instance Name"] = "Instance Name"
|
L["Instance Name"] = "Instance Name"
|
||||||
@@ -1773,10 +1773,10 @@ L["Progress Value"] = "Progress Value"
|
|||||||
L["Pulse"] = "Pulsar"
|
L["Pulse"] = "Pulsar"
|
||||||
L["PvP Flagged"] = "Marcado para JxJ"
|
L["PvP Flagged"] = "Marcado para JxJ"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["PvP Talent Selected"] = "PvP Talent Selected"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["PvP Talent selected"] = "PvP Talent selected"
|
L["PvP Talent selected"] = "PvP Talent selected"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["PvP Talent Selected"] = "PvP Talent Selected"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Quality Id"] = "Quality Id"
|
L["Quality Id"] = "Quality Id"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Quantity"] = "Quantity"
|
L["Quantity"] = "Quantity"
|
||||||
@@ -2158,6 +2158,8 @@ L["Stage"] = "Stage"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stage Counter"] = "Stage Counter"
|
L["Stage Counter"] = "Stage Counter"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Stagger (%)"] = "Stagger (%)"
|
L["Stagger (%)"] = "Stagger (%)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
L["Stagger against Target (%)"] = "Stagger against Target (%)"
|
||||||
@@ -2251,9 +2253,9 @@ L["Talent |cFFFF0000Not|r Selected"] = "Talent |cFFFF0000Not|r Selected"
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Talent Known"] = "Talent Known"
|
L["Talent Known"] = "Talent Known"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Talent selected"] = "Talent selected"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Talent Selected"] = "Talent Selected"
|
L["Talent Selected"] = "Talent Selected"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Talent selected"] = "Talent selected"
|
||||||
L["Talent Specialization"] = "Especialização de talentos"
|
L["Talent Specialization"] = "Especialização de talentos"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Tanking And Highest"] = "Tanking And Highest"
|
L["Tanking And Highest"] = "Tanking And Highest"
|
||||||
|
|||||||
@@ -709,8 +709,8 @@ L["Instakill"] = "Моментальное убийство"
|
|||||||
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Установите аддоны BugSack и BugGrabber для получения подробных записей об ошибках."
|
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "Установите аддоны BugSack и BugGrabber для получения подробных записей об ошибках."
|
||||||
L["Instance"] = "Подземелье"
|
L["Instance"] = "Подземелье"
|
||||||
L["Instance Difficulty"] = "Сложность подземелья"
|
L["Instance Difficulty"] = "Сложность подземелья"
|
||||||
L["Instance ID"] = "Идентификатор подземелья"
|
|
||||||
L["Instance Id"] = "ID подземелья"
|
L["Instance Id"] = "ID подземелья"
|
||||||
|
L["Instance ID"] = "Идентификатор подземелья"
|
||||||
L["Instance Info"] = "Информация о подземелье"
|
L["Instance Info"] = "Информация о подземелье"
|
||||||
L["Instance Name"] = "Название подземелья"
|
L["Instance Name"] = "Название подземелья"
|
||||||
L["Instance Size Type"] = "Тип размера подземелья"
|
L["Instance Size Type"] = "Тип размера подземелья"
|
||||||
@@ -1060,8 +1060,8 @@ L["Progress Total"] = "Общее значение"
|
|||||||
L["Progress Value"] = "Текущее значение"
|
L["Progress Value"] = "Текущее значение"
|
||||||
L["Pulse"] = "Пульсация"
|
L["Pulse"] = "Пульсация"
|
||||||
L["PvP Flagged"] = "В режиме PvP"
|
L["PvP Flagged"] = "В режиме PvP"
|
||||||
L["PvP Talent Selected"] = "PvP талант выбран"
|
|
||||||
L["PvP Talent selected"] = "PvP талант выбран"
|
L["PvP Talent selected"] = "PvP талант выбран"
|
||||||
|
L["PvP Talent Selected"] = "PvP талант выбран"
|
||||||
L["Quality Id"] = "ID качества"
|
L["Quality Id"] = "ID качества"
|
||||||
L["Quantity"] = "Количество"
|
L["Quantity"] = "Количество"
|
||||||
L["Quantity earned this week"] = "Заработано на этой неделе"
|
L["Quantity earned this week"] = "Заработано на этой неделе"
|
||||||
@@ -1284,6 +1284,8 @@ L["Stacks Function"] = "Функция стаков"
|
|||||||
L["Stacks Function (fallback state)"] = "Функция стаков (резервное состояние)"
|
L["Stacks Function (fallback state)"] = "Функция стаков (резервное состояние)"
|
||||||
L["Stage"] = "Фаза"
|
L["Stage"] = "Фаза"
|
||||||
L["Stage Counter"] = "Счетчик фаз"
|
L["Stage Counter"] = "Счетчик фаз"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
L["Stagger (%)"] = "Пошатывание (%)"
|
L["Stagger (%)"] = "Пошатывание (%)"
|
||||||
L["Stagger against Target (%)"] = "Пошатывание против текущей цели (%)"
|
L["Stagger against Target (%)"] = "Пошатывание против текущей цели (%)"
|
||||||
L["Stagger Scale"] = [=[Масштаб пошатывания
|
L["Stagger Scale"] = [=[Масштаб пошатывания
|
||||||
@@ -1338,8 +1340,8 @@ L["Talent"] = "Талант"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "Талант |cFFFF0000НЕ|rизвестен"
|
L["Talent |cFFFF0000Not|r Known"] = "Талант |cFFFF0000НЕ|rизвестен"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "Талант |cFFFF0000НЕ|r выбран"
|
L["Talent |cFFFF0000Not|r Selected"] = "Талант |cFFFF0000НЕ|r выбран"
|
||||||
L["Talent Known"] = "Талант известен"
|
L["Talent Known"] = "Талант известен"
|
||||||
L["Talent selected"] = "Выбран талант"
|
|
||||||
L["Talent Selected"] = "Талант выбран"
|
L["Talent Selected"] = "Талант выбран"
|
||||||
|
L["Talent selected"] = "Выбран талант"
|
||||||
L["Talent Specialization"] = "Специализация"
|
L["Talent Specialization"] = "Специализация"
|
||||||
L["Tanking And Highest"] = "Вы основная цель; макс. угроза"
|
L["Tanking And Highest"] = "Вы основная цель; макс. угроза"
|
||||||
L["Tanking But Not Highest"] = "Вы основная цель; не макс. угроза"
|
L["Tanking But Not Highest"] = "Вы основная цель; не макс. угроза"
|
||||||
|
|||||||
@@ -653,8 +653,8 @@ L["Hybrid"] = "混合"
|
|||||||
L["Icon"] = "图标"
|
L["Icon"] = "图标"
|
||||||
L["Icon Function"] = "图标函数"
|
L["Icon Function"] = "图标函数"
|
||||||
L["Icon Function (fallback state)"] = "图标函数(后备状态)"
|
L["Icon Function (fallback state)"] = "图标函数(后备状态)"
|
||||||
L["ID"] = "ID"
|
|
||||||
L["Id"] = "ID"
|
L["Id"] = "ID"
|
||||||
|
L["ID"] = "ID"
|
||||||
L["If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"] = "如果你需要进一步的协助,请在 GitHub 上提交工单或是访问我们的 Discord:https://discord.gg/weakauras!"
|
L["If you require additional assistance, please open a ticket on GitHub or visit our Discord at https://discord.gg/weakauras!"] = "如果你需要进一步的协助,请在 GitHub 上提交工单或是访问我们的 Discord:https://discord.gg/weakauras!"
|
||||||
L["Ignore Dead"] = "忽略已死亡"
|
L["Ignore Dead"] = "忽略已死亡"
|
||||||
L["Ignore Disconnected"] = "忽略已离线"
|
L["Ignore Disconnected"] = "忽略已离线"
|
||||||
@@ -690,8 +690,8 @@ L["Instakill"] = "秒杀"
|
|||||||
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "安装BugSack和BugGrabber插件以获得详细错误记录。"
|
L["Install the addons BugSack and BugGrabber for detailed error logs."] = "安装BugSack和BugGrabber插件以获得详细错误记录。"
|
||||||
L["Instance"] = "副本"
|
L["Instance"] = "副本"
|
||||||
L["Instance Difficulty"] = "副本难度"
|
L["Instance Difficulty"] = "副本难度"
|
||||||
L["Instance ID"] = "副本ID"
|
|
||||||
L["Instance Id"] = "副本ID"
|
L["Instance Id"] = "副本ID"
|
||||||
|
L["Instance ID"] = "副本ID"
|
||||||
L["Instance Info"] = "副本信息"
|
L["Instance Info"] = "副本信息"
|
||||||
L["Instance Name"] = "副本名称"
|
L["Instance Name"] = "副本名称"
|
||||||
L["Instance Size Type"] = "副本大小类型"
|
L["Instance Size Type"] = "副本大小类型"
|
||||||
@@ -802,8 +802,8 @@ L["Matches (Pattern)"] = "匹配(表达式)"
|
|||||||
L[ [=[Matches stage number of encounter journal.
|
L[ [=[Matches stage number of encounter journal.
|
||||||
Intermissions are .5
|
Intermissions are .5
|
||||||
E.g. 1;2;1;2;2.5;3]=] ] = "符合冒险指南的阶段。转阶段为.5。例如1;2;1;2;2.5;3"
|
E.g. 1;2;1;2;2.5;3]=] ] = "符合冒险指南的阶段。转阶段为.5。例如1;2;1;2;2.5;3"
|
||||||
L["Max Char"] = "最大字符数"
|
|
||||||
L["Max Char "] = "最大字符数"
|
L["Max Char "] = "最大字符数"
|
||||||
|
L["Max Char"] = "最大字符数"
|
||||||
L["Max Charges"] = "最大充能次数"
|
L["Max Charges"] = "最大充能次数"
|
||||||
L["Max Health"] = "最大生命值"
|
L["Max Health"] = "最大生命值"
|
||||||
L["Max Power"] = "最大能量值"
|
L["Max Power"] = "最大能量值"
|
||||||
@@ -1071,8 +1071,8 @@ L["Progress Total"] = "进度总计"
|
|||||||
L["Progress Value"] = "进度值"
|
L["Progress Value"] = "进度值"
|
||||||
L["Pulse"] = "脉动"
|
L["Pulse"] = "脉动"
|
||||||
L["PvP Flagged"] = "PvP 状态"
|
L["PvP Flagged"] = "PvP 状态"
|
||||||
L["PvP Talent Selected"] = "已选择PvP天赋"
|
|
||||||
L["PvP Talent selected"] = "PvP 天赋选择"
|
L["PvP Talent selected"] = "PvP 天赋选择"
|
||||||
|
L["PvP Talent Selected"] = "已选择PvP天赋"
|
||||||
L["Quality Id"] = "品质ID"
|
L["Quality Id"] = "品质ID"
|
||||||
L["Quantity"] = "数量"
|
L["Quantity"] = "数量"
|
||||||
L["Quantity earned this week"] = "本周获取数量"
|
L["Quantity earned this week"] = "本周获取数量"
|
||||||
@@ -1290,6 +1290,8 @@ L["Stacks Function"] = "层数函数"
|
|||||||
L["Stacks Function (fallback state)"] = "层数函数(后备状态)"
|
L["Stacks Function (fallback state)"] = "层数函数(后备状态)"
|
||||||
L["Stage"] = "阶段"
|
L["Stage"] = "阶段"
|
||||||
L["Stage Counter"] = "阶段计数"
|
L["Stage Counter"] = "阶段计数"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Stagger"] = "Stagger"
|
||||||
L["Stagger (%)"] = "醉拳 (%)"
|
L["Stagger (%)"] = "醉拳 (%)"
|
||||||
L["Stagger against Target (%)"] = "针对目标的醉拳 (%)"
|
L["Stagger against Target (%)"] = "针对目标的醉拳 (%)"
|
||||||
L["Stagger Scale"] = "醉拳缩放比例"
|
L["Stagger Scale"] = "醉拳缩放比例"
|
||||||
@@ -1341,8 +1343,8 @@ L["Talent"] = "天赋"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "天赋|cFFFF0000不|r可用"
|
L["Talent |cFFFF0000Not|r Known"] = "天赋|cFFFF0000不|r可用"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "天赋|cFFFF0000未|r选择"
|
L["Talent |cFFFF0000Not|r Selected"] = "天赋|cFFFF0000未|r选择"
|
||||||
L["Talent Known"] = "天赋可用"
|
L["Talent Known"] = "天赋可用"
|
||||||
L["Talent selected"] = "天赋选择"
|
|
||||||
L["Talent Selected"] = "天赋选择"
|
L["Talent Selected"] = "天赋选择"
|
||||||
|
L["Talent selected"] = "天赋选择"
|
||||||
L["Talent Specialization"] = "专精"
|
L["Talent Specialization"] = "专精"
|
||||||
L["Tanking And Highest"] = "做T并且最高"
|
L["Tanking And Highest"] = "做T并且最高"
|
||||||
L["Tanking But Not Highest"] = "做T但不是最高"
|
L["Tanking But Not Highest"] = "做T但不是最高"
|
||||||
|
|||||||
@@ -582,8 +582,7 @@ L["Global Cooldown"] = "共用冷卻 (GCD)"
|
|||||||
L["Glow"] = "發光"
|
L["Glow"] = "發光"
|
||||||
L["Glow External Element"] = "發光外部元素"
|
L["Glow External Element"] = "發光外部元素"
|
||||||
L["Gluth"] = "古魯斯"
|
L["Gluth"] = "古魯斯"
|
||||||
--[[Translation missing --]]
|
L["Glyph"] = "雕紋"
|
||||||
L["Glyph"] = "Glyph"
|
|
||||||
L["Gold"] = "金"
|
L["Gold"] = "金"
|
||||||
L["Golemagg the Incinerator"] = "『焚化者』古雷曼格"
|
L["Golemagg the Incinerator"] = "『焚化者』古雷曼格"
|
||||||
L["Gothik the Harvester"] = "『收割者』高希"
|
L["Gothik the Harvester"] = "『收割者』高希"
|
||||||
@@ -1046,8 +1045,8 @@ L["Progress Total"] = "總進度"
|
|||||||
L["Progress Value"] = "進度值"
|
L["Progress Value"] = "進度值"
|
||||||
L["Pulse"] = "跳動"
|
L["Pulse"] = "跳動"
|
||||||
L["PvP Flagged"] = "PvP 標幟"
|
L["PvP Flagged"] = "PvP 標幟"
|
||||||
L["PvP Talent Selected"] = "已選擇的 PvP 天賦"
|
|
||||||
L["PvP Talent selected"] = "選擇的 PvP 天賦"
|
L["PvP Talent selected"] = "選擇的 PvP 天賦"
|
||||||
|
L["PvP Talent Selected"] = "已選擇的 PvP 天賦"
|
||||||
L["Quality Id"] = "品質id"
|
L["Quality Id"] = "品質id"
|
||||||
L["Quantity"] = "數量"
|
L["Quantity"] = "數量"
|
||||||
L["Quantity earned this week"] = "本週獲取數量"
|
L["Quantity earned this week"] = "本週獲取數量"
|
||||||
@@ -1265,6 +1264,7 @@ L["Stacks Function"] = "層數功能"
|
|||||||
L["Stacks Function (fallback state)"] = "層數函數 (備用狀態)"
|
L["Stacks Function (fallback state)"] = "層數函數 (備用狀態)"
|
||||||
L["Stage"] = "階段"
|
L["Stage"] = "階段"
|
||||||
L["Stage Counter"] = "階段統計"
|
L["Stage Counter"] = "階段統計"
|
||||||
|
L["Stagger"] = "醉酒"
|
||||||
L["Stagger (%)"] = "醉仙緩勁 (%)"
|
L["Stagger (%)"] = "醉仙緩勁 (%)"
|
||||||
L["Stagger against Target (%)"] = "醉仙緩勁目標 (%)"
|
L["Stagger against Target (%)"] = "醉仙緩勁目標 (%)"
|
||||||
L["Stagger Scale"] = "醉仙緩勁縮放大小"
|
L["Stagger Scale"] = "醉仙緩勁縮放大小"
|
||||||
@@ -1319,8 +1319,8 @@ L["Talent"] = "天賦"
|
|||||||
L["Talent |cFFFF0000Not|r Known"] = "|cFFFF0000未知的|r天賦"
|
L["Talent |cFFFF0000Not|r Known"] = "|cFFFF0000未知的|r天賦"
|
||||||
L["Talent |cFFFF0000Not|r Selected"] = "|cFFFF0000沒有選擇|r天賦"
|
L["Talent |cFFFF0000Not|r Selected"] = "|cFFFF0000沒有選擇|r天賦"
|
||||||
L["Talent Known"] = "已知的天賦"
|
L["Talent Known"] = "已知的天賦"
|
||||||
L["Talent selected"] = "選擇的天賦"
|
|
||||||
L["Talent Selected"] = "選擇的天賦"
|
L["Talent Selected"] = "選擇的天賦"
|
||||||
|
L["Talent selected"] = "選擇的天賦"
|
||||||
L["Talent Specialization"] = "天賦專精"
|
L["Talent Specialization"] = "天賦專精"
|
||||||
L["Tanking And Highest"] = "坦怪中並且是最高"
|
L["Tanking And Highest"] = "坦怪中並且是最高"
|
||||||
L["Tanking But Not Highest"] = "坦怪中但不是最高"
|
L["Tanking But Not Highest"] = "坦怪中但不是最高"
|
||||||
|
|||||||
@@ -2063,6 +2063,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "standing",
|
name = "standing",
|
||||||
@@ -2194,6 +2195,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "header",
|
type = "header",
|
||||||
@@ -2230,6 +2232,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
overlayFuncs = {
|
overlayFuncs = {
|
||||||
@@ -2316,7 +2319,8 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
progressTotal = "maxhealth"
|
progressTotal = "maxhealth",
|
||||||
|
formatter = "BigNumber",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "value",
|
name = "value",
|
||||||
@@ -2350,6 +2354,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "deficit",
|
name = "deficit",
|
||||||
@@ -2362,7 +2367,8 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
progressTotal = "total"
|
progressTotal = "total",
|
||||||
|
formatter = "BigNumber",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "maxhealth",
|
name = "maxhealth",
|
||||||
@@ -2375,6 +2381,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "BigNumber",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "header",
|
type = "header",
|
||||||
@@ -2818,6 +2825,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "deficit",
|
name = "deficit",
|
||||||
@@ -3085,7 +3093,9 @@ Private.event_prototypes = {
|
|||||||
hidden = "true",
|
hidden = "true",
|
||||||
test = "true",
|
test = "true",
|
||||||
store = true,
|
store = true,
|
||||||
display = L["Source GUID"]
|
display = L["Source GUID"],
|
||||||
|
formatter = "guid",
|
||||||
|
formatterArgs = { color = "class" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "sourceUnit",
|
name = "sourceUnit",
|
||||||
@@ -3192,7 +3202,9 @@ Private.event_prototypes = {
|
|||||||
hidden = "true",
|
hidden = "true",
|
||||||
test = "true",
|
test = "true",
|
||||||
store = true,
|
store = true,
|
||||||
display = L["Destination GUID"]
|
display = L["Destination GUID"],
|
||||||
|
formatter = "guid",
|
||||||
|
formatterArgs = { color = "class" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "destUnit",
|
name = "destUnit",
|
||||||
@@ -6045,6 +6057,8 @@ Private.event_prototypes = {
|
|||||||
store = true,
|
store = true,
|
||||||
hidden = true,
|
hidden = true,
|
||||||
test = "true",
|
test = "true",
|
||||||
|
formatter = "guid",
|
||||||
|
formatterArgs = { color = "class" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "cloneId",
|
name = "cloneId",
|
||||||
@@ -6670,6 +6684,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "rawthreatpct",
|
name = "rawthreatpct",
|
||||||
@@ -6683,6 +6698,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "threatvalue",
|
name = "threatvalue",
|
||||||
@@ -7428,6 +7444,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "hitrating",
|
name = "hitrating",
|
||||||
@@ -7452,6 +7469,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "hasterating",
|
name = "hasterating",
|
||||||
@@ -7476,6 +7494,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "expertiserating",
|
name = "expertiserating",
|
||||||
@@ -7524,6 +7543,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "spellpenpercent",
|
name = "spellpenpercent",
|
||||||
@@ -7536,6 +7556,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "resiliencerating",
|
name = "resiliencerating",
|
||||||
@@ -7560,6 +7581,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "attackpower",
|
name = "attackpower",
|
||||||
@@ -7685,6 +7707,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "header",
|
type = "header",
|
||||||
@@ -7714,6 +7737,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "parryrating",
|
name = "parryrating",
|
||||||
@@ -7738,6 +7762,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "blockpercent",
|
name = "blockpercent",
|
||||||
@@ -7750,6 +7775,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "blockvalue",
|
name = "blockvalue",
|
||||||
@@ -7786,6 +7812,7 @@ Private.event_prototypes = {
|
|||||||
operator = "and",
|
operator = "and",
|
||||||
limit = 2
|
limit = 2
|
||||||
},
|
},
|
||||||
|
formatter = "Number",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
automaticrequired = true,
|
automaticrequired = true,
|
||||||
@@ -8225,7 +8252,9 @@ Private.event_prototypes = {
|
|||||||
type = "number",
|
type = "number",
|
||||||
init = "min",
|
init = "min",
|
||||||
store = true,
|
store = true,
|
||||||
test = "true"
|
test = "true",
|
||||||
|
conditionType = "number",
|
||||||
|
operator_types = "without_equal",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
hidden = true,
|
hidden = true,
|
||||||
@@ -8234,7 +8263,9 @@ Private.event_prototypes = {
|
|||||||
type = "number",
|
type = "number",
|
||||||
init = "max",
|
init = "max",
|
||||||
store = true,
|
store = true,
|
||||||
test = "true"
|
test = "true",
|
||||||
|
conditionType = "number",
|
||||||
|
operator_types = "without_equal",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "range",
|
name = "range",
|
||||||
@@ -8246,6 +8277,7 @@ Private.event_prototypes = {
|
|||||||
conditionTest = function(state, needle, needle2)
|
conditionTest = function(state, needle, needle2)
|
||||||
return state and state.show and WeakAuras.CheckRange(state.unit, needle, needle2);
|
return state and state.show and WeakAuras.CheckRange(state.unit, needle, needle2);
|
||||||
end,
|
end,
|
||||||
|
noProgressSource = true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
hidden = true,
|
hidden = true,
|
||||||
@@ -8291,6 +8323,7 @@ Private.event_prototypes = {
|
|||||||
display = Private.coin_icons.gold .. L["Gold"],
|
display = Private.coin_icons.gold .. L["Gold"],
|
||||||
store = true,
|
store = true,
|
||||||
conditionType = "number",
|
conditionType = "number",
|
||||||
|
formatter = "BigNumber"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "silver",
|
name = "silver",
|
||||||
|
|||||||
@@ -241,12 +241,20 @@ local function modify(parent, region, data)
|
|||||||
|
|
||||||
local Update
|
local Update
|
||||||
if customTextFunc and self.displayText and Private.ContainsCustomPlaceHolder(self.displayText) then
|
if customTextFunc and self.displayText and Private.ContainsCustomPlaceHolder(self.displayText) then
|
||||||
Update = function()
|
Update = function(self)
|
||||||
self.values.custom = Private.RunCustomTextFunc(self, customTextFunc)
|
self.values.custom = Private.RunCustomTextFunc(self, customTextFunc)
|
||||||
UpdateText()
|
UpdateText()
|
||||||
|
self:UpdateProgress()
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Update = UpdateText or function() end
|
if UpdateText then
|
||||||
|
Update = function()
|
||||||
|
UpdateText()
|
||||||
|
self:UpdateProgress()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Update = function() self:UpdateProgress() end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local FrameTick
|
local FrameTick
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ local function modify(parent, region, parentData, data, first)
|
|||||||
end
|
end
|
||||||
return data[fullKey]
|
return data[fullKey]
|
||||||
end
|
end
|
||||||
|
|
||||||
region.subTextFormatters, region.everyFrameFormatters = Private.CreateFormatters(texts, getter, false, parentData)
|
region.subTextFormatters, region.everyFrameFormatters = Private.CreateFormatters(texts, getter, false, parentData)
|
||||||
|
|
||||||
function region:ConfigureTextUpdate()
|
function region:ConfigureTextUpdate()
|
||||||
|
|||||||
@@ -0,0 +1,347 @@
|
|||||||
|
local AddonName = ...
|
||||||
|
local Private = select(2, ...)
|
||||||
|
|
||||||
|
Private.Features:Register({
|
||||||
|
id = "undo",
|
||||||
|
autoEnable = {"dev", "pr", "alpha"},
|
||||||
|
enabled = true,
|
||||||
|
persist = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
local TimeMachine = {
|
||||||
|
next = {
|
||||||
|
forward = {},
|
||||||
|
backward = {}
|
||||||
|
},
|
||||||
|
transaction = false,
|
||||||
|
changes = {},
|
||||||
|
actions = {},
|
||||||
|
effects = {},
|
||||||
|
index = 0,
|
||||||
|
sub = Private.CreateSubscribableObject(),
|
||||||
|
}
|
||||||
|
|
||||||
|
Private.TimeMachine = TimeMachine
|
||||||
|
|
||||||
|
local function resolveKey(data, path)
|
||||||
|
if type(path) ~= 'table' then
|
||||||
|
return data, path
|
||||||
|
end
|
||||||
|
local tbl = data
|
||||||
|
local i = 1
|
||||||
|
while i < #path do
|
||||||
|
if tbl[path[i]] == nil then
|
||||||
|
tbl[path[i]] = {}
|
||||||
|
elseif type(tbl[path[i]]) ~= 'table' then
|
||||||
|
error("Path is not valid: " .. table.concat(path, '.') .. " at " .. path[i])
|
||||||
|
end
|
||||||
|
tbl = tbl[path[i]]
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
return tbl, path[#path]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy(tbl, key)
|
||||||
|
if type(tbl[key]) == "table" then
|
||||||
|
return CopyTable(tbl[key])
|
||||||
|
else
|
||||||
|
return tbl[key]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:RegisterEffect(tag, func, idempotent)
|
||||||
|
if self.effects[tag] then
|
||||||
|
error("Effect already registered: " .. tag)
|
||||||
|
end
|
||||||
|
self.effects[tag] = {
|
||||||
|
idempotent = idempotent,
|
||||||
|
func = func
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
TimeMachine:RegisterEffect("add", function(uid, data)
|
||||||
|
Private.Add(data)
|
||||||
|
end, true)
|
||||||
|
|
||||||
|
TimeMachine:RegisterEffect("options_cu", function(uid, data)
|
||||||
|
if WeakAuras.IsOptionsOpen() then
|
||||||
|
WeakAuras.ClearAndUpdateOptions(data.id, true)
|
||||||
|
end
|
||||||
|
end, true)
|
||||||
|
|
||||||
|
function TimeMachine:RegisterAction(actionType, actor, inverter, autoEffects)
|
||||||
|
if self.actions[actionType] then
|
||||||
|
error("Action already registered: " .. actionType)
|
||||||
|
end
|
||||||
|
self.actions[actionType] = {
|
||||||
|
actor = actor,
|
||||||
|
inverter = inverter,
|
||||||
|
autoEffects = autoEffects,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
TimeMachine:RegisterAction("none",
|
||||||
|
function(_data, _path)
|
||||||
|
end,
|
||||||
|
function(_data, path)
|
||||||
|
return 'none', path, nil
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("set",
|
||||||
|
function(data, path, value)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
tbl[key] = value
|
||||||
|
end,
|
||||||
|
function(data, path)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
return 'set', path, copy(tbl, key)
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("setmany",
|
||||||
|
function(data, path, values)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
for k, v in pairs(values) do
|
||||||
|
tbl[key][k] = v
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
function(data, path, values)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
local inverse = {}
|
||||||
|
for k, v in pairs(values) do
|
||||||
|
inverse[k] = copy(tbl[key], k)
|
||||||
|
end
|
||||||
|
return 'setmany', path, inverse
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("insert",
|
||||||
|
function(data, path, payload)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
if payload.index == nil then
|
||||||
|
table.insert(tbl[key], payload.value)
|
||||||
|
else
|
||||||
|
table.insert(tbl[key], payload.index, payload.value)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
function(data, path, payload)
|
||||||
|
return 'remove', path, payload.index
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("remove",
|
||||||
|
function(data, path, payload)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
if payload == nil then
|
||||||
|
table.remove(tbl[key])
|
||||||
|
else
|
||||||
|
table.remove(tbl[key], payload)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
function(data, path, payload)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
return 'insert', path, {index = payload, value = copy(tbl[key], payload or #tbl[key])}
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("swap",
|
||||||
|
function(data, path, payload)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
tbl[key][payload[1]], tbl[key][payload[2]] = tbl[key][payload[2]], tbl[key][payload[1]]
|
||||||
|
end,
|
||||||
|
function(data, path, payload)
|
||||||
|
return 'swap', path, {payload[2], payload[1]}
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
TimeMachine:RegisterAction("move",
|
||||||
|
function(data, path, payload)
|
||||||
|
local tbl, key = resolveKey(data, path)
|
||||||
|
local value = table.remove(tbl, payload[1])
|
||||||
|
table.insert(tbl[key], payload[2], value)
|
||||||
|
end,
|
||||||
|
function(data, path, payload)
|
||||||
|
return 'move', path, {payload[2], payload[1]}
|
||||||
|
end,
|
||||||
|
{"add", "options_cu"}
|
||||||
|
)
|
||||||
|
|
||||||
|
local function keyPathToString(path)
|
||||||
|
if type(path) == 'table' then
|
||||||
|
return table.concat(path, '.')
|
||||||
|
else
|
||||||
|
return path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function invertEffects(effects)
|
||||||
|
local inverted = {}
|
||||||
|
for i = #effects, 1, -1 do
|
||||||
|
table.insert(inverted, effects[i])
|
||||||
|
end
|
||||||
|
return inverted
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:StartTransaction()
|
||||||
|
if self.transaction then
|
||||||
|
WeakAuras.prettyPrint("If you're reading this, a time machine transaction was started, but there was already one in progress. That's not supposed to happen. Please report this to the WeakAuras developers, thanks!")
|
||||||
|
self:Reject()
|
||||||
|
end
|
||||||
|
self.transaction = true
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:Append(record)
|
||||||
|
local action = self.actions[record.actionType]
|
||||||
|
Private.DebugPrint("Forward action", record.actionType, "for", record.uid, "at", keyPathToString(record.path), "with", record.payload)
|
||||||
|
if not action then
|
||||||
|
error("No action for actionType: " .. record.actionType)
|
||||||
|
end
|
||||||
|
local inverter = action.inverter
|
||||||
|
if not inverter then
|
||||||
|
error("No inverter for action: " .. record.actionType)
|
||||||
|
end
|
||||||
|
local actionType, path, payload = inverter(Private.GetDataByUID(record.uid), record.path, record.payload)
|
||||||
|
local inverseRecord = {
|
||||||
|
uid = record.uid,
|
||||||
|
actionType = actionType,
|
||||||
|
path = path,
|
||||||
|
payload = payload,
|
||||||
|
suppressAutoEffects = record.suppressAutoEffects and CopyTable(record.suppressAutoEffects) or nil,
|
||||||
|
effects = record.effects and invertEffects(record.effects) or nil,
|
||||||
|
}
|
||||||
|
Private.DebugPrint("Backward action", actionType, "for", record.uid, "at", keyPathToString(path), "with", payload)
|
||||||
|
table.insert(self.next.forward, record)
|
||||||
|
table.insert(self.next.backward, 1, inverseRecord)
|
||||||
|
if not self.transaction then
|
||||||
|
self:Commit(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:AppendMany(records)
|
||||||
|
local commit = false
|
||||||
|
if not self.transaction then
|
||||||
|
self:StartTransaction()
|
||||||
|
commit = true
|
||||||
|
end
|
||||||
|
for _, record in ipairs(records) do
|
||||||
|
self:Append(record)
|
||||||
|
end
|
||||||
|
if commit then
|
||||||
|
self:Commit()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:Reject()
|
||||||
|
self.next = {
|
||||||
|
forward = {},
|
||||||
|
backward = {}
|
||||||
|
}
|
||||||
|
self.transaction = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:Commit(instant)
|
||||||
|
if not self.transaction and not instant then
|
||||||
|
WeakAuras.prettyPrint("If you're reading this, a time machine transaction was committed, but there was no transaction in progress. That's not supposed to happen. Please report this to the WeakAuras developers, thanks!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
while self.index < #self.changes do
|
||||||
|
table.remove(self.changes)
|
||||||
|
end
|
||||||
|
table.insert(self.changes, self.next)
|
||||||
|
self.next = {
|
||||||
|
forward = {},
|
||||||
|
backward = {}
|
||||||
|
}
|
||||||
|
self.transaction = false
|
||||||
|
return self:StepForward()
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:Apply(records, delayedEffects)
|
||||||
|
for _, record in ipairs(records) do
|
||||||
|
local action = self.actions[record.actionType]
|
||||||
|
if not action then
|
||||||
|
error("No action for actionType: " .. record.actionType)
|
||||||
|
end
|
||||||
|
local data = Private.GetDataByUID(record.uid)
|
||||||
|
action.actor(data, record.path, record.payload)
|
||||||
|
if action.autoEffects or record.effects then
|
||||||
|
local effects = {}
|
||||||
|
if action.autoEffects then
|
||||||
|
for _, effect in ipairs(action.autoEffects) do
|
||||||
|
if not record.suppressAutoEffects or not record.suppressAutoEffects[effect] then
|
||||||
|
table.insert(effects, effect)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if record.effects then
|
||||||
|
for _, effect in ipairs(record.effects) do
|
||||||
|
table.insert(effects, effect)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for _, effectType in ipairs(effects) do
|
||||||
|
local effect = self.effects[effectType]
|
||||||
|
if not effect then
|
||||||
|
error("No effect for effectType: " .. effect)
|
||||||
|
end
|
||||||
|
if not delayedEffects or not effect.idempotent then
|
||||||
|
if not record.effects or record.suppressAutoEffects then
|
||||||
|
effect.func(record.uid, data)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
delayedEffects[record.uid] = delayedEffects[record.uid] or {}
|
||||||
|
delayedEffects[record.uid][effectType] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return delayedEffects
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:StepForward()
|
||||||
|
if self.index < #self.changes then
|
||||||
|
self.index = self.index + 1
|
||||||
|
self:Apply(self.changes[self.index].forward)
|
||||||
|
if self.sub:HasSubscribers("Step") then
|
||||||
|
self.sub:Notify("Step", self.index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:StepBackward()
|
||||||
|
if self.index > 0 then
|
||||||
|
self:Apply(self.changes[self.index].backward)
|
||||||
|
self.index = self.index - 1
|
||||||
|
if self.sub:HasSubscribers("Step") then
|
||||||
|
self.sub:Notify("Step", self.index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- much safer than the name suggests!
|
||||||
|
function TimeMachine:DestroyTheUniverse(id)
|
||||||
|
if self.transaction then
|
||||||
|
WeakAuras.prettyPrint("If you're reading this, a time machine transaction was destroyed, but there was one in progress. That's not supposed to happen. Please report this to the WeakAuras developers, thanks!")
|
||||||
|
self:Reject()
|
||||||
|
end
|
||||||
|
if #self.changes > 0 then
|
||||||
|
Private.DebugPrint(string.format("Destroying the universe where %i change(s) happpened, because an unexpected change happened to %q.", #self.changes, id))
|
||||||
|
end
|
||||||
|
self.changes = {}
|
||||||
|
self.index = 0
|
||||||
|
if self.sub:HasSubscribers("Step") then
|
||||||
|
self.sub:Notify("Step", self.index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:DescribeNext()
|
||||||
|
return self.changes[self.index + 1] and self.changes[self.index + 1].forward
|
||||||
|
end
|
||||||
|
|
||||||
|
function TimeMachine:DescribePrevious()
|
||||||
|
return self.changes[self.index] and self.changes[self.index].backward
|
||||||
|
end
|
||||||
+111
-4
@@ -201,11 +201,51 @@ function SlashCmdList.WEAKAURAS(input)
|
|||||||
elseif msg == "pshow" or msg == "profiling" then
|
elseif msg == "pshow" or msg == "profiling" then
|
||||||
WeakAuras.RealTimeProfilingWindow:Toggle()
|
WeakAuras.RealTimeProfilingWindow:Toggle()
|
||||||
elseif msg == "minimap" then
|
elseif msg == "minimap" then
|
||||||
Private.ToggleMinimap();
|
WeakAuras.ToggleMinimap();
|
||||||
elseif msg == "help" then
|
elseif msg == "help" then
|
||||||
Private.PrintHelp();
|
Private.PrintHelp();
|
||||||
elseif msg == "repair" then
|
elseif msg == "repair" then
|
||||||
StaticPopup_Show("WEAKAURAS_CONFIRM_REPAIR", nil, nil, {reason = "user"})
|
StaticPopup_Show("WEAKAURAS_CONFIRM_REPAIR", nil, nil, {reason = "user"})
|
||||||
|
elseif msg == "ff" or msg == "feat" or msg == "feature" then
|
||||||
|
if #args < 2 then
|
||||||
|
local features = Private.Features:ListFeatures()
|
||||||
|
local summary = {}
|
||||||
|
for _, feature in ipairs(features) do
|
||||||
|
table.insert(summary, ("|c%s%s|r"):format(feature.enabled and "ff00ff00" or "ffff0000", feature.id))
|
||||||
|
end
|
||||||
|
prettyPrint(L["Syntax /wa feature <toggle|on|enable|disable|off> <feature>"])
|
||||||
|
prettyPrint(L["Available features: %s"]:format(table.concat(summary, ", ")))
|
||||||
|
else
|
||||||
|
local action = ({
|
||||||
|
toggle = "toggle",
|
||||||
|
on = "enable",
|
||||||
|
enable = "enable",
|
||||||
|
disable = "disable",
|
||||||
|
off = "disable"
|
||||||
|
})[args[1]]
|
||||||
|
if not action then
|
||||||
|
prettyPrint(L["Unknown action %q"]:format(args[1]))
|
||||||
|
else
|
||||||
|
local feature = args[2]
|
||||||
|
if not Private.Features:Exists(feature) then
|
||||||
|
prettyPrint(L["Unknown feature %q"]:format(feature))
|
||||||
|
elseif not Private.Features:Enabled(feature) then
|
||||||
|
if action ~= "disable" then
|
||||||
|
Private.Features:Enable(feature)
|
||||||
|
prettyPrint(L["Enabled feature %q"]:format(feature))
|
||||||
|
else
|
||||||
|
prettyPrint(L["Feature %q is already disabled"]:format(feature))
|
||||||
|
end
|
||||||
|
elseif Private.Features:Enabled(feature) then
|
||||||
|
if action ~= "enable" then
|
||||||
|
Private.Features:Disable(feature)
|
||||||
|
prettyPrint(L["Disabled feature %q"]:format(feature))
|
||||||
|
else
|
||||||
|
prettyPrint(L["Feature %q is already enabled"]:format(feature))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
WeakAuras.OpenOptions(msg);
|
WeakAuras.OpenOptions(msg);
|
||||||
end
|
end
|
||||||
@@ -213,7 +253,7 @@ end
|
|||||||
|
|
||||||
if not WeakAuras.IsLibsOK() then return end
|
if not WeakAuras.IsLibsOK() then return end
|
||||||
|
|
||||||
function Private.ToggleMinimap()
|
function WeakAuras.ToggleMinimap()
|
||||||
WeakAurasSaved.minimap.hide = not WeakAurasSaved.minimap.hide
|
WeakAurasSaved.minimap.hide = not WeakAurasSaved.minimap.hide
|
||||||
if WeakAurasSaved.minimap.hide then
|
if WeakAurasSaved.minimap.hide then
|
||||||
LDBIcon:Hide("WeakAuras");
|
LDBIcon:Hide("WeakAuras");
|
||||||
@@ -1137,6 +1177,8 @@ function Private.Login(takeNewSnapshots)
|
|||||||
db.history = nil
|
db.history = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Private.Features:Hydrate()
|
||||||
coroutine.yield(3000, "login check uid corruption")
|
coroutine.yield(3000, "login check uid corruption")
|
||||||
|
|
||||||
local toAdd = {};
|
local toAdd = {};
|
||||||
@@ -1216,6 +1258,7 @@ loadedFrame:SetScript("OnEvent", function(self, event, ...)
|
|||||||
|
|
||||||
db.displays = db.displays or {};
|
db.displays = db.displays or {};
|
||||||
db.registered = db.registered or {};
|
db.registered = db.registered or {};
|
||||||
|
db.features = db.features or {}
|
||||||
db.migrationCutoff = db.migrationCutoff or 730
|
db.migrationCutoff = db.migrationCutoff or 730
|
||||||
db.historyCutoff = db.historyCutoff or 730
|
db.historyCutoff = db.historyCutoff or 730
|
||||||
|
|
||||||
@@ -1772,6 +1815,7 @@ function Private.UIDtoID(uid)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function WeakAuras.Delete(data)
|
function WeakAuras.Delete(data)
|
||||||
|
Private.TimeMachine:DestroyTheUniverse(data.id)
|
||||||
local id = data.id;
|
local id = data.id;
|
||||||
local uid = data.uid
|
local uid = data.uid
|
||||||
local parentId = data.parent
|
local parentId = data.parent
|
||||||
@@ -1871,6 +1915,7 @@ function WeakAuras.Delete(data)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function WeakAuras.Rename(data, newid)
|
function WeakAuras.Rename(data, newid)
|
||||||
|
-- since we Add() later in this function, we need to destroy the universe first
|
||||||
local oldid = data.id
|
local oldid = data.id
|
||||||
if(data.parent) then
|
if(data.parent) then
|
||||||
local parentData = db.displays[data.parent];
|
local parentData = db.displays[data.parent];
|
||||||
@@ -1973,6 +2018,7 @@ function WeakAuras.Rename(data, newid)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Private.Convert(data, newType)
|
function Private.Convert(data, newType)
|
||||||
|
Private.TimeMachine:DestroyTheUniverse(data.id)
|
||||||
local id = data.id;
|
local id = data.id;
|
||||||
Private.FakeStatesFor(id, false)
|
Private.FakeStatesFor(id, false)
|
||||||
|
|
||||||
@@ -2361,7 +2407,7 @@ function Private.AddMany(tbl, takeSnapshots)
|
|||||||
Private.regions[data.id].region:ReloadControlledChildren()
|
Private.regions[data.id].region:ReloadControlledChildren()
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
WeakAuras.Add(data)
|
Private.Add(data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
coroutine.yield(1000, "addmany reload dynamic group");
|
coroutine.yield(1000, "addmany reload dynamic group");
|
||||||
@@ -2911,7 +2957,7 @@ function pAdd(data, simpleChange)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function WeakAuras.Add(data, simpleChange)
|
function Private.Add(data, simpleChange)
|
||||||
local oldSnapshot
|
local oldSnapshot
|
||||||
if Private.ModernizeNeedsOldSnapshot(data) then
|
if Private.ModernizeNeedsOldSnapshot(data) then
|
||||||
oldSnapshot = Private.GetMigrationSnapshot(data.uid)
|
oldSnapshot = Private.GetMigrationSnapshot(data.uid)
|
||||||
@@ -2927,6 +2973,11 @@ function WeakAuras.Add(data, simpleChange)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function WeakAuras.Add(data, simpleChange)
|
||||||
|
Private.TimeMachine:DestroyTheUniverse(data.id)
|
||||||
|
Private.Add(data, simpleChange)
|
||||||
|
end
|
||||||
|
|
||||||
function Private.AddParents(data)
|
function Private.AddParents(data)
|
||||||
local parent = data.parent
|
local parent = data.parent
|
||||||
if (parent) then
|
if (parent) then
|
||||||
@@ -4449,6 +4500,9 @@ Private.callbacks:RegisterCallback("Rename", function(_, uid, oldId, newId)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
function Private.SendDelayedWatchedTriggers()
|
function Private.SendDelayedWatchedTriggers()
|
||||||
|
if WeakAuras.IsOptionsOpen() then
|
||||||
|
return
|
||||||
|
end
|
||||||
for id in pairs(delayed_watched_trigger) do
|
for id in pairs(delayed_watched_trigger) do
|
||||||
local watched = delayed_watched_trigger[id]
|
local watched = delayed_watched_trigger[id]
|
||||||
-- Since the observers are themselves observable, we set the list of observers to
|
-- Since the observers are themselves observable, we set the list of observers to
|
||||||
@@ -4933,6 +4987,59 @@ function Private.ParseTextStr(textStr, symbolCallback)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Private.SetDefaultFormatters(data, input, keyPrefix, metaData)
|
||||||
|
local seenSymbols = {}
|
||||||
|
local setDefaultFormatters = function(symbol)
|
||||||
|
if not data[keyPrefix .. symbol .. "_format"] and not seenSymbols[symbol] then
|
||||||
|
local trigger, sym = string.match(symbol, "(.+)%.(.+)")
|
||||||
|
sym = sym or symbol
|
||||||
|
|
||||||
|
local formatter, args = Private.DefaultFormatterFor(metaData, trigger, sym)
|
||||||
|
data[keyPrefix .. symbol .. "_format"] = formatter
|
||||||
|
for arg, value in pairs(args or {}) do
|
||||||
|
data[keyPrefix .. symbol .. "_" .. arg] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
seenSymbols[symbol] = true
|
||||||
|
end
|
||||||
|
Private.ParseTextStr(input, setDefaultFormatters)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Private.DefaultFormatterFor(stateMetaData, trigger, sym)
|
||||||
|
local formatter
|
||||||
|
local args = {}
|
||||||
|
if sym == "p" or sym == "t" then
|
||||||
|
return "timed", { time_dynamic_threshold = 3 }
|
||||||
|
end
|
||||||
|
|
||||||
|
trigger = tonumber(trigger)
|
||||||
|
if trigger then
|
||||||
|
local metaData = stateMetaData[trigger] and stateMetaData[trigger][sym]
|
||||||
|
if metaData then
|
||||||
|
formatter = metaData.formatter
|
||||||
|
if metaData.formatterArgs then
|
||||||
|
for arg, value in pairs(metaData.formatterArgs) do
|
||||||
|
args[arg] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for index, perTriggerData in pairs(stateMetaData) do
|
||||||
|
if perTriggerData[sym] then
|
||||||
|
if not formatter then
|
||||||
|
formatter = perTriggerData[sym].formatter
|
||||||
|
else
|
||||||
|
if formatter ~= perTriggerData[sym].formatter then
|
||||||
|
return "none"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return formatter or "none", args
|
||||||
|
end
|
||||||
|
|
||||||
function Private.CreateFormatters(input, getter, withoutColor, data)
|
function Private.CreateFormatters(input, getter, withoutColor, data)
|
||||||
local seenSymbols = {}
|
local seenSymbols = {}
|
||||||
local formatters = {}
|
local formatters = {}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
## Interface: 30300
|
## Interface: 30300
|
||||||
## Title: WeakAuras
|
## Title: WeakAuras
|
||||||
## Author: The WeakAuras Team
|
## Author: The WeakAuras Team
|
||||||
## Version: 5.19.12
|
## Version: 5.20.0
|
||||||
## IconTexture: Interface\AddOns\WeakAuras\Media\Textures\icon.blp
|
## IconTexture: Interface\AddOns\WeakAuras\Media\Textures\icon.blp
|
||||||
## X-Flavor: 3.3.5
|
## X-Flavor: 3.3.5
|
||||||
## Notes: A powerful, comprehensive utility for displaying graphics and information based on buffs, debuffs, and other triggers.
|
## Notes: A powerful, comprehensive utility for displaying graphics and information based on buffs, debuffs, and other triggers.
|
||||||
@@ -35,6 +35,9 @@ ArchiveTypes\Repository.lua
|
|||||||
DefaultOptions.lua
|
DefaultOptions.lua
|
||||||
|
|
||||||
# Core files
|
# Core files
|
||||||
|
SubscribableObject.lua
|
||||||
|
Features.lua
|
||||||
|
TimeMachine.lua
|
||||||
Types_ClassicPlus.lua
|
Types_ClassicPlus.lua
|
||||||
Types_TBC.lua
|
Types_TBC.lua
|
||||||
Types_Wrath.lua
|
Types_Wrath.lua
|
||||||
@@ -60,7 +63,6 @@ TSUHelpers.lua
|
|||||||
AuraWarnings.lua
|
AuraWarnings.lua
|
||||||
AuraEnvironment.lua
|
AuraEnvironment.lua
|
||||||
DebugLog.lua
|
DebugLog.lua
|
||||||
SubscribableObject.lua
|
|
||||||
|
|
||||||
# Region support
|
# Region support
|
||||||
RegionTypes\SmoothStatusBarMixin.lua
|
RegionTypes\SmoothStatusBarMixin.lua
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
## Interface: 30300
|
## Interface: 30300
|
||||||
## Title: WeakAuras Model Paths
|
## Title: WeakAuras Model Paths
|
||||||
## Author: The WeakAuras Team
|
## Author: The WeakAuras Team
|
||||||
## Version: 5.19.12
|
## Version: 5.20.0
|
||||||
## Notes: Model paths for WeakAuras
|
## Notes: Model paths for WeakAuras
|
||||||
## Notes-esES: Las rutas de modelos para WeakAuras
|
## Notes-esES: Las rutas de modelos para WeakAuras
|
||||||
## Notes-esMX: Las rutas de modelos para WeakAuras
|
## Notes-esMX: Las rutas de modelos para WeakAuras
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ if not WeakAuras.IsLibsOK() then return end
|
|||||||
ToolbarButton Widget, based on AceGUI Button
|
ToolbarButton Widget, based on AceGUI Button
|
||||||
Graphical Button.
|
Graphical Button.
|
||||||
-------------------------------------------------------------------------------]]
|
-------------------------------------------------------------------------------]]
|
||||||
local Type, Version = "WeakAurasToolbarButton", 6
|
local Type, Version = "WeakAurasToolbarButton", 7
|
||||||
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
||||||
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
||||||
|
|
||||||
@@ -51,6 +51,7 @@ local methods = {
|
|||||||
self:SetText()
|
self:SetText()
|
||||||
self.hTex:SetVertexColor(1, 1, 1, 0.1)
|
self.hTex:SetVertexColor(1, 1, 1, 0.1)
|
||||||
self:SetSmallFont(false)
|
self:SetSmallFont(false)
|
||||||
|
self.text:SetTextColor(GameFontNormal:GetTextColor())
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- ["OnRelease"] = nil,
|
-- ["OnRelease"] = nil,
|
||||||
@@ -72,8 +73,14 @@ local methods = {
|
|||||||
self.disabled = disabled
|
self.disabled = disabled
|
||||||
if disabled then
|
if disabled then
|
||||||
self.frame:Disable()
|
self.frame:Disable()
|
||||||
|
self.text:SetTextColor(0.5, 0.5, 0.5)
|
||||||
else
|
else
|
||||||
self.frame:Enable()
|
self.frame:Enable()
|
||||||
|
if self.smallFont then
|
||||||
|
self.text:SetTextColor(GameFontNormalSmall:GetTextColor())
|
||||||
|
else
|
||||||
|
self.text:SetTextColor(GameFontNormal:GetTextColor())
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@@ -94,6 +101,7 @@ local methods = {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
["SetSmallFont"] = function(self, small)
|
["SetSmallFont"] = function(self, small)
|
||||||
|
self.smallFont = small
|
||||||
if small then
|
if small then
|
||||||
self.text:SetFontObject("GameFontNormalSmall")
|
self.text:SetFontObject("GameFontNormalSmall")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2500,8 +2500,6 @@ local function mergeOptions(mergedOptions, data, options, config, prepath, paren
|
|||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
|
||||||
nextInsert = #mergedOptions + 1
|
|
||||||
end
|
end
|
||||||
-- now we know at what point to add nextToMerge
|
-- now we know at what point to add nextToMerge
|
||||||
if shouldMerge then
|
if shouldMerge then
|
||||||
@@ -2557,6 +2555,7 @@ local function mergeOptions(mergedOptions, data, options, config, prepath, paren
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
nextInsert = #mergedOptions + 1
|
||||||
-- can't merge, should insert instead
|
-- can't merge, should insert instead
|
||||||
local newOption = CopyTable(nextToMerge)
|
local newOption = CopyTable(nextToMerge)
|
||||||
initReferences(newOption, data, options, i, config, path, parent)
|
initReferences(newOption, data, options, i, config, path, parent)
|
||||||
|
|||||||
@@ -4,19 +4,73 @@ local AddonName = ...
|
|||||||
local OptionsPrivate = select(2, ...)
|
local OptionsPrivate = select(2, ...)
|
||||||
|
|
||||||
OptionsPrivate.changelog = {
|
OptionsPrivate.changelog = {
|
||||||
versionString = '5.19.12',
|
versionString = '5.20.0',
|
||||||
dateString = '2025-06-17',
|
dateString = '2025-07-21',
|
||||||
fullChangeLogUrl = 'https://github.com/WeakAuras/WeakAuras2/compare/5.19.11...5.19.12',
|
fullChangeLogUrl = 'https://github.com/WeakAuras/WeakAuras2/compare/5.19.12...5.20.0',
|
||||||
highlightText = [==[
|
highlightText = [==[
|
||||||
- Bugfixes and performance improvements]==], commitText = [==[Stanzilla (2):
|
- **Added Undo & Redo Framework:** This lays the groundwork for undoing and redoing all aura edits. While the feature is still in development, you can test it now on URL edits. To enable it, type `/wa feature enable undo`.
|
||||||
|
- **New default formatters**: Setting `%unit` or `%guid` or `%p` will now auto select proper formatting options
|
||||||
|
- **Mists of Pandaria Updates:** Lots of Template updates and bug fixes to WA features.
|
||||||
|
- **Performance and Stability:** Addressed various bugs.]==], commitText = [==[InfusOnWoW (16):
|
||||||
|
|
||||||
- chore(toc): bump version for retail patch 11.5.7
|
- Update Atlas File List from wago.tools
|
||||||
|
- Update Discord List
|
||||||
|
- Mop templates: Druid, Monk, DK, Warlock and Paladin Update
|
||||||
|
- Don't announce destroyng an empty universe
|
||||||
|
- Update WeakAurasModelPaths from wago.tools
|
||||||
|
- Update Discord List
|
||||||
|
- Update Atlas File List from wago.tools
|
||||||
|
- Mists: Add Power/Stagger trigger
|
||||||
|
- Don't send watch trigger events while Options are open
|
||||||
|
- Text: Call UpdateProgress so that relative animations work
|
||||||
|
- Progress Settings: Adjust on moving/deleting triggers
|
||||||
|
- Range Trigger: Fix progress source setting
|
||||||
|
- Add Default Formatters for text replacements
|
||||||
|
- Fix locale on english realms
|
||||||
|
- Update Discord List
|
||||||
|
- Update Discord List
|
||||||
|
|
||||||
|
Stanzilla (3):
|
||||||
|
|
||||||
|
- Update WeakAurasModelPaths from wago.tools
|
||||||
|
- Update WeakAurasModelPaths from wago.tools
|
||||||
- Update WeakAurasModelPaths from wago.tools
|
- Update WeakAurasModelPaths from wago.tools
|
||||||
|
|
||||||
mrbuds (2):
|
emptyrivers (2):
|
||||||
|
|
||||||
- Health trigger: add absorb options on Mists
|
- always advance mergeOptions pointer to the end if no merge is found
|
||||||
- Don't trigger partyX unit event with the filter :group when in raid
|
- undo & redo support (#4863)
|
||||||
|
|
||||||
|
github-actions[bot] (2):
|
||||||
|
|
||||||
|
- Update Discord List (#5943)
|
||||||
|
- Update WeakAurasModelPaths from wago.tools (#5944)
|
||||||
|
|
||||||
|
mopstats (1):
|
||||||
|
|
||||||
|
- Add pet battle events for mop (#5938)
|
||||||
|
|
||||||
|
mrbuds (19):
|
||||||
|
|
||||||
|
- LibSpecialization tiny update
|
||||||
|
- LibSpecialization update
|
||||||
|
- Mists rogue templates
|
||||||
|
- Mists priest templates
|
||||||
|
- Load the Time Machine on Mists
|
||||||
|
- Mists mage templates
|
||||||
|
- Mists shaman templates
|
||||||
|
- Fix Mists talent known trigger
|
||||||
|
- Add missing shaman talents
|
||||||
|
- Fix Glyph data on first load
|
||||||
|
- Mists use a dedicated file for modelpaths
|
||||||
|
- Remove missing "Blizzard Alerts" textures on Mists
|
||||||
|
- timed format default set time_dynamic_threshold = 3
|
||||||
|
- default color for guid
|
||||||
|
- Fix formatter type test
|
||||||
|
- Allow default formatter to have sub formatter options
|
||||||
|
- Mists Template: Hunter
|
||||||
|
- Mists Template: Warrior
|
||||||
|
- Fix error with talent tree on 11.2.0 beta
|
||||||
|
|
||||||
]==]
|
]==]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,13 +69,16 @@ function OptionsPrivate.GetInformationOptions(data)
|
|||||||
return sameURL and commonURL or ""
|
return sameURL and commonURL or ""
|
||||||
end,
|
end,
|
||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
|
OptionsPrivate.Private.TimeMachine:StartTransaction()
|
||||||
for child in traverseForUrl(data) do
|
for child in traverseForUrl(data) do
|
||||||
child.url = v
|
OptionsPrivate.Private.TimeMachine:Append({
|
||||||
WeakAuras.Add(child)
|
uid = child.uid,
|
||||||
OptionsPrivate.ClearOptions(child.id)
|
actionType = "set",
|
||||||
|
path = {"url"},
|
||||||
|
payload = v
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
OptionsPrivate.Private.TimeMachine:Commit()
|
||||||
WeakAuras.ClearAndUpdateOptions(data.id)
|
|
||||||
end,
|
end,
|
||||||
desc = sameURL and "" or desc,
|
desc = sameURL and "" or desc,
|
||||||
order = order
|
order = order
|
||||||
|
|||||||
@@ -983,6 +983,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
||||||
L["Remove"] = "Entfernen"
|
L["Remove"] = "Entfernen"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
@@ -1155,7 +1157,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
L["Stack Info"] = "Stapelinfo"
|
L["Stack Info"] = "Stapelinfo"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
||||||
L["Stagger"] = "Taumeln"
|
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Standby"] = "Standby"
|
L["Standby"] = "Standby"
|
||||||
L["Star"] = "Stern"
|
L["Star"] = "Stern"
|
||||||
@@ -1302,6 +1303,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger Combination"] = "Trigger Combination"
|
L["Trigger Combination"] = "Trigger Combination"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
L["Ungroup"] = "Gruppierung aufheben"
|
L["Ungroup"] = "Gruppierung aufheben"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
if not WeakAuras.IsLibsOK() then return end
|
if not WeakAuras.IsLibsOK() then return end
|
||||||
|
|
||||||
if ((GAME_LOCALE or GetLocale()) ~= "enUS") or ((GAME_LOCALE or GetLocale()) ~= "enGB") then
|
if ((GAME_LOCALE or GetLocale()) ~= "enUS") and ((GAME_LOCALE or GetLocale()) ~= "enGB") then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -683,6 +683,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
L["Re-center X"] = "Re-center X"
|
L["Re-center X"] = "Re-center X"
|
||||||
L["Re-center Y"] = "Re-center Y"
|
L["Re-center Y"] = "Re-center Y"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
||||||
|
L["Redo"] = "Redo"
|
||||||
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
||||||
L["Remove"] = "Remove"
|
L["Remove"] = "Remove"
|
||||||
L["Remove All Sounds"] = "Remove All Sounds"
|
L["Remove All Sounds"] = "Remove All Sounds"
|
||||||
@@ -794,7 +795,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
L["Spell Selection Filters"] = "Spell Selection Filters"
|
L["Spell Selection Filters"] = "Spell Selection Filters"
|
||||||
L["Stack Info"] = "Stack Info"
|
L["Stack Info"] = "Stack Info"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
||||||
L["Stagger"] = "Stagger"
|
|
||||||
L["Standby"] = "Standby"
|
L["Standby"] = "Standby"
|
||||||
L["Star"] = "Star"
|
L["Star"] = "Star"
|
||||||
L["Start"] = "Start"
|
L["Start"] = "Start"
|
||||||
@@ -885,6 +885,7 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "Trigger %i: %s"
|
L["Trigger %i: %s"] = "Trigger %i: %s"
|
||||||
L["Trigger Combination"] = "Trigger Combination"
|
L["Trigger Combination"] = "Trigger Combination"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
||||||
|
L["Undo"] = "Undo"
|
||||||
L["Ungroup"] = "Ungroup"
|
L["Ungroup"] = "Ungroup"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
||||||
L["Unit Count"] = "Unit Count"
|
L["Unit Count"] = "Unit Count"
|
||||||
@@ -900,8 +901,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Url: %s"] = "Url: %s"
|
L["Url: %s"] = "Url: %s"
|
||||||
L["Use Display Info Id"] = "Use Display Info Id"
|
L["Use Display Info Id"] = "Use Display Info Id"
|
||||||
L["Use SetTransform"] = "Use SetTransform"
|
L["Use SetTransform"] = "Use SetTransform"
|
||||||
L["Used in auras:"] = "Used in auras:"
|
|
||||||
L["Used in Auras:"] = "Used in Auras:"
|
L["Used in Auras:"] = "Used in Auras:"
|
||||||
|
L["Used in auras:"] = "Used in auras:"
|
||||||
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
||||||
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."
|
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."
|
||||||
L["Value"] = "Value"
|
L["Value"] = "Value"
|
||||||
|
|||||||
@@ -143,8 +143,8 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "Modo de anclaje"
|
L["Anchor Mode"] = "Modo de anclaje"
|
||||||
L["Anchor Point"] = "Punto de anclaje"
|
L["Anchor Point"] = "Punto de anclaje"
|
||||||
L["Anchored To"] = "Anclado a"
|
L["Anchored To"] = "Anclado a"
|
||||||
L["and"] = "y"
|
|
||||||
L["And "] = "y"
|
L["And "] = "y"
|
||||||
|
L["and"] = "y"
|
||||||
L["and %s"] = "y %s"
|
L["and %s"] = "y %s"
|
||||||
L["and aligned left"] = "y alineado a la izquierda"
|
L["and aligned left"] = "y alineado a la izquierda"
|
||||||
L["and aligned right"] = "y alineado a la derecha"
|
L["and aligned right"] = "y alineado a la derecha"
|
||||||
@@ -642,6 +642,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Ocurrencia d
|
|||||||
L["Re-center X"] = "Re-centrar X"
|
L["Re-center X"] = "Re-centrar X"
|
||||||
L["Re-center Y"] = "Re-centrar Y"
|
L["Re-center Y"] = "Re-centrar Y"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "ACTIVADOR recíproco: # solicitudes serán ignoradas."
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "ACTIVADOR recíproco: # solicitudes serán ignoradas."
|
||||||
|
L["Redo"] = "Rehacer"
|
||||||
L["Regions of type \"%s\" are not supported."] = "Las regiones del tipo \"%s\" no son compatibles."
|
L["Regions of type \"%s\" are not supported."] = "Las regiones del tipo \"%s\" no son compatibles."
|
||||||
L["Remove"] = "Eliminar"
|
L["Remove"] = "Eliminar"
|
||||||
L["Remove All Sounds"] = "Eliminar todos los sonidos"
|
L["Remove All Sounds"] = "Eliminar todos los sonidos"
|
||||||
@@ -753,7 +754,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Ocurrencia d
|
|||||||
L["Spell Selection Filters"] = "Filtros de selección de hechizo"
|
L["Spell Selection Filters"] = "Filtros de selección de hechizo"
|
||||||
L["Stack Info"] = "Información de Acumulaciones"
|
L["Stack Info"] = "Información de Acumulaciones"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Acumulaciones - El número de acumulaciones de un aura (usualmente)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Acumulaciones - El número de acumulaciones de un aura (usualmente)"
|
||||||
L["Stagger"] = "Tambaleo"
|
|
||||||
L["Standby"] = "En espera"
|
L["Standby"] = "En espera"
|
||||||
L["Star"] = "Estrella"
|
L["Star"] = "Estrella"
|
||||||
L["Start"] = "Empezar"
|
L["Start"] = "Empezar"
|
||||||
@@ -843,6 +843,7 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "Activador %i:%s"
|
L["Trigger %i: %s"] = "Activador %i:%s"
|
||||||
L["Trigger Combination"] = "Combinación de activadores"
|
L["Trigger Combination"] = "Combinación de activadores"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Tipo 'select' para '%s' requiere un miembro de valores'"
|
L["Type 'select' for '%s' requires a values member'"] = "Tipo 'select' para '%s' requiere un miembro de valores'"
|
||||||
|
L["Undo"] = "Deshacer"
|
||||||
L["Ungroup"] = "Desagrupar"
|
L["Ungroup"] = "Desagrupar"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "La unidad %s no es una unidad válida para RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "La unidad %s no es una unidad válida para RegisterUnitEvent"
|
||||||
L["Unit Count"] = "Recuento de unidad"
|
L["Unit Count"] = "Recuento de unidad"
|
||||||
|
|||||||
@@ -642,6 +642,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Ocurrencia d
|
|||||||
L["Re-center X"] = "Re-centrar X"
|
L["Re-center X"] = "Re-centrar X"
|
||||||
L["Re-center Y"] = "Re-centrar Y"
|
L["Re-center Y"] = "Re-centrar Y"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "ACTIVADOR recíproco: # solicitudes serán ignoradas."
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "ACTIVADOR recíproco: # solicitudes serán ignoradas."
|
||||||
|
L["Redo"] = "Rehacer"
|
||||||
L["Regions of type \"%s\" are not supported."] = "Las regiones del tipo \"%s\" no son compatibles."
|
L["Regions of type \"%s\" are not supported."] = "Las regiones del tipo \"%s\" no son compatibles."
|
||||||
L["Remove"] = "Eliminar"
|
L["Remove"] = "Eliminar"
|
||||||
L["Remove All Sounds"] = "Eliminar todos los sonidos"
|
L["Remove All Sounds"] = "Eliminar todos los sonidos"
|
||||||
@@ -753,7 +754,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Ocurrencia d
|
|||||||
L["Spell Selection Filters"] = "Filtros de selección de hechizo"
|
L["Spell Selection Filters"] = "Filtros de selección de hechizo"
|
||||||
L["Stack Info"] = "Información de Acumulaciones"
|
L["Stack Info"] = "Información de Acumulaciones"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Acumulaciones - El número de acumulaciones de un aura (usualmente)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Acumulaciones - El número de acumulaciones de un aura (usualmente)"
|
||||||
L["Stagger"] = "Tambaleo"
|
|
||||||
L["Standby"] = "En espera"
|
L["Standby"] = "En espera"
|
||||||
L["Star"] = "Estrella"
|
L["Star"] = "Estrella"
|
||||||
L["Start"] = "Empezar"
|
L["Start"] = "Empezar"
|
||||||
@@ -843,6 +843,7 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "Activador %i:%s"
|
L["Trigger %i: %s"] = "Activador %i:%s"
|
||||||
L["Trigger Combination"] = "Combinación de activadores"
|
L["Trigger Combination"] = "Combinación de activadores"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Tipo 'select' para '%s' requiere un miembro de valores'"
|
L["Type 'select' for '%s' requires a values member'"] = "Tipo 'select' para '%s' requiere un miembro de valores'"
|
||||||
|
L["Undo"] = "Deshacer"
|
||||||
L["Ungroup"] = "Desagrupar"
|
L["Ungroup"] = "Desagrupar"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "La unidad %s no es una unidad válida para RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "La unidad %s no es una unidad válida para RegisterUnitEvent"
|
||||||
L["Unit Count"] = "Recuento de unidad"
|
L["Unit Count"] = "Recuento de unidad"
|
||||||
|
|||||||
@@ -849,6 +849,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
L["Re-center Y"] = "Rec-entrer Y"
|
L["Re-center Y"] = "Rec-entrer Y"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
L["Regions of type \"%s\" are not supported."] = "Les régions de type \"%s\" ne sont pas prises en charge."
|
L["Regions of type \"%s\" are not supported."] = "Les régions de type \"%s\" ne sont pas prises en charge."
|
||||||
L["Remove"] = "Retirer"
|
L["Remove"] = "Retirer"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
@@ -1006,7 +1008,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
L["Stack Info"] = "Info de Piles"
|
L["Stack Info"] = "Info de Piles"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
||||||
L["Stagger"] = "Report"
|
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Standby"] = "Standby"
|
L["Standby"] = "Standby"
|
||||||
L["Star"] = "Étoile"
|
L["Star"] = "Étoile"
|
||||||
@@ -1144,6 +1145,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger Combination"] = "Trigger Combination"
|
L["Trigger Combination"] = "Trigger Combination"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
L["Ungroup"] = "Dissocier"
|
L["Ungroup"] = "Dissocier"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
||||||
@@ -1166,8 +1169,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Url: %s"] = "Url: %s"
|
L["Url: %s"] = "Url: %s"
|
||||||
L["Use Display Info Id"] = "Utiliser les informations d'identifiant de l'affichage"
|
L["Use Display Info Id"] = "Utiliser les informations d'identifiant de l'affichage"
|
||||||
L["Use SetTransform"] = "Utiliser SetTransform"
|
L["Use SetTransform"] = "Utiliser SetTransform"
|
||||||
L["Used in auras:"] = "Utilisé dans les auras:"
|
|
||||||
L["Used in Auras:"] = "Utilisé(e) dans les Auras:"
|
L["Used in Auras:"] = "Utilisé(e) dans les Auras:"
|
||||||
|
L["Used in auras:"] = "Utilisé dans les auras:"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
|||||||
@@ -1039,6 +1039,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Remove"] = "Remove"
|
L["Remove"] = "Remove"
|
||||||
@@ -1261,8 +1263,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger"] = "Stagger"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Standby"] = "Standby"
|
L["Standby"] = "Standby"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Star"] = "Star"
|
L["Star"] = "Star"
|
||||||
@@ -1437,6 +1437,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Ungroup"] = "Ungroup"
|
L["Ungroup"] = "Ungroup"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
||||||
@@ -1467,10 +1469,10 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Use SetTransform"] = "Use SetTransform"
|
L["Use SetTransform"] = "Use SetTransform"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Used in auras:"] = "Used in auras:"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Used in Auras:"] = "Used in Auras:"
|
L["Used in Auras:"] = "Used in Auras:"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Used in auras:"] = "Used in auras:"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
L["Uses Texture Coordinates to rotate the texture."] = "Uses Texture Coordinates to rotate the texture."
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."
|
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ local L = WeakAuras.L
|
|||||||
L["%s - Main"] = "%s - 메인"
|
L["%s - Main"] = "%s - 메인"
|
||||||
L["%s - OnLoad"] = "%s - 활성화 시"
|
L["%s - OnLoad"] = "%s - 활성화 시"
|
||||||
L["%s - OnUnload"] = "%s - 비활성화 시"
|
L["%s - OnUnload"] = "%s - 비활성화 시"
|
||||||
L["%s - Option #%i has the key %s. Please choose a different option key."] = "%s - #%i 옵션이 %s 키를 갖고 있습니다. 다른 옵션 키를 산택해주세요."
|
L["%s - Option #%i has the key %s. Please choose a different option key."] = "%s - #%i 옵션이 %s 키를 사용중입니다. 다른 옵션 키를 사용하세요."
|
||||||
L["%s - Rotate Animation"] = "%s - 애니메이션 회전"
|
L["%s - Rotate Animation"] = "%s - 애니메이션 회전"
|
||||||
L["%s - Scale Animation"] = "%s - 애니메이션 크기"
|
L["%s - Scale Animation"] = "%s - 애니메이션 크기"
|
||||||
L["%s - Start"] = "%s - 시작"
|
L["%s - Start"] = "%s - 시작"
|
||||||
@@ -158,8 +158,8 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "고정 모드"
|
L["Anchor Mode"] = "고정 모드"
|
||||||
L["Anchor Point"] = "고정 지점"
|
L["Anchor Point"] = "고정 지점"
|
||||||
L["Anchored To"] = "고정 위치:"
|
L["Anchored To"] = "고정 위치:"
|
||||||
L["and"] = "그리고"
|
|
||||||
L["And "] = "And"
|
L["And "] = "And"
|
||||||
|
L["and"] = "그리고"
|
||||||
L["and %s"] = "and %s"
|
L["and %s"] = "and %s"
|
||||||
L["and aligned left"] = ", 왼쪽 정렬"
|
L["and aligned left"] = ", 왼쪽 정렬"
|
||||||
L["and aligned right"] = ", 오른쪽 정렬"
|
L["and aligned right"] = ", 오른쪽 정렬"
|
||||||
@@ -214,7 +214,7 @@ Off Screen]=] ] = "위크오라가 화면 밖에 있습니다"
|
|||||||
L["Blue Rune"] = "푸른색 룬"
|
L["Blue Rune"] = "푸른색 룬"
|
||||||
L["Blue Sparkle Orb"] = "푸른 불꽃 구슬"
|
L["Blue Sparkle Orb"] = "푸른 불꽃 구슬"
|
||||||
L["Border %s"] = "테두리 %s"
|
L["Border %s"] = "테두리 %s"
|
||||||
L["Border Anchor"] = "테두리 고정"
|
L["Border Anchor"] = "테두리 고정점"
|
||||||
L["Border Color"] = "테두리색"
|
L["Border Color"] = "테두리색"
|
||||||
L["Border in Front"] = "앞쪽 테두리"
|
L["Border in Front"] = "앞쪽 테두리"
|
||||||
L["Border Inset"] = "테두리 삽입"
|
L["Border Inset"] = "테두리 삽입"
|
||||||
@@ -690,6 +690,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[이벤트
|
|||||||
L["Re-center X"] = "내부 X 좌표"
|
L["Re-center X"] = "내부 X 좌표"
|
||||||
L["Re-center Y"] = "내부 Y 좌표"
|
L["Re-center Y"] = "내부 Y 좌표"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "서로 상응하는 활성 조건 # 요청은 무시됩니다!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "서로 상응하는 활성 조건 # 요청은 무시됩니다!"
|
||||||
|
L["Redo"] = "다시 실행"
|
||||||
L["Regions of type \"%s\" are not supported."] = "\"%s\" 종류의 구역(Region)은 지원하지 않습니다."
|
L["Regions of type \"%s\" are not supported."] = "\"%s\" 종류의 구역(Region)은 지원하지 않습니다."
|
||||||
L["Remove"] = "제거"
|
L["Remove"] = "제거"
|
||||||
L["Remove All Sounds"] = "모든 소리 설정 제거"
|
L["Remove All Sounds"] = "모든 소리 설정 제거"
|
||||||
@@ -702,7 +703,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[이벤트
|
|||||||
L["Report bugs on our issue tracker."] = "이슈 트래커에 버그를 제보해 주세요."
|
L["Report bugs on our issue tracker."] = "이슈 트래커에 버그를 제보해 주세요."
|
||||||
L["Require unit from trigger"] = "활성 조건에서 유닛 필요"
|
L["Require unit from trigger"] = "활성 조건에서 유닛 필요"
|
||||||
L["Required for Activation"] = "활성화 필수 조건"
|
L["Required for Activation"] = "활성화 필수 조건"
|
||||||
L["Requires LibSpecialization, that is e.g. a up-to date WeakAuras version"] = "LibSpecialization이 필요합니다. 예를 들면 최신 WeakAuras 버전으로 업데이트하면 됩니다"
|
L["Requires LibSpecialization, that is e.g. a up-to date WeakAuras version"] = "LibSpecialization이 필요하며, WeakAuras 버전을 최신으로 유지하면 됩니다."
|
||||||
L["Reset all options to their default values."] = "모든 옵션을 기본값으로 초기화합니다."
|
L["Reset all options to their default values."] = "모든 옵션을 기본값으로 초기화합니다."
|
||||||
L["Reset Entry"] = "항목 초기화"
|
L["Reset Entry"] = "항목 초기화"
|
||||||
L["Reset to Defaults"] = "기본값으로 재설정"
|
L["Reset to Defaults"] = "기본값으로 재설정"
|
||||||
@@ -749,7 +750,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[이벤트
|
|||||||
L["Show Icon"] = "아이콘 표시"
|
L["Show Icon"] = "아이콘 표시"
|
||||||
L["Show If Unit Does Not Exist"] = "유닛이 없으면 표시"
|
L["Show If Unit Does Not Exist"] = "유닛이 없으면 표시"
|
||||||
L["Show Linear Texture"] = "직진 텍스처 표시"
|
L["Show Linear Texture"] = "직진 텍스처 표시"
|
||||||
L["Show Matches for"] = "표시할 대상"
|
L["Show Matches for"] = "표시 조건"
|
||||||
L["Show Matches for Units"] = "유닛별로 일치하는 조건 표시"
|
L["Show Matches for Units"] = "유닛별로 일치하는 조건 표시"
|
||||||
L["Show Model"] = "모델 표시"
|
L["Show Model"] = "모델 표시"
|
||||||
L["Show model of unit "] = "유닛의 모델 표시"
|
L["Show model of unit "] = "유닛의 모델 표시"
|
||||||
@@ -801,7 +802,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[이벤트
|
|||||||
L["Spell Selection Filters"] = "주문 선정 필터"
|
L["Spell Selection Filters"] = "주문 선정 필터"
|
||||||
L["Stack Info"] = "중첩 정보"
|
L["Stack Info"] = "중첩 정보"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "중첩 - 오라의 중첩 갯수입니다 (일반적으로)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "중첩 - 오라의 중첩 갯수입니다 (일반적으로)"
|
||||||
L["Stagger"] = "계단식 배치"
|
|
||||||
L["Standby"] = "대기 중"
|
L["Standby"] = "대기 중"
|
||||||
L["Star"] = "별"
|
L["Star"] = "별"
|
||||||
L["Start"] = "시작"
|
L["Start"] = "시작"
|
||||||
@@ -889,6 +889,7 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "활성 조건 %i: %s"
|
L["Trigger %i: %s"] = "활성 조건 %i: %s"
|
||||||
L["Trigger Combination"] = "활성 조건 조합"
|
L["Trigger Combination"] = "활성 조건 조합"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "'%s'에서 'select' 유형은 값들의 구성원을 필요로 합니다"
|
L["Type 'select' for '%s' requires a values member'"] = "'%s'에서 'select' 유형은 값들의 구성원을 필요로 합니다"
|
||||||
|
L["Undo"] = "실행 취소"
|
||||||
L["Ungroup"] = "그룹 해제"
|
L["Ungroup"] = "그룹 해제"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s 유닛은 RegisterUnitEvent에 적합하지 않습니다."
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s 유닛은 RegisterUnitEvent에 적합하지 않습니다."
|
||||||
L["Unit Count"] = "유닛 수"
|
L["Unit Count"] = "유닛 수"
|
||||||
|
|||||||
@@ -224,9 +224,9 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "Anchor Mode"
|
L["Anchor Mode"] = "Anchor Mode"
|
||||||
L["Anchor Point"] = "Ponto da âncora"
|
L["Anchor Point"] = "Ponto da âncora"
|
||||||
L["Anchored To"] = "Ancorado a"
|
L["Anchored To"] = "Ancorado a"
|
||||||
|
L["And "] = "E"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["and"] = "and"
|
L["and"] = "and"
|
||||||
L["And "] = "E"
|
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["and %s"] = "and %s"
|
L["and %s"] = "and %s"
|
||||||
L["and aligned left"] = "e alinhado à esquerda"
|
L["and aligned left"] = "e alinhado à esquerda"
|
||||||
@@ -1083,6 +1083,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Reciprocal TRIGGER:# requests will be ignored!"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
L["Regions of type \"%s\" are not supported."] = "Regions of type \"%s\" are not supported."
|
||||||
L["Remove"] = "Remover"
|
L["Remove"] = "Remover"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
@@ -1273,8 +1275,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=]
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Stacks - The number of stacks of an aura (usually)"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Stagger"] = "Stagger"
|
|
||||||
--[[Translation missing --]]
|
|
||||||
L["Standby"] = "Standby"
|
L["Standby"] = "Standby"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Star"] = "Star"
|
L["Star"] = "Star"
|
||||||
@@ -1440,6 +1440,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
L["Type 'select' for '%s' requires a values member'"] = "Type 'select' for '%s' requires a values member'"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
|
--[[Translation missing --]]
|
||||||
L["Ungroup"] = "Ungroup"
|
L["Ungroup"] = "Ungroup"
|
||||||
--[[Translation missing --]]
|
--[[Translation missing --]]
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "Unit %s is not a valid unit for RegisterUnitEvent"
|
||||||
|
|||||||
@@ -148,8 +148,8 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "Режим крепления"
|
L["Anchor Mode"] = "Режим крепления"
|
||||||
L["Anchor Point"] = "Точка крепления"
|
L["Anchor Point"] = "Точка крепления"
|
||||||
L["Anchored To"] = "Прикрепить к"
|
L["Anchored To"] = "Прикрепить к"
|
||||||
L["and"] = "и"
|
|
||||||
L["And "] = "И "
|
L["And "] = "И "
|
||||||
|
L["and"] = "и"
|
||||||
L["and %s"] = "и %s"
|
L["and %s"] = "и %s"
|
||||||
L["and aligned left"] = "Выранивание по левому краю;"
|
L["and aligned left"] = "Выранивание по левому краю;"
|
||||||
L["and aligned right"] = "Выранивание по правому краю;"
|
L["and aligned right"] = "Выранивание по правому краю;"
|
||||||
@@ -671,6 +671,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Время
|
|||||||
L["Re-center X"] = "Рецентрировать по X"
|
L["Re-center X"] = "Рецентрировать по X"
|
||||||
L["Re-center Y"] = "Рецентрировать по Y"
|
L["Re-center Y"] = "Рецентрировать по Y"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Ответный TRIGGER:# запрос будет проигнорирован!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "Ответный TRIGGER:# запрос будет проигнорирован!"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
L["Regions of type \"%s\" are not supported."] = "Регионы типа \"%s\" не поддерживаются."
|
L["Regions of type \"%s\" are not supported."] = "Регионы типа \"%s\" не поддерживаются."
|
||||||
L["Remove"] = "Удалить"
|
L["Remove"] = "Удалить"
|
||||||
L["Remove All Sounds"] = "Удалить все звуки"
|
L["Remove All Sounds"] = "Удалить все звуки"
|
||||||
@@ -789,7 +791,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = "Время
|
|||||||
L["Spell Selection Filters"] = "Фильтры выбора заклинания"
|
L["Spell Selection Filters"] = "Фильтры выбора заклинания"
|
||||||
L["Stack Info"] = "Информация о стаках"
|
L["Stack Info"] = "Информация о стаках"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "Стаки - количество стаков ауры (обычно)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "Стаки - количество стаков ауры (обычно)"
|
||||||
L["Stagger"] = "Выступ (смещение уровня)"
|
|
||||||
L["Standby"] = "Ожидает"
|
L["Standby"] = "Ожидает"
|
||||||
L["Star"] = "Звезда"
|
L["Star"] = "Звезда"
|
||||||
L["Start"] = "Начальная"
|
L["Start"] = "Начальная"
|
||||||
@@ -884,6 +885,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "Триггер %i: %s"
|
L["Trigger %i: %s"] = "Триггер %i: %s"
|
||||||
L["Trigger Combination"] = "Комбинация триггеров"
|
L["Trigger Combination"] = "Комбинация триггеров"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "Для переменной %s типа select необходимо свойство values."
|
L["Type 'select' for '%s' requires a values member'"] = "Для переменной %s типа select необходимо свойство values."
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
L["Ungroup"] = "Разгруппировать"
|
L["Ungroup"] = "Разгруппировать"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s не является допустимой единицей для метода RegisterUnitEvent"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s не является допустимой единицей для метода RegisterUnitEvent"
|
||||||
L["Unit Count"] = "Количество единиц"
|
L["Unit Count"] = "Количество единиц"
|
||||||
@@ -900,8 +903,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Url: %s"] = "URL-адрес: %s"
|
L["Url: %s"] = "URL-адрес: %s"
|
||||||
L["Use Display Info Id"] = "Использовать ID отображения существа"
|
L["Use Display Info Id"] = "Использовать ID отображения существа"
|
||||||
L["Use SetTransform"] = "Использовать ф. SetTransform"
|
L["Use SetTransform"] = "Использовать ф. SetTransform"
|
||||||
L["Used in auras:"] = "Использовано в индикациях:"
|
|
||||||
L["Used in Auras:"] = "Использовано в индикациях:"
|
L["Used in Auras:"] = "Использовано в индикациях:"
|
||||||
|
L["Used in auras:"] = "Использовано в индикациях:"
|
||||||
L["Uses Texture Coordinates to rotate the texture."] = "Использует координаты текстуры для её вращения."
|
L["Uses Texture Coordinates to rotate the texture."] = "Использует координаты текстуры для её вращения."
|
||||||
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Использует функцию UnitIsVisible для проверки, может ли клиент игры видеть указанную единицу (загружен ли объект). Не определяет, находится ли единица в поле зрения. Расстояние составляет 100 метров. Опрос происходит каждую секунду."
|
L["Uses UnitIsVisible() to check if game client has loaded a object for this unit. This distance is around 100 yards. This is polled every second."] = "Использует функцию UnitIsVisible для проверки, может ли клиент игры видеть указанную единицу (загружен ли объект). Не определяет, находится ли единица в поле зрения. Расстояние составляет 100 метров. Опрос происходит каждую секунду."
|
||||||
L["Value"] = "Значение"
|
L["Value"] = "Значение"
|
||||||
|
|||||||
@@ -151,8 +151,8 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "定位模式"
|
L["Anchor Mode"] = "定位模式"
|
||||||
L["Anchor Point"] = "锚点指向"
|
L["Anchor Point"] = "锚点指向"
|
||||||
L["Anchored To"] = "对齐到"
|
L["Anchored To"] = "对齐到"
|
||||||
L["and"] = "和"
|
|
||||||
L["And "] = "和"
|
L["And "] = "和"
|
||||||
|
L["and"] = "和"
|
||||||
L["and %s"] = "并且 %s"
|
L["and %s"] = "并且 %s"
|
||||||
L["and aligned left"] = "并且左对齐"
|
L["and aligned left"] = "并且左对齐"
|
||||||
L["and aligned right"] = "并且右对齐"
|
L["and aligned right"] = "并且右对齐"
|
||||||
@@ -673,6 +673,8 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[事件发
|
|||||||
L["Re-center X"] = "到中心 X 偏移"
|
L["Re-center X"] = "到中心 X 偏移"
|
||||||
L["Re-center Y"] = "到中心 Y 偏移"
|
L["Re-center Y"] = "到中心 Y 偏移"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "相互的TRIGGER:#请求将被忽略!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "相互的TRIGGER:#请求将被忽略!"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Redo"] = "Redo"
|
||||||
L["Regions of type \"%s\" are not supported."] = "%s 区域类型不被支持。"
|
L["Regions of type \"%s\" are not supported."] = "%s 区域类型不被支持。"
|
||||||
L["Remove"] = "移除"
|
L["Remove"] = "移除"
|
||||||
L["Remove All Sounds"] = "移除所有音效"
|
L["Remove All Sounds"] = "移除所有音效"
|
||||||
@@ -784,7 +786,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[事件发
|
|||||||
L["Spell Selection Filters"] = "法术选择过滤器"
|
L["Spell Selection Filters"] = "法术选择过滤器"
|
||||||
L["Stack Info"] = "层数信息"
|
L["Stack Info"] = "层数信息"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "堆叠 - 光环的堆叠层数(通常是)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "堆叠 - 光环的堆叠层数(通常是)"
|
||||||
L["Stagger"] = "交错"
|
|
||||||
L["Standby"] = "已就绪"
|
L["Standby"] = "已就绪"
|
||||||
L["Star"] = "星星"
|
L["Star"] = "星星"
|
||||||
L["Start"] = "开始"
|
L["Start"] = "开始"
|
||||||
@@ -873,6 +874,8 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "触发器%i:%s"
|
L["Trigger %i: %s"] = "触发器%i:%s"
|
||||||
L["Trigger Combination"] = "触发器组合"
|
L["Trigger Combination"] = "触发器组合"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "'%s'的类型'select'需要至少一个'values'成员。"
|
L["Type 'select' for '%s' requires a values member'"] = "'%s'的类型'select'需要至少一个'values'成员。"
|
||||||
|
--[[Translation missing --]]
|
||||||
|
L["Undo"] = "Undo"
|
||||||
L["Ungroup"] = "不分组"
|
L["Ungroup"] = "不分组"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "单位 %s 并不是 RegisterUnitEvent 的有效单位"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "单位 %s 并不是 RegisterUnitEvent 的有效单位"
|
||||||
L["Unit Count"] = "单位计数"
|
L["Unit Count"] = "单位计数"
|
||||||
|
|||||||
@@ -143,8 +143,8 @@ Enable this setting if you want this timer to be hidden, or when using a WeakAur
|
|||||||
L["Anchor Mode"] = "定位模式"
|
L["Anchor Mode"] = "定位模式"
|
||||||
L["Anchor Point"] = "對齊點"
|
L["Anchor Point"] = "對齊點"
|
||||||
L["Anchored To"] = "對齊到"
|
L["Anchored To"] = "對齊到"
|
||||||
L["and"] = "和"
|
|
||||||
L["And "] = "和 "
|
L["And "] = "和 "
|
||||||
|
L["and"] = "和"
|
||||||
L["and %s"] = "以及 %s"
|
L["and %s"] = "以及 %s"
|
||||||
L["and aligned left"] = "和靠左對齊"
|
L["and aligned left"] = "和靠左對齊"
|
||||||
L["and aligned right"] = "和靠右對齊"
|
L["and aligned right"] = "和靠右對齊"
|
||||||
@@ -663,6 +663,7 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[事件發
|
|||||||
L["Re-center X"] = "重新水平置中"
|
L["Re-center X"] = "重新水平置中"
|
||||||
L["Re-center Y"] = "重新垂直置中"
|
L["Re-center Y"] = "重新垂直置中"
|
||||||
L["Reciprocal TRIGGER:# requests will be ignored!"] = "對應的觸發器:# 請求將被忽略!"
|
L["Reciprocal TRIGGER:# requests will be ignored!"] = "對應的觸發器:# 請求將被忽略!"
|
||||||
|
L["Redo"] = "重做"
|
||||||
L["Regions of type \"%s\" are not supported."] = "不支援區域類型 \"%s\"。"
|
L["Regions of type \"%s\" are not supported."] = "不支援區域類型 \"%s\"。"
|
||||||
L["Remove"] = "移除"
|
L["Remove"] = "移除"
|
||||||
L["Remove All Sounds"] = "移除所有音效"
|
L["Remove All Sounds"] = "移除所有音效"
|
||||||
@@ -774,7 +775,6 @@ every 3 events starting from 2nd and ending at 11th: 2-11/3]=] ] = [=[事件發
|
|||||||
L["Spell Selection Filters"] = "法術選擇過濾器"
|
L["Spell Selection Filters"] = "法術選擇過濾器"
|
||||||
L["Stack Info"] = "堆疊層數資訊"
|
L["Stack Info"] = "堆疊層數資訊"
|
||||||
L["Stacks - The number of stacks of an aura (usually)"] = "層數 - 光環的疊加數(通常)"
|
L["Stacks - The number of stacks of an aura (usually)"] = "層數 - 光環的疊加數(通常)"
|
||||||
L["Stagger"] = "醉仙緩勁"
|
|
||||||
L["Standby"] = "準備就緒"
|
L["Standby"] = "準備就緒"
|
||||||
L["Star"] = "星星"
|
L["Star"] = "星星"
|
||||||
L["Start"] = "開始"
|
L["Start"] = "開始"
|
||||||
@@ -863,6 +863,7 @@ Upgrade your version of WeakAuras or wait for next release before installing thi
|
|||||||
L["Trigger %i: %s"] = "觸發器 %i: %s"
|
L["Trigger %i: %s"] = "觸發器 %i: %s"
|
||||||
L["Trigger Combination"] = "觸發組合"
|
L["Trigger Combination"] = "觸發組合"
|
||||||
L["Type 'select' for '%s' requires a values member'"] = "'%s' 的類型 'select' 需要 values member"
|
L["Type 'select' for '%s' requires a values member'"] = "'%s' 的類型 'select' 需要 values member"
|
||||||
|
L["Undo"] = "復原"
|
||||||
L["Ungroup"] = "解散群組"
|
L["Ungroup"] = "解散群組"
|
||||||
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s 不是 RegisterUnitEvent 的有效單位"
|
L["Unit %s is not a valid unit for RegisterUnitEvent"] = "%s 不是 RegisterUnitEvent 的有效單位"
|
||||||
L["Unit Count"] = "單位數量"
|
L["Unit Count"] = "單位數量"
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ local pairs, type, error = pairs, type, error
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
|
|
||||||
-- WoW APIs
|
-- WoW APIs
|
||||||
local GetScreenWidth, GetScreenHeight, CreateFrame, GetAddOnInfo, UnitName
|
local GetScreenWidth, GetScreenHeight, CreateFrame, GetAddOnInfo
|
||||||
= GetScreenWidth, GetScreenHeight, CreateFrame, GetAddOnInfo, UnitName
|
= GetScreenWidth, GetScreenHeight, CreateFrame, GetAddOnInfo
|
||||||
|
|
||||||
local AceGUI = LibStub("AceGUI-3.0")
|
local AceGUI = LibStub("AceGUI-3.0")
|
||||||
local AceConfigDialog = LibStub("AceConfigDialog-3.0")
|
local AceConfigDialog = LibStub("AceConfigDialog-3.0")
|
||||||
@@ -88,6 +88,8 @@ local defaultHeight = 665
|
|||||||
local minWidth = 750
|
local minWidth = 750
|
||||||
local minHeight = 240
|
local minHeight = 240
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function OptionsPrivate.CreateFrame()
|
function OptionsPrivate.CreateFrame()
|
||||||
CreateFrame("Frame", "WeakAuras_DropDownMenu", nil, "UIDropDownMenuTemplate")
|
CreateFrame("Frame", "WeakAuras_DropDownMenu", nil, "UIDropDownMenuTemplate")
|
||||||
local frame
|
local frame
|
||||||
@@ -339,7 +341,7 @@ function OptionsPrivate.CreateFrame()
|
|||||||
tipFrame:Hide()
|
tipFrame:Hide()
|
||||||
frame.tipFrame = tipFrame
|
frame.tipFrame = tipFrame
|
||||||
|
|
||||||
local tipPopup = CreateFrame("Frame", "WeakAuras_TipPopup", frame)
|
local tipPopup = CreateFrame("Frame", nil, frame)
|
||||||
tipPopup:SetFrameStrata("FULLSCREEN")
|
tipPopup:SetFrameStrata("FULLSCREEN")
|
||||||
tipPopup:SetBackdrop({
|
tipPopup:SetBackdrop({
|
||||||
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
||||||
@@ -452,13 +454,13 @@ function OptionsPrivate.CreateFrame()
|
|||||||
local lineLength = 0
|
local lineLength = 0
|
||||||
local currentLine = {}
|
local currentLine = {}
|
||||||
for _, patreon in ipairs(list) do
|
for _, patreon in ipairs(list) do
|
||||||
if lineLength + #patreon + 2 * #currentLine > 130 then
|
if lineLength + #patreon + 2 > 130 then
|
||||||
tinsert(patreonLines, table.concat(currentLine, ", ") .. ", ")
|
tinsert(patreonLines, table.concat(currentLine, ", ") .. ", ")
|
||||||
currentLine = {}
|
currentLine = {}
|
||||||
tinsert(currentLine, patreon)
|
tinsert(currentLine, patreon)
|
||||||
lineLength = #patreon
|
lineLength = #patreon + 2
|
||||||
else
|
else
|
||||||
lineLength = lineLength + #patreon
|
lineLength = lineLength + #patreon + 2
|
||||||
tinsert(currentLine, patreon)
|
tinsert(currentLine, patreon)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -485,7 +487,6 @@ function OptionsPrivate.CreateFrame()
|
|||||||
local thanksListCJ = lineWrapDiscordList(OptionsPrivate.Private.DiscordListCJ)
|
local thanksListCJ = lineWrapDiscordList(OptionsPrivate.Private.DiscordListCJ)
|
||||||
local thanksListK = lineWrapDiscordList(OptionsPrivate.Private.DiscordListK)
|
local thanksListK = lineWrapDiscordList(OptionsPrivate.Private.DiscordListK)
|
||||||
|
|
||||||
|
|
||||||
local discordButton = addFooter(L["Discord"], [[Interface\AddOns\WeakAuras\Media\Textures\discord.tga]], "https://discord.gg/UXSc7nt",
|
local discordButton = addFooter(L["Discord"], [[Interface\AddOns\WeakAuras\Media\Textures\discord.tga]], "https://discord.gg/UXSc7nt",
|
||||||
L["Chat with WeakAuras experts on our Discord server."])
|
L["Chat with WeakAuras experts on our Discord server."])
|
||||||
discordButton:SetParent(tipFrame)
|
discordButton:SetParent(tipFrame)
|
||||||
@@ -652,7 +653,85 @@ function OptionsPrivate.CreateFrame()
|
|||||||
-- Toolbar
|
-- Toolbar
|
||||||
local toolbarContainer = CreateFrame("Frame", nil, buttonsContainer.frame)
|
local toolbarContainer = CreateFrame("Frame", nil, buttonsContainer.frame)
|
||||||
toolbarContainer:SetParent(buttonsContainer.frame)
|
toolbarContainer:SetParent(buttonsContainer.frame)
|
||||||
toolbarContainer:Hide()
|
-- toolbarContainer:Hide()
|
||||||
|
toolbarContainer:SetPoint("TOPLEFT", buttonsContainer.frame, "TOPLEFT", 30, 30)
|
||||||
|
toolbarContainer:SetPoint("BOTTOMRIGHT", buttonsContainer.frame, "TOPRIGHT", 0, 0)
|
||||||
|
|
||||||
|
local undo = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
|
undo:SetText(L["Undo"])
|
||||||
|
undo:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\upleft")
|
||||||
|
undo:SetCallback("OnClick", function()
|
||||||
|
OptionsPrivate.Private.TimeMachine:StepBackward()
|
||||||
|
frame:FillOptions()
|
||||||
|
end)
|
||||||
|
undo.frame:SetParent(toolbarContainer)
|
||||||
|
if OptionsPrivate.Private.Features:Enabled("undo") then
|
||||||
|
undo.frame:Show()
|
||||||
|
else
|
||||||
|
undo.frame:Hide()
|
||||||
|
end
|
||||||
|
undo:SetPoint("LEFT")
|
||||||
|
|
||||||
|
local redo = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
|
redo:SetText(L["Redo"])
|
||||||
|
redo:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\upright")
|
||||||
|
redo:SetCallback("OnClick", function()
|
||||||
|
OptionsPrivate.Private.TimeMachine:StepForward()
|
||||||
|
frame:FillOptions()
|
||||||
|
end)
|
||||||
|
redo.frame:SetParent(toolbarContainer)
|
||||||
|
if OptionsPrivate.Private.Features:Enabled("undo") then
|
||||||
|
redo.frame:Show()
|
||||||
|
else
|
||||||
|
redo.frame:Hide()
|
||||||
|
end
|
||||||
|
redo:SetPoint("LEFT", undo.frame, "RIGHT", 10, 0)
|
||||||
|
if OptionsPrivate.Private.TimeMachine:DescribeNext() ~= nil then
|
||||||
|
redo.frame:Enable()
|
||||||
|
else
|
||||||
|
redo.frame:Disable()
|
||||||
|
end
|
||||||
|
OptionsPrivate.Private.Features:Subscribe("undo",
|
||||||
|
function()
|
||||||
|
undo.frame:Show()
|
||||||
|
redo.frame:Show()
|
||||||
|
end,
|
||||||
|
function()
|
||||||
|
undo.frame:Hide()
|
||||||
|
redo.frame:Hide()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local tmControls = {
|
||||||
|
undo = undo,
|
||||||
|
redo = redo,
|
||||||
|
}
|
||||||
|
|
||||||
|
function tmControls:Step()
|
||||||
|
-- slightly annoying workaround
|
||||||
|
-- Buttons behave in a strange way if they are disabled inside of the OnClick handler
|
||||||
|
-- where the pushed texture refuses to vanish until the button is enabled & user clicks it again
|
||||||
|
-- so, just disable the button after next frame draw, so it's imperceptible to the user but we're not in the OnClick handler
|
||||||
|
WeakAuras.timer:ScheduleTimer(function()
|
||||||
|
self.undo:SetDisabled(OptionsPrivate.Private.TimeMachine:DescribePrevious() == nil)
|
||||||
|
self.redo:SetDisabled(OptionsPrivate.Private.TimeMachine:DescribeNext() == nil)
|
||||||
|
end, 0)
|
||||||
|
end
|
||||||
|
tmControls:Step()
|
||||||
|
OptionsPrivate.Private.TimeMachine.sub:AddSubscriber("Step", tmControls)
|
||||||
|
|
||||||
|
|
||||||
|
local newButton = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
|
newButton:SetText(L["New Aura"])
|
||||||
|
newButton:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\newaura")
|
||||||
|
newButton.frame:SetParent(toolbarContainer)
|
||||||
|
newButton.frame:Show()
|
||||||
|
newButton:SetPoint("LEFT", redo.frame, "RIGHT", 10, 0)
|
||||||
|
frame.toolbarContainer = toolbarContainer
|
||||||
|
|
||||||
|
newButton:SetCallback("OnClick", function()
|
||||||
|
frame:NewAura()
|
||||||
|
end)
|
||||||
|
|
||||||
local importButton = AceGUI:Create("WeakAurasToolbarButton")
|
local importButton = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
importButton:SetText(L["Import"])
|
importButton:SetText(L["Import"])
|
||||||
@@ -660,20 +739,28 @@ function OptionsPrivate.CreateFrame()
|
|||||||
importButton:SetCallback("OnClick", OptionsPrivate.ImportFromString)
|
importButton:SetCallback("OnClick", OptionsPrivate.ImportFromString)
|
||||||
importButton.frame:SetParent(toolbarContainer)
|
importButton.frame:SetParent(toolbarContainer)
|
||||||
importButton.frame:Show()
|
importButton.frame:Show()
|
||||||
importButton:SetPoint("RIGHT", filterInput, "RIGHT")
|
importButton:SetPoint("LEFT", newButton.frame, "RIGHT", 10, 0)
|
||||||
importButton:SetPoint("BOTTOM", frame, "TOP", 0, -55)
|
|
||||||
|
|
||||||
local newButton = AceGUI:Create("WeakAurasToolbarButton")
|
local lockButton = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
newButton:SetText(L["New Aura"])
|
lockButton:SetText(L["Lock Positions"])
|
||||||
newButton:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\newaura")
|
lockButton:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\lockPosition")
|
||||||
newButton.frame:SetParent(toolbarContainer)
|
lockButton:SetCallback("OnClick", function(self)
|
||||||
newButton.frame:Show()
|
if WeakAurasOptionsSaved.lockPositions then
|
||||||
newButton:SetPoint("RIGHT", importButton.frame, "LEFT", -10, 0)
|
lockButton:SetStrongHighlight(false)
|
||||||
frame.toolbarContainer = toolbarContainer
|
lockButton:UnlockHighlight()
|
||||||
|
WeakAurasOptionsSaved.lockPositions = false
|
||||||
newButton:SetCallback("OnClick", function()
|
else
|
||||||
frame:NewAura()
|
lockButton:SetStrongHighlight(true)
|
||||||
|
lockButton:LockHighlight()
|
||||||
|
WeakAurasOptionsSaved.lockPositions = true
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
if WeakAurasOptionsSaved.lockPositions then
|
||||||
|
lockButton:LockHighlight()
|
||||||
|
end
|
||||||
|
lockButton.frame:SetParent(toolbarContainer)
|
||||||
|
lockButton.frame:Show()
|
||||||
|
lockButton:SetPoint("LEFT", importButton.frame, "RIGHT", 10, 0)
|
||||||
|
|
||||||
local magnetButton = AceGUI:Create("WeakAurasToolbarButton")
|
local magnetButton = AceGUI:Create("WeakAurasToolbarButton")
|
||||||
magnetButton:SetText(L["Magnetically Align"])
|
magnetButton:SetText(L["Magnetically Align"])
|
||||||
@@ -695,28 +782,8 @@ function OptionsPrivate.CreateFrame()
|
|||||||
end
|
end
|
||||||
magnetButton.frame:SetParent(toolbarContainer)
|
magnetButton.frame:SetParent(toolbarContainer)
|
||||||
magnetButton.frame:Show()
|
magnetButton.frame:Show()
|
||||||
magnetButton:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -17, -55)
|
magnetButton:SetPoint("LEFT", lockButton.frame, "RIGHT", 10, 0)
|
||||||
|
|
||||||
local lockButton = AceGUI:Create("WeakAurasToolbarButton")
|
|
||||||
lockButton:SetText(L["Lock Positions"])
|
|
||||||
lockButton:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\lockPosition")
|
|
||||||
lockButton:SetCallback("OnClick", function(self)
|
|
||||||
if WeakAurasOptionsSaved.lockPositions then
|
|
||||||
lockButton:SetStrongHighlight(false)
|
|
||||||
lockButton:UnlockHighlight()
|
|
||||||
WeakAurasOptionsSaved.lockPositions = false
|
|
||||||
else
|
|
||||||
lockButton:SetStrongHighlight(true)
|
|
||||||
lockButton:LockHighlight()
|
|
||||||
WeakAurasOptionsSaved.lockPositions = true
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
if WeakAurasOptionsSaved.lockPositions then
|
|
||||||
lockButton:LockHighlight()
|
|
||||||
end
|
|
||||||
lockButton.frame:SetParent(toolbarContainer)
|
|
||||||
lockButton.frame:Show()
|
|
||||||
lockButton:SetPoint("RIGHT", magnetButton.frame, "LEFT", -10, 0)
|
|
||||||
|
|
||||||
local loadProgress = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
local loadProgress = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
||||||
loadProgress:SetPoint("TOP", buttonsContainer.frame, "TOP", 0, -4)
|
loadProgress:SetPoint("TOP", buttonsContainer.frame, "TOP", 0, -4)
|
||||||
@@ -728,7 +795,6 @@ function OptionsPrivate.CreateFrame()
|
|||||||
self:UpdateFrameVisible()
|
self:UpdateFrameVisible()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local buttonsScroll = AceGUI:Create("ScrollFrame")
|
local buttonsScroll = AceGUI:Create("ScrollFrame")
|
||||||
buttonsScroll:SetLayout("ButtonsScrollLayout")
|
buttonsScroll:SetLayout("ButtonsScrollLayout")
|
||||||
buttonsScroll.width = "fill"
|
buttonsScroll.width = "fill"
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ local function createOptions(id, data)
|
|||||||
end,
|
end,
|
||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
data.displayText = OptionsPrivate.Private.ReplaceLocalizedRaidMarkers(v);
|
data.displayText = OptionsPrivate.Private.ReplaceLocalizedRaidMarkers(v);
|
||||||
|
|
||||||
|
local metaData = OptionsPrivate.Private.GetAdditionalProperties(data)
|
||||||
|
OptionsPrivate.Private.SetDefaultFormatters(data, data.displayText, "displayText_format_", metaData)
|
||||||
|
|
||||||
WeakAuras.Add(data);
|
WeakAuras.Add(data);
|
||||||
WeakAuras.ClearAndUpdateOptions(data.id)
|
WeakAuras.ClearAndUpdateOptions(data.id)
|
||||||
WeakAuras.UpdateThumbnail(data);
|
WeakAuras.UpdateThumbnail(data);
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ local function createOptions(parentData, data, index, subIndex)
|
|||||||
order = 11,
|
order = 11,
|
||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
data.text_text = OptionsPrivate.Private.ReplaceLocalizedRaidMarkers(v)
|
data.text_text = OptionsPrivate.Private.ReplaceLocalizedRaidMarkers(v)
|
||||||
|
local metaData = OptionsPrivate.Private.GetAdditionalProperties(parentData)
|
||||||
|
OptionsPrivate.Private.SetDefaultFormatters(data, data.text_text, "text_text_format_", metaData)
|
||||||
|
|
||||||
WeakAuras.Add(parentData)
|
WeakAuras.Add(parentData)
|
||||||
WeakAuras.ClearAndUpdateOptions(parentData.id)
|
WeakAuras.ClearAndUpdateOptions(parentData.id)
|
||||||
end,
|
end,
|
||||||
@@ -530,7 +533,6 @@ local function createOptions(parentData, data, index, subIndex)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
OptionsPrivate.AddTextFormatOption(texts, true, get, addOption, hidden, setHidden, false, listIndex, #list)
|
OptionsPrivate.AddTextFormatOption(texts, true, get, addOption, hidden, setHidden, false, listIndex, #list)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -222,6 +222,23 @@ local function DeleteConditionsForTrigger(data, triggernum)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function FixUpProgressSourceAfterDelete(data, triggernum)
|
||||||
|
local function FixUpProgressSource(data)
|
||||||
|
if data.progressSource then
|
||||||
|
local trigger, property = unpack(data.progressSource)
|
||||||
|
if trigger > triggernum then
|
||||||
|
data.progressSource = {trigger - 1, property}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
FixUpProgressSource(data)
|
||||||
|
|
||||||
|
for _, subRegionData in ipairs(data.subRegions) do
|
||||||
|
FixUpProgressSource(subRegionData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function moveTriggerDownConditionCheck(check, i)
|
local function moveTriggerDownConditionCheck(check, i)
|
||||||
if (check.trigger == i) then
|
if (check.trigger == i) then
|
||||||
check.trigger = i + 1;
|
check.trigger = i + 1;
|
||||||
@@ -244,6 +261,23 @@ local function moveTriggerDownImpl(data, i)
|
|||||||
moveTriggerDownConditionCheck(condition.check, i);
|
moveTriggerDownConditionCheck(condition.check, i);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function fixUpProgressSource(data)
|
||||||
|
if data.progressSource then
|
||||||
|
local trigger, property = unpack(data.progressSource)
|
||||||
|
if trigger == i then
|
||||||
|
data.progressSource = {i + 1, property}
|
||||||
|
elseif trigger == i + 1 then
|
||||||
|
data.progressSource = {i, property}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
fixUpProgressSource(data)
|
||||||
|
|
||||||
|
for _, subRegionData in ipairs(data.subRegions) do
|
||||||
|
fixUpProgressSource(subRegionData)
|
||||||
|
end
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -352,6 +386,7 @@ function OptionsPrivate.AddTriggerMetaFunctions(options, data, triggernum)
|
|||||||
if #child.triggers > 1 and #child.triggers >= triggernum then
|
if #child.triggers > 1 and #child.triggers >= triggernum then
|
||||||
tremove(child.triggers, triggernum)
|
tremove(child.triggers, triggernum)
|
||||||
DeleteConditionsForTrigger(child, triggernum)
|
DeleteConditionsForTrigger(child, triggernum)
|
||||||
|
FixUpProgressSourceAfterDelete(child, triggernum)
|
||||||
WeakAuras.Add(child)
|
WeakAuras.Add(child)
|
||||||
OptionsPrivate.RemoveCollapsed(collapsedId, "trigger", {triggernum})
|
OptionsPrivate.RemoveCollapsed(collapsedId, "trigger", {triggernum})
|
||||||
OptionsPrivate.ClearOptions(child.id)
|
OptionsPrivate.ClearOptions(child.id)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ local Private = select(2, ...)
|
|||||||
|
|
||||||
local L = WeakAuras.L
|
local L = WeakAuras.L
|
||||||
|
|
||||||
local optionsVersion = "5.19.12 Beta"
|
local optionsVersion = "5.20.0 Beta"
|
||||||
|
|
||||||
if optionsVersion ~= WeakAuras.versionString then
|
if optionsVersion ~= WeakAuras.versionString then
|
||||||
local message = string.format(L["The WeakAuras Options Addon version %s doesn't match the WeakAuras version %s. If you updated the addon while the game was running, try restarting World of Warcraft. Otherwise try reinstalling WeakAuras"],
|
local message = string.format(L["The WeakAuras Options Addon version %s doesn't match the WeakAuras version %s. If you updated the addon while the game was running, try restarting World of Warcraft. Otherwise try reinstalling WeakAuras"],
|
||||||
|
|||||||
@@ -1772,8 +1772,8 @@ function OptionsPrivate.UpdateTextReplacements(frame, data)
|
|||||||
local tempProps = {}
|
local tempProps = {}
|
||||||
|
|
||||||
-- Add the properties to the temporary table
|
-- Add the properties to the temporary table
|
||||||
for name, desc in pairs(triggerProps) do
|
for name, data in pairs(triggerProps) do
|
||||||
table.insert(tempProps, {triggerNum = triggerNum, name = name, desc = desc})
|
table.insert(tempProps, {triggerNum = triggerNum, name = name, desc = data.display})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Sort the temporary table by name
|
-- Sort the temporary table by name
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
## Interface: 30300
|
## Interface: 30300
|
||||||
## Title: WeakAuras Options
|
## Title: WeakAuras Options
|
||||||
## Author: The WeakAuras Team
|
## Author: The WeakAuras Team
|
||||||
## Version: 5.19.12
|
## Version: 5.20.0
|
||||||
## IconTexture: Interface\AddOns\WeakAuras\Media\Textures\icon.blp
|
## IconTexture: Interface\AddOns\WeakAuras\Media\Textures\icon.blp
|
||||||
## Notes: Options for WeakAuras
|
## Notes: Options for WeakAuras
|
||||||
## Notes-esES: Opciones para WeakAuras
|
## Notes-esES: Opciones para WeakAuras
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
## Interface: 30300
|
## Interface: 30300
|
||||||
## Title: WeakAuras Templates
|
## Title: WeakAuras Templates
|
||||||
## Author: The WeakAuras Team
|
## Author: The WeakAuras Team
|
||||||
## Version: 5.19.12
|
## Version: 5.20.0
|
||||||
## Notes: Templates for WeakAuras
|
## Notes: Templates for WeakAuras
|
||||||
## Notes-esES: Plantillas para WeakAuras
|
## Notes-esES: Plantillas para WeakAuras
|
||||||
## Notes-esMX: Plantillas para WeakAuras
|
## Notes-esMX: Plantillas para WeakAuras
|
||||||
|
|||||||
Reference in New Issue
Block a user