Merge remote-tracking branch 'origin/dev'
This commit is contained in:
@@ -79,6 +79,9 @@ local varList = {
|
||||
{ var = "conditionEnemyLowLife", type = "check", label = "Is the enemy on Low Life?", apply = function(val, modList, enemyModList)
|
||||
modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyLowLife" }, "Config", { type = "Condition", var = "Effective" })
|
||||
end },
|
||||
{ var = "conditionAtCloseRange", type = "check", label = "Is the enemy at Close Range?", apply = function(val, modList, enemyModList)
|
||||
modList:NewMod("Misc", "LIST", { type = "Condition", var = "AtCloseRange" }, "Config", { type = "Condition", var = "Effective" })
|
||||
end },
|
||||
{ var = "conditionEnemyCursed", type = "check", label = "Is the enemy Cursed?", tooltip = "Your enemy will automatically be considered to be Cursed if you have at least one curse enabled,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList)
|
||||
modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyCursed" }, "Config", { type = "Condition", var = "Effective" })
|
||||
end },
|
||||
|
||||
@@ -51,10 +51,15 @@ function DropDownClass:IsMouseOver()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
local dropExtra = self.dropped and (height - 4) * #self.list + 2 or 0
|
||||
local mOver = cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height + dropExtra
|
||||
local mOver
|
||||
if self.dropUp then
|
||||
mOver = cursorX >= x and cursorY >= y - dropExtra and cursorX < x + width and cursorY < y + height
|
||||
else
|
||||
mOver = cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height + dropExtra
|
||||
end
|
||||
local mOverComp
|
||||
if mOver then
|
||||
if cursorY < y + height then
|
||||
if cursorY >= y and cursorY < y + height then
|
||||
mOverComp = "BODY"
|
||||
else
|
||||
mOverComp = "DROP"
|
||||
@@ -69,6 +74,8 @@ function DropDownClass:Draw(viewPort)
|
||||
local enabled = self:IsEnabled()
|
||||
local mOver, mOverComp = self:IsMouseOver()
|
||||
local dropExtra = (height - 4) * #self.list + 4
|
||||
self.dropUp = y + height + dropExtra > viewPort.height
|
||||
local dropY = self.dropUp and y - dropExtra or y + height
|
||||
if not enabled then
|
||||
SetDrawColor(0.33, 0.33, 0.33)
|
||||
elseif mOver or self.dropped then
|
||||
@@ -79,7 +86,7 @@ function DropDownClass:Draw(viewPort)
|
||||
DrawImage(nil, x, y, width, height)
|
||||
if self.dropped then
|
||||
SetDrawLayer(nil, 5)
|
||||
DrawImage(nil, x, y + height, width, dropExtra)
|
||||
DrawImage(nil, x, dropY, width, dropExtra)
|
||||
SetDrawLayer(nil, 0)
|
||||
end
|
||||
if not enabled then
|
||||
@@ -103,7 +110,7 @@ function DropDownClass:Draw(viewPort)
|
||||
if self.dropped then
|
||||
SetDrawLayer(nil, 5)
|
||||
SetDrawColor(0, 0, 0)
|
||||
DrawImage(nil, x + 1, y + height + 1, width - 2, dropExtra - 2)
|
||||
DrawImage(nil, x + 1, dropY + 1, width - 2, dropExtra - 2)
|
||||
SetDrawLayer(nil, 0)
|
||||
end
|
||||
if enabled then
|
||||
@@ -111,7 +118,7 @@ function DropDownClass:Draw(viewPort)
|
||||
if (mOver or self.dropped) and self.tooltip then
|
||||
SetDrawLayer(nil, 10)
|
||||
main:AddTooltipLine(14, self.tooltip)
|
||||
main:DrawTooltip(x, y, width, height + (self.dropped and dropExtra or 0), viewPort)
|
||||
main:DrawTooltip(x, y - (self.dropped and self.dropUp and dropExtra or 0), width, height + (self.dropped and dropExtra or 0), viewPort)
|
||||
SetDrawLayer(nil, 0)
|
||||
end
|
||||
else
|
||||
@@ -127,11 +134,11 @@ function DropDownClass:Draw(viewPort)
|
||||
if self.dropped then
|
||||
SetDrawLayer(nil, 5)
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
self.hoverSel = mOver and math.floor((cursorY - y - height) / (height - 4)) + 1
|
||||
self.hoverSel = mOver and math.floor((cursorY - dropY) / (height - 4)) + 1
|
||||
if self.hoverSel and self.hoverSel < 1 then
|
||||
self.hoverSel = nil
|
||||
end
|
||||
SetViewport(x + 2, y + height + 2, width - 4, #self.list * (height - 4))
|
||||
SetViewport(x + 2, dropY + 2, width - 4, #self.list * (height - 4))
|
||||
for index, listVal in ipairs(self.list) do
|
||||
local y = (index - 1) * (height - 4)
|
||||
if index == self.hoverSel then
|
||||
@@ -180,7 +187,9 @@ function DropDownClass:OnKeyUp(key)
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
self:SetSel(math.floor((cursorY - y - height) / (height - 4)) + 1)
|
||||
local dropExtra = (height - 4) * #self.list + 4
|
||||
local dropY = self.dropUp and y - dropExtra or y + height
|
||||
self:SetSel(math.floor((cursorY - dropY) / (height - 4)) + 1)
|
||||
self.dropped = false
|
||||
end
|
||||
elseif key == "WHEELDOWN" or key == "DOWN" then
|
||||
|
||||
@@ -58,7 +58,7 @@ function ItemSlotClass:Draw(viewPort)
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
DrawString(x - 2, y + 2, "RIGHT_X", height - 4, "VAR", "^7"..self.label..":")
|
||||
self.DropDownControl:Draw()
|
||||
self.DropDownControl:Draw(viewPort)
|
||||
local highlight = false
|
||||
for _, control in pairs({self.itemsTab.controls.itemList, self.itemsTab.controls.uniqueDB, self.itemsTab.controls.rareDB}) do
|
||||
if control:IsShown() and control.selDragging and control.selDragActive and self.itemsTab:IsItemValidForSlot(control.selItem, self.slotName) then
|
||||
|
||||
@@ -40,6 +40,7 @@ local PassiveSpecClass = common.NewClass("PassiveSpec", "UndoHandler", function(
|
||||
end)
|
||||
|
||||
function PassiveSpecClass:Load(xml, dbFileName)
|
||||
self.title = xml.attrib.title
|
||||
for _, node in pairs(xml) do
|
||||
if type(node) == "table" then
|
||||
if node.elem == "URL" then
|
||||
@@ -55,6 +56,9 @@ function PassiveSpecClass:Load(xml, dbFileName)
|
||||
end
|
||||
|
||||
function PassiveSpecClass:Save(xml)
|
||||
xml.attrib = {
|
||||
title = self.title,
|
||||
}
|
||||
t_insert(xml, {
|
||||
elem = "URL",
|
||||
[1] = self:EncodeURL("https://www.pathofexile.com/passive-skill-tree/")
|
||||
|
||||
@@ -100,7 +100,7 @@ function SkillsTabClass:Load(xml, fileName)
|
||||
gem.skillPart = tonumber(child.attrib.skillPart)
|
||||
t_insert(socketGroup.gemList, gem)
|
||||
end
|
||||
if node.attrib.skillPart then
|
||||
if node.attrib.skillPart and socketGroup.gemList[1] then
|
||||
socketGroup.gemList[1].skillPart = tonumber(node.attrib.skillPart)
|
||||
end
|
||||
self:ProcessSocketGroup(socketGroup)
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
local launch, main = ...
|
||||
|
||||
local ipairs = ipairs
|
||||
local t_insert = table.insert
|
||||
local m_min = math.min
|
||||
|
||||
local TreeTabClass = common.NewClass("TreeTab", "ControlHost", function(self, build)
|
||||
self.ControlHost()
|
||||
@@ -14,86 +16,33 @@ local TreeTabClass = common.NewClass("TreeTab", "ControlHost", function(self, bu
|
||||
|
||||
self.viewer = common.New("PassiveTreeView")
|
||||
|
||||
self.specList = { }
|
||||
self.specList[1] = common.New("PassiveSpec", build)
|
||||
self:SetActiveSpec(1)
|
||||
|
||||
self.anchorControls = common.New("Control", nil, 0, 0, 0, 20)
|
||||
--[[self.controls.specSelect = common.New("DropDownControl", {"LEFT",self.anchorControls,"RIGHT"}, 0, 0, 150, 20, nil, function(sel)
|
||||
if self.specList[sel] then
|
||||
self:SetActiveSpec(sel)
|
||||
else
|
||||
self:OpenSpecManagePopup()
|
||||
end
|
||||
end)]]
|
||||
--self.controls.reset = common.New("ButtonControl", {"LEFT",self.controls.specSelect,"RIGHT"}, 8, 0, 60, 20, "Reset", function()
|
||||
self.controls.reset = common.New("ButtonControl", {"LEFT",self.anchorControls,"RIGHT"}, 0, 0, 60, 20, "Reset", function()
|
||||
main:OpenConfirmPopup("Reset Tree", "Are you sure you want to reset your passive tree?", "Reset", function()
|
||||
self.build.spec:ResetNodes()
|
||||
self.build.spec:AddUndoState()
|
||||
self.build.buildFlag = true
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
self.controls.import = common.New("ButtonControl", {"LEFT",self.controls.reset,"RIGHT"}, 8, 0, 90, 20, "Import Tree", function()
|
||||
local treeLink = ""
|
||||
local showMsg
|
||||
local popup = main:OpenPopup(380, 110, "Import Tree", {
|
||||
common.New("LabelControl", nil, 0, 20, 0, 16, "Enter passive tree link:"),
|
||||
edit = common.New("EditControl", nil, 0, 40, 350, 18, "", nil, nil, nil, function(buf)
|
||||
treeLink = buf
|
||||
showMsg = nil
|
||||
end),
|
||||
common.New("LabelControl", nil, 0, 58, 0, 16, function() return showMsg or "" end),
|
||||
import = common.New("ButtonControl", nil, -45, 80, 80, 20, "Import", function()
|
||||
if #treeLink > 0 then
|
||||
if treeLink:match("poeurl%.com/") then
|
||||
local curl = require("lcurl")
|
||||
local easy = curl.easy()
|
||||
easy:setopt_url(treeLink)
|
||||
easy:setopt_writefunction(function(data)
|
||||
return true
|
||||
end)
|
||||
easy:perform()
|
||||
local redirect = easy:getinfo(curl.INFO_REDIRECT_URL)
|
||||
easy:close()
|
||||
if not redirect or redirect == treeLink then
|
||||
showMsg = "^1Failed to resolve PoEURL link"
|
||||
return
|
||||
end
|
||||
treeLink = redirect
|
||||
end
|
||||
local errMsg = self.build.spec:DecodeURL(treeLink)
|
||||
if errMsg then
|
||||
showMsg = "^1"..errMsg
|
||||
else
|
||||
self.build.spec:AddUndoState()
|
||||
self.build.buildFlag = true
|
||||
main:ClosePopup()
|
||||
end
|
||||
end
|
||||
end),
|
||||
common.New("ButtonControl", nil, 45, 80, 80, 20, "Cancel", function()
|
||||
main:ClosePopup()
|
||||
end),
|
||||
}, "import", "edit")
|
||||
self:OpenImportPopup()
|
||||
end)
|
||||
self.controls.export = common.New("ButtonControl", {"LEFT",self.controls.import,"RIGHT"}, 8, 0, 90, 20, "Export Tree", function()
|
||||
local treeLink = self.build.spec:EncodeURL("https://www.pathofexile.com/passive-skill-tree/")
|
||||
local popup
|
||||
popup = main:OpenPopup(380, 100, "Export Tree", {
|
||||
common.New("LabelControl", nil, 0, 20, 0, 16, "Passive tree link:"),
|
||||
edit = common.New("EditControl", nil, 0, 40, 350, 18, treeLink, nil, "%Z"),
|
||||
shrink = common.New("ButtonControl", nil, -90, 70, 140, 20, "Shrink with PoEURL", function()
|
||||
popup.controls.shrink.enabled = false
|
||||
popup.controls.shrink.label = "Shrinking..."
|
||||
launch:DownloadPage("http://poeurl.com/shrink.php?url="..treeLink, function(page, errMsg)
|
||||
popup.controls.shrink.label = "Done"
|
||||
if errMsg or not page:match("%S") then
|
||||
main:OpenMessagePopup("PoEURL Shortener", "Failed to get PoEURL link. Try again later.")
|
||||
else
|
||||
treeLink = "http://poeurl.com/"..page
|
||||
popup.controls.edit:SetText(treeLink)
|
||||
popup:SelectControl(popup.controls.edit)
|
||||
end
|
||||
end)
|
||||
end),
|
||||
common.New("ButtonControl", nil, 30, 70, 80, 20, "Copy", function()
|
||||
Copy(treeLink)
|
||||
end),
|
||||
done = common.New("ButtonControl", nil, 120, 70, 80, 20, "Done", function()
|
||||
main:ClosePopup()
|
||||
end),
|
||||
}, "done", "edit")
|
||||
self:OpenExportPopup()
|
||||
end)
|
||||
self.controls.treeSearch = common.New("EditControl", {"LEFT",self.controls.export,"RIGHT"}, 8, 0, 400, 20, "", "Search", "%c%(%)", 100, function(buf)
|
||||
self.controls.treeSearch = common.New("EditControl", {"LEFT",self.controls.export,"RIGHT"}, 8, 0, 300, 20, "", "Search", "%c%(%)", 100, function(buf)
|
||||
self.viewer.searchStr = buf
|
||||
end)
|
||||
self.controls.treeHeatMap = common.New("CheckBoxControl", {"LEFT",self.controls.treeSearch,"RIGHT"}, 130, 0, 20, "Show node power:", function(state)
|
||||
@@ -124,6 +73,12 @@ function TreeTabClass:Draw(viewPort, inputEvents)
|
||||
local treeViewPort = { x = viewPort.x, y = viewPort.y, width = viewPort.width, height = viewPort.height - 32 }
|
||||
self.viewer:Draw(self.build, treeViewPort, inputEvents)
|
||||
|
||||
--[[self.controls.specSelect.sel = self.activeSpec
|
||||
wipeTable(self.controls.specSelect.list)
|
||||
for id, spec in ipairs(self.specList) do
|
||||
t_insert(self.controls.specSelect.list, spec.title or "Default")
|
||||
end
|
||||
t_insert(self.controls.specSelect.list, "Manage trees...")]]
|
||||
if not self.controls.treeSearch.hasFocus then
|
||||
self.controls.treeSearch:SetText(self.viewer.searchStr)
|
||||
end
|
||||
@@ -137,4 +92,126 @@ function TreeTabClass:Draw(viewPort, inputEvents)
|
||||
DrawImage(nil, viewPort.x, viewPort.y + viewPort.height - 32, viewPort.width, 4)
|
||||
|
||||
self:DrawControls(viewPort)
|
||||
end
|
||||
|
||||
function TreeTabClass:Load(xml, dbFileName)
|
||||
self.specList = { }
|
||||
if xml.elem == "Spec" then
|
||||
-- Import single spec from old build
|
||||
self.specList[1] = common.New("PassiveSpec", self.build)
|
||||
self.specList[1]:Load(xml, dbFileName)
|
||||
self.activeSpec = 1
|
||||
self.build.spec = self.specList[1]
|
||||
return
|
||||
end
|
||||
for _, node in pairs(xml) do
|
||||
if type(node) == "table" then
|
||||
if node.elem == "Spec" then
|
||||
local newSpec = common.New("PassiveSpec", self.build)
|
||||
newSpec:Load(node, dbFileName)
|
||||
t_insert(self.specList, newSpec)
|
||||
end
|
||||
end
|
||||
end
|
||||
if not self.specList[1] then
|
||||
self.specList[1] = common.New("PassiveSpec", self.build)
|
||||
end
|
||||
self:SetActiveSpec(tonumber(xml.attrib.activeSpec) or 1)
|
||||
end
|
||||
|
||||
function TreeTabClass:Save(xml)
|
||||
xml.attrib = {
|
||||
activeSpec = tostring(self.activeSpec)
|
||||
}
|
||||
for _, spec in ipairs(self.specList) do
|
||||
local child = {
|
||||
elem = "Spec"
|
||||
}
|
||||
spec:Save(child)
|
||||
t_insert(xml, child)
|
||||
end
|
||||
end
|
||||
|
||||
function TreeTabClass:SetActiveSpec(specId)
|
||||
self.activeSpec = m_min(specId, #self.specList)
|
||||
self.build.spec = self.specList[self.activeSpec]
|
||||
self.build.buildFlag = true
|
||||
end
|
||||
|
||||
function TreeTabClass:OpenSpecManagePopup()
|
||||
main:OpenPopup(500, 400, "Manage Passive Trees", {
|
||||
})
|
||||
end
|
||||
|
||||
function TreeTabClass:OpenImportPopup()
|
||||
local treeLink = ""
|
||||
local showMsg
|
||||
main:OpenPopup(380, 110, "Import Tree", {
|
||||
common.New("LabelControl", nil, 0, 20, 0, 16, "Enter passive tree link:"),
|
||||
edit = common.New("EditControl", nil, 0, 40, 350, 18, "", nil, nil, nil, function(buf)
|
||||
treeLink = buf
|
||||
showMsg = nil
|
||||
end),
|
||||
common.New("LabelControl", nil, 0, 58, 0, 16, function() return showMsg or "" end),
|
||||
import = common.New("ButtonControl", nil, -45, 80, 80, 20, "Import", function()
|
||||
if #treeLink > 0 then
|
||||
if treeLink:match("poeurl%.com/") then
|
||||
local curl = require("lcurl")
|
||||
local easy = curl.easy()
|
||||
easy:setopt_url(treeLink)
|
||||
easy:setopt_writefunction(function(data)
|
||||
return true
|
||||
end)
|
||||
easy:perform()
|
||||
local redirect = easy:getinfo(curl.INFO_REDIRECT_URL)
|
||||
easy:close()
|
||||
if not redirect or redirect == treeLink then
|
||||
showMsg = "^1Failed to resolve PoEURL link"
|
||||
return
|
||||
end
|
||||
treeLink = redirect
|
||||
end
|
||||
local errMsg = self.build.spec:DecodeURL(treeLink)
|
||||
if errMsg then
|
||||
showMsg = "^1"..errMsg
|
||||
else
|
||||
self.build.spec:AddUndoState()
|
||||
self.build.buildFlag = true
|
||||
main:ClosePopup()
|
||||
end
|
||||
end
|
||||
end),
|
||||
common.New("ButtonControl", nil, 45, 80, 80, 20, "Cancel", function()
|
||||
main:ClosePopup()
|
||||
end),
|
||||
}, "import", "edit")
|
||||
end
|
||||
|
||||
function TreeTabClass:OpenExportPopup()
|
||||
local treeLink = self.build.spec:EncodeURL("https://www.pathofexile.com/passive-skill-tree/")
|
||||
local popup
|
||||
popup = main:OpenPopup(380, 100, "Export Tree", {
|
||||
common.New("LabelControl", nil, 0, 20, 0, 16, "Passive tree link:"),
|
||||
edit = common.New("EditControl", nil, 0, 40, 350, 18, treeLink, nil, "%Z"),
|
||||
shrink = common.New("ButtonControl", nil, -90, 70, 140, 20, "Shrink with PoEURL", function()
|
||||
popup.controls.shrink.enabled = false
|
||||
popup.controls.shrink.label = "Shrinking..."
|
||||
launch:DownloadPage("http://poeurl.com/shrink.php?url="..treeLink, function(page, errMsg)
|
||||
popup.controls.shrink.label = "Done"
|
||||
if errMsg or not page:match("%S") then
|
||||
main:OpenMessagePopup("PoEURL Shortener", "Failed to get PoEURL link. Try again later.")
|
||||
else
|
||||
treeLink = "http://poeurl.com/"..page
|
||||
popup.controls.edit:SetText(treeLink)
|
||||
popup:SelectControl(popup.controls.edit)
|
||||
end
|
||||
end)
|
||||
end),
|
||||
common.New("ButtonControl", nil, 30, 70, 80, 20, "Copy", function()
|
||||
Copy(treeLink)
|
||||
end),
|
||||
done = common.New("ButtonControl", nil, 120, 70, 80, 20, "Done", function()
|
||||
main:ClosePopup()
|
||||
end),
|
||||
}, "done", "edit")
|
||||
end
|
||||
@@ -2544,13 +2544,13 @@ gems["Projectile Weakness"] = {
|
||||
skill("debuff", true),
|
||||
},
|
||||
qualityMods = {
|
||||
mod("ProjectileDamageTaken", "BASE", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5
|
||||
mod("ProjectileDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5
|
||||
},
|
||||
levelMods = {
|
||||
[1] = skill("manaCost", nil),
|
||||
[2] = skill("duration", nil), --"base_skill_effect_duration"
|
||||
[3] = mod("AreaRadius", "INC", nil), --"base_skill_area_of_effect_+%"
|
||||
[4] = mod("ProjectileDamageTaken", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%"
|
||||
[4] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%"
|
||||
},
|
||||
levels = {
|
||||
[1] = { 24, 9, 0, 25, },
|
||||
|
||||
11
Data/New.lua
11
Data/New.lua
@@ -190,5 +190,16 @@ Adds 15 to 25 Cold Damage to Spells per Power Charge
|
||||
Lose all Power Charges on reaching Maximum Power Charges
|
||||
Gain a Frenzy Charge on reaching Maximum Power Charges
|
||||
11% increased Cold Damage per Frenzy Charge
|
||||
]],[[
|
||||
The Halcyon
|
||||
Jade Amulet
|
||||
Unreleased: true
|
||||
League: Breach
|
||||
+(20-30) to Dexterity
|
||||
18% increased Cold Damage
|
||||
+38% to Cold Resistance
|
||||
30% increased Freeze Duration on Enemies
|
||||
10% chance to Freeze
|
||||
60% increased Damage if you've Frozen an Enemy Recently
|
||||
]],
|
||||
}
|
||||
@@ -22,7 +22,6 @@ function buildMode:Init(dbFileName, buildName)
|
||||
self.importTab = common.New("ImportTab", self)
|
||||
self.notesTab = common.New("NotesTab", self)
|
||||
self.configTab = common.New("ConfigTab", self)
|
||||
self.spec = common.New("PassiveSpec", self)
|
||||
self.treeTab = common.New("TreeTab", self)
|
||||
self.skillsTab = common.New("SkillsTab", self)
|
||||
self.itemsTab = common.New("ItemsTab", self)
|
||||
@@ -296,12 +295,15 @@ function buildMode:Init(dbFileName, buildName)
|
||||
["Build"] = self,
|
||||
["Config"] = self.configTab,
|
||||
["Notes"] = self.notesTab,
|
||||
["Spec"] = self.spec,
|
||||
["Tree"] = self.treeTab,
|
||||
["TreeView"] = self.treeTab.viewer,
|
||||
["Items"] = self.itemsTab,
|
||||
["Skills"] = self.skillsTab,
|
||||
["Calcs"] = self.calcsTab,
|
||||
}
|
||||
self.legacyLoaders = { -- Special loaders for legacy sections
|
||||
["Spec"] = self.treeTab,
|
||||
}
|
||||
|
||||
ConPrintf("Loading '%s'...", dbFileName)
|
||||
if self:LoadDBFile() then
|
||||
@@ -317,6 +319,7 @@ function buildMode:Init(dbFileName, buildName)
|
||||
-- Build calculation output tables
|
||||
self.calcsTab:BuildOutput()
|
||||
self:RefreshStatList()
|
||||
self.buildFlag = false
|
||||
|
||||
--[[
|
||||
for _, item in pairs(main.uniqueDB.list) do
|
||||
@@ -386,6 +389,10 @@ function buildMode:Save(xml)
|
||||
end
|
||||
|
||||
function buildMode:OnFrame(inputEvents)
|
||||
if self.abortSave and not launch.devMode then
|
||||
main:SetMode("LIST", self.buildName)
|
||||
end
|
||||
|
||||
for id, event in ipairs(inputEvents) do
|
||||
if event.type == "KeyDown" then
|
||||
if IsKeyDown("CTRL") then
|
||||
@@ -623,7 +630,7 @@ function buildMode:LoadDB(xmlText, fileName)
|
||||
for _, node in ipairs(dbXML[1]) do
|
||||
if type(node) == "table" then
|
||||
-- Check if there is a saver that can load this section
|
||||
local saver = self.savers[node.elem]
|
||||
local saver = self.savers[node.elem] or self.legacyLoaders[node.elem]
|
||||
if saver then
|
||||
if saver:Load(node, self.dbFileName) then
|
||||
return true
|
||||
|
||||
@@ -2492,6 +2492,9 @@ function calcs.buildOutput(build, mode)
|
||||
if env.modDB.conditions.Onslaught then
|
||||
t_insert(combatList, "Onslaught")
|
||||
end
|
||||
if env.modDB.conditions.UnholyMight then
|
||||
t_insert(combatList, "Unholy Might")
|
||||
end
|
||||
for _, activeSkill in ipairs(env.activeSkillList) do
|
||||
if activeSkill.buffModList or activeSkill.auraModList then
|
||||
if activeSkill.skillFlags.multiPart then
|
||||
|
||||
@@ -186,6 +186,7 @@ local modNameList = {
|
||||
["physical weapon damage"] = { "PhysicalDamage", flags = ModFlag.Weapon },
|
||||
["physical melee damage"] = { "PhysicalDamage", flags = ModFlag.Melee },
|
||||
["melee physical damage"] = { "PhysicalDamage", flags = ModFlag.Melee },
|
||||
["bow damage"] = { "Damage", flags = ModFlag.Bow },
|
||||
["wand damage"] = { "Damage", flags = ModFlag.Wand },
|
||||
["wand physical damage"] = { "PhysicalDamage", flags = ModFlag.Wand },
|
||||
["claw physical damage"] = { "PhysicalDamage", flags = ModFlag.Claw },
|
||||
@@ -376,6 +377,7 @@ local modTagList = {
|
||||
["if you've crit in the past 8 seconds"] = { tag = { type = "Condition", var = "CritInPast8Sec" } },
|
||||
["if energy shield recharge has started recently"] = { tag = { type = "Condition", var = "EnergyShieldRechargeRecently" } },
|
||||
-- Enemy status conditions
|
||||
["at close range"] = { tag = { type = "Condition", var = "AtCloseRange" }, flags = ModFlag.Hit },
|
||||
["against enemies on full life"] = { tag = { type = "Condition", var = "EnemyFullLife" }, flags = ModFlag.Hit },
|
||||
["against enemies that are on full life"] = { tag = { type = "Condition", var = "EnemyFullLife" }, flags = ModFlag.Hit },
|
||||
["against enemies on low life"] = { tag = { type = "Condition", var = "EnemyLowLife" }, flags = ModFlag.Hit },
|
||||
|
||||
@@ -49,6 +49,13 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases)
|
||||

|
||||
|
||||
## Changelog
|
||||
### 1.2.19 - 2016/11/30
|
||||
* Updated the passive tree to 2.5.0
|
||||
* Added 'The Halcyon'
|
||||
* Added an "enemy at Close Range" condition for Chin Sol
|
||||
* Corrected the projectile damage taken stat on Projectile Weakness
|
||||
* Fixed error that could result from loading certain builds saved prior to version 1.0.27
|
||||
|
||||
### 1.2.18 - 2016/11/29
|
||||
* Added 3 new Jewel templates
|
||||
* Added 'Tulfall'
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
VERSION[1.2.19][2016/11/30]
|
||||
* Updated the passive tree to 2.5.0
|
||||
* Added 'The Halcyon'
|
||||
* Added an "enemy at Close Range" condition for Chin Sol
|
||||
* Corrected the projectile damage taken stat on Projectile Weakness
|
||||
* Fixed error that could result from loading certain builds saved prior to version 1.0.27
|
||||
VERSION[1.2.18][2016/11/29]
|
||||
* Added 3 new Jewel templates
|
||||
* Added 'Tulfall'
|
||||
|
||||
28
manifest.xml
28
manifest.xml
@@ -1,62 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PoBVersion>
|
||||
<Version number="1.2.18"/>
|
||||
<Version number="1.2.19"/>
|
||||
<Source part="program" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/"/>
|
||||
<Source part="tree" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/tree.zip"/>
|
||||
<Source url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/runtime-win32.zip" part="runtime" platform="win32"/>
|
||||
<File sha1="d4d8e00d3ecc2ffb3d0c2df0876c009bfe0937d2" name="Launch.lua" part="program"/>
|
||||
<File sha1="93e19c2a160eb49993d50d9e2b47ea79962373d9" name="UpdateCheck.lua" part="program"/>
|
||||
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
|
||||
<File sha1="bf83aba6f87fe6c9b457a2dc94dc379ca1d27b5b" name="changelog.txt" part="program"/>
|
||||
<File sha1="02672a8499d20336ad3bdc08f6066bb60b02782b" name="changelog.txt" part="program"/>
|
||||
<File sha1="231a4fe264d84294427edacbf3e29ec4b301712e" name="Classes/BuildListControl.lua" part="program"/>
|
||||
<File sha1="47c28993f5653955c9e76714775d87ac22b077da" name="Classes/ButtonControl.lua" part="program"/>
|
||||
<File sha1="441d881e7e7ad3512aedb50bec8fa811b268a4db" name="Classes/CalcBreakdownControl.lua" part="program"/>
|
||||
<File sha1="23171916fa590c5344b17e67bd8d378574922388" name="Classes/CalcSectionControl.lua" part="program"/>
|
||||
<File sha1="57ac3bdfbe1fe07539326e983a6df92a60c2cb78" name="Classes/CalcsTab.lua" part="program"/>
|
||||
<File sha1="5d30e33c23cabf22917c02eb7df1963a5a27cb6a" name="Classes/CheckBoxControl.lua" part="program"/>
|
||||
<File sha1="6b968ed6c82f6d2c3380f919ef2afa61cd938734" name="Classes/ConfigTab.lua" part="program"/>
|
||||
<File sha1="821e62ff01d8ae9d773ceabcb8465626114ad152" name="Classes/ConfigTab.lua" part="program"/>
|
||||
<File sha1="bbb08f183746d6ec023e2bd08fb7a89d365381da" name="Classes/Control.lua" part="program"/>
|
||||
<File sha1="ae55fe1093e727872bc01cc94fa987395f944313" name="Classes/ControlHost.lua" part="program"/>
|
||||
<File sha1="8305ea8d306a13160c369c474d19b05024a1f5ef" name="Classes/DropDownControl.lua" part="program"/>
|
||||
<File sha1="3e1ac525cb454844527ee3c586ed21b9e2b0446b" name="Classes/DropDownControl.lua" part="program"/>
|
||||
<File sha1="b80bce946bd080f77b00704353d0f782a2a2de72" name="Classes/EditControl.lua" part="program"/>
|
||||
<File sha1="3dca397c5ed010ed2c5c0551b103c009cfa83c60" name="Classes/GemSelectControl.lua" part="program"/>
|
||||
<File sha1="66561eac3798d77bbb206059e786043adb8e1afc" name="Classes/ImportTab.lua" part="program"/>
|
||||
<File sha1="f5b0e4c3e8c9892dec419227c4f8490d420ecd98" name="Classes/ItemDBControl.lua" part="program"/>
|
||||
<File sha1="249ffd71dc8659ed83b6e2a8195291e4dfaf7324" name="Classes/ItemListControl.lua" part="program"/>
|
||||
<File sha1="ed4927d018a38cbe1581ca2345bc8fae8a49a78a" name="Classes/ItemSlotControl.lua" part="program"/>
|
||||
<File sha1="dc4977d3ac5655af1c0f6c56bc0b6c3318b19426" name="Classes/ItemSlotControl.lua" part="program"/>
|
||||
<File sha1="e239a39a838d0a4a1d50bfb419be839d190c4039" name="Classes/ItemsTab.lua" part="program"/>
|
||||
<File sha1="62138c7db82d57d638a16610a26acd0de75d3486" name="Classes/LabelControl.lua" part="program"/>
|
||||
<File sha1="b878a447554368870c3ee1ec5abcba084435cf2a" name="Classes/ModDB.lua" part="program"/>
|
||||
<File sha1="9075716e219fb25d917e83e3e3362d22c63d648c" name="Classes/ModList.lua" part="program"/>
|
||||
<File sha1="9bc0d8791e7825e52070e96e7894d29fad70cf98" name="Classes/NotesTab.lua" part="program"/>
|
||||
<File sha1="6f8f98d6ee505af53441c1fe9ad74fbff86d56ad" name="Classes/PassiveSpec.lua" part="program"/>
|
||||
<File sha1="013f8761ad15f6e500b1d05ae868b61551bb8937" name="Classes/PassiveSpec.lua" part="program"/>
|
||||
<File sha1="9a6bce38a62d9c07851cdd095e91f088e37cea4e" name="Classes/PassiveTree.lua" part="program"/>
|
||||
<File sha1="552dabee1f03ac196cceca00129a7307dd2c7204" name="Classes/PassiveTreeView.lua" part="program"/>
|
||||
<File sha1="fd75c7a6a55b13163ac4068bbef9cb49a898eb24" name="Classes/PopupDialog.lua" part="program"/>
|
||||
<File sha1="86fee3127d9520144fc741f6fccc3c1d9f1aa532" name="Classes/ScrollBarControl.lua" part="program"/>
|
||||
<File sha1="261dcf54a4542e6160fd7024d8edf4fc095d9c71" name="Classes/SectionControl.lua" part="program"/>
|
||||
<File sha1="a29cf1ce2135742b3182143de40d291056ccaef5" name="Classes/SkillListControl.lua" part="program"/>
|
||||
<File sha1="1a779f4a0153eed09449ddca0181ed47a6a2e8b1" name="Classes/SkillsTab.lua" part="program"/>
|
||||
<File sha1="74754b4997ee649ceaec65f6e57f142f2256e4d0" name="Classes/SkillsTab.lua" part="program"/>
|
||||
<File sha1="6317bd9ba391832dccafcb62409a5ce2988d1928" name="Classes/SliderControl.lua" part="program"/>
|
||||
<File sha1="80527e0e05c986355ce7af2ba026538aec99a63a" name="Classes/SlotSelectControl.lua" part="program"/>
|
||||
<File sha1="a4f9cc96ba474d0a75c768a0eabec92837e027cf" name="Classes/TextListControl.lua" part="program"/>
|
||||
<File sha1="aa9975d9b7e6fe56df19a5ada400da6b6e718478" name="Classes/TreeTab.lua" part="program"/>
|
||||
<File sha1="74e2261bb0803451c80e4eeef83834a7c3930b92" name="Classes/TreeTab.lua" part="program"/>
|
||||
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
|
||||
<File sha1="72ddc63155ed183be89b0f7226a4dace58b4a3d1" name="Modules/Build.lua" part="program"/>
|
||||
<File sha1="df13c234d2380109467ab1014a01db6fce9139d0" name="Modules/Build.lua" part="program"/>
|
||||
<File sha1="8a07fe01c53b785ebb6256236e781fbaabd36c0e" name="Modules/BuildList.lua" part="program"/>
|
||||
<File sha1="e9f5cf6c4f45010b552fce937ac06e159aea2a2d" name="Modules/Calcs.lua" part="program"/>
|
||||
<File sha1="869a137016e6819cbe81c1f5d2f3464c52640027" name="Modules/Calcs.lua" part="program"/>
|
||||
<File sha1="2a3ddc6fef06339cd06614fe032694a4e57bf878" name="Modules/CalcSections.lua" part="program"/>
|
||||
<File sha1="f207df4010cb3c7bc6cce98be2529a3b8a708b8f" name="Modules/Common.lua" part="program"/>
|
||||
<File sha1="bad785f71247b99ff76d9a359f725968aa71da5f" name="Modules/Data.lua" part="program"/>
|
||||
<File sha1="592e5ab3048528b8c9f689f18663b9657a8a78b0" name="Modules/ItemTools.lua" part="program"/>
|
||||
<File sha1="6165a0baf0c7d1cb6adf9bef68bfa9d9d3ad67ec" name="Modules/Main.lua" part="program"/>
|
||||
<File sha1="ff99c0f6ebb3c6a6ce14005326726b60412eb34d" name="Modules/ModParser.lua" part="program"/>
|
||||
<File sha1="85b75c5060a8fcf33cf23c3e0f095a40a395f711" name="Modules/ModParser.lua" part="program"/>
|
||||
<File sha1="5f93a9d8f58e0d5990a1f84e1ab1d53fbd35fb56" name="Modules/ModTools.lua" part="program"/>
|
||||
<File sha1="e7ee7e5b6388facb7bf568517ecc401590757df7" name="Assets/ring.png" part="program"/>
|
||||
<File sha1="9a320bfe629b1cf3f14fc77fbbf2508d0a5b2841" name="Assets/small_ring.png" part="program"/>
|
||||
<File sha1="963f242731beabe657298a6c58af06cb5aa431c7" name="Data/New.lua" part="program"/>
|
||||
<File sha1="161f389b923d6394c630be617ee5703656613198" name="Data/New.lua" part="program"/>
|
||||
<File sha1="69b07ade5dbfa9c2e9cd8421d858e3d60a58a3a0" name="Data/Rares.lua" part="program"/>
|
||||
<File sha1="4719bd0eb7b999372a219fe6f9c419d280867512" name="Data/Gems/act_dex.lua" part="program"/>
|
||||
<File sha1="b8a4148b8dc94f61263dc1f4b23470032dffb74d" name="Data/Gems/act_dex.lua" part="program"/>
|
||||
<File sha1="0b0026bdb9342999eda1890965e3b548c49f7b4d" name="Data/Gems/act_int.lua" part="program"/>
|
||||
<File sha1="4949ff400b5529fd1530d24c658b57732e367f19" name="Data/Gems/act_str.lua" part="program"/>
|
||||
<File sha1="f6d7bc0e523b7d97fd3f2a8d2f09476716757ce1" name="Data/Gems/other.lua" part="program"/>
|
||||
@@ -138,7 +138,7 @@
|
||||
<File sha1="18629865eb351e483178b6524fb3935cbc9b8297" name="lua/base64.lua" part="runtime"/>
|
||||
<File sha1="31e325cd40a9c0234c6265689cf70b97ef676f20" name="lua/sha1.lua" part="runtime"/>
|
||||
<File sha1="859e09104842f91a4aaa9a4d9fadf667535877e2" name="lua/xml.lua" part="runtime"/>
|
||||
<File sha1="dd9485f9bb28ae21302c49f64d5bcf0ec2b9cf4d" name="TreeData/tree.lua" part="tree"/>
|
||||
<File sha1="feef361b91d67d93f8090ff605e3c5eddc1bfe24" name="TreeData/tree.lua" part="tree"/>
|
||||
<File sha1="a29d12d7710c3cb8f81a6ae431302e59fe44b510" name="TreeData/skill_sprite-3-6340617adde92c3d2a6d908b53092cb4.jpg" part="tree"/>
|
||||
<File sha1="457d940b537d7207cb386c78a40c444893b5a5ce" name="TreeData/skill_sprite-active-3-18ba11635a6d283635c2fbdbfd30e7f6.jpg" part="tree"/>
|
||||
<File sha1="0ba429a9704c51b3cbc5bff88a105dadaf72fa76" name="TreeData/skill_sprite-active-3-bcd39673e9d14074c3fc75a13f66d6e6.png" part="tree"/>
|
||||
|
||||
Reference in New Issue
Block a user