Release 1.4.46
- Added node type match to tree search - Reworked SocketedIn modifiers to apply to minions - Added mod cache file to improve load time - Fixed error caused by The Consuming Dark in 3.0 builds
This commit is contained in:
@@ -513,7 +513,7 @@ function PassiveTreeViewClass:Zoom(level, viewPort)
|
||||
end
|
||||
|
||||
function PassiveTreeViewClass:DoesNodeMatchSearchStr(node)
|
||||
if node.type == "mastery" then
|
||||
if node.type == "classStart" or node.type == "mastery" then
|
||||
return
|
||||
end
|
||||
|
||||
@@ -540,6 +540,12 @@ function PassiveTreeViewClass:DoesNodeMatchSearchStr(node)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Check node type
|
||||
local errMsg, match = PCall(string.match, node.type:lower(), self.searchStr:lower())
|
||||
if match then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function PassiveTreeViewClass:AddNodeName(tooltip, node)
|
||||
|
||||
@@ -327,14 +327,15 @@ function SkillsTabClass:CreateGemSlot(index)
|
||||
self.build.buildFlag = true
|
||||
end)
|
||||
slot.enabled.tooltipFunc = function(tooltip)
|
||||
tooltip:Clear()
|
||||
if self.displayGroup.gemList[index] then
|
||||
local calcFunc, calcBase = self.build.calcsTab:GetMiscCalculator(self.build)
|
||||
if calcFunc then
|
||||
self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
|
||||
local output = calcFunc()
|
||||
self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
|
||||
self.build:AddStatComparesToTooltip(tooltip, calcBase, output, self.displayGroup.gemList[index].enabled and "^7Disabling this gem will give you:" or "^7Enabling this gem will give you:")
|
||||
if tooltip:CheckForUpdate(self.build.outputRevision) then
|
||||
if self.displayGroup.gemList[index] then
|
||||
local calcFunc, calcBase = self.build.calcsTab:GetMiscCalculator(self.build)
|
||||
if calcFunc then
|
||||
self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
|
||||
local output = calcFunc()
|
||||
self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
|
||||
self.build:AddStatComparesToTooltip(tooltip, calcBase, output, self.displayGroup.gemList[index].enabled and "^7Disabling this gem will give you:" or "^7Enabling this gem will give you:")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
1
Data/2_6/ModCache.lua
Normal file
1
Data/2_6/ModCache.lua
Normal file
File diff suppressed because one or more lines are too long
1
Data/3_0/ModCache.lua
Normal file
1
Data/3_0/ModCache.lua
Normal file
File diff suppressed because one or more lines are too long
@@ -382,8 +382,10 @@ function calcs.buildActiveSkillModList(env, actor, activeSkill)
|
||||
calcs.mergeGemMods(skillModList, activeGem)
|
||||
|
||||
-- Add extra modifiers
|
||||
activeSkill.extraSkillModList = { }
|
||||
for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "ExtraSkillMod")) do
|
||||
skillModList:AddMod(value.mod)
|
||||
t_insert(activeSkill.extraSkillModList, value.mod)
|
||||
end
|
||||
|
||||
-- Extract skill data
|
||||
|
||||
@@ -1400,7 +1400,7 @@ function calcs.offence(env, actor)
|
||||
if output.ChaosPoisonChance > 0 and output.PoisonChaosMax > 0 then
|
||||
-- Additional chance for chaos; adjust Physical damage and inflict chance
|
||||
local chance = (pass == 1) and "PoisonChanceOnCrit" or "PoisonChanceOnHit"
|
||||
local chaosChance = m_min(100, chance + output.ChaosPoisonChance)
|
||||
local chaosChance = m_min(100, output[chance] + output.ChaosPoisonChance)
|
||||
min = min * output[chance] / chaosChance
|
||||
max = max * output[chance] / chaosChance
|
||||
output[chance] = chaosChance
|
||||
|
||||
@@ -331,6 +331,9 @@ function calcs.perform(env)
|
||||
for _, mod in ipairs(env.minion.minionData.modList) do
|
||||
env.minion.modDB:AddMod(mod)
|
||||
end
|
||||
for _, mod in ipairs(env.player.mainSkill.extraSkillModList) do
|
||||
env.minion.modDB:AddMod(mod)
|
||||
end
|
||||
if env.aegisModList then
|
||||
env.minion.itemList["Weapon 3"] = env.player.itemList["Weapon 2"]
|
||||
env.minion.modDB:AddList(env.aegisModList)
|
||||
|
||||
@@ -595,8 +595,10 @@ function calcs.initEnv(build, mode, override)
|
||||
socketGroup.mainActiveSkillCalcs = m_min(#socketGroupSkillList, socketGroup.mainActiveSkillCalcs or 1)
|
||||
activeSkillIndex = socketGroup.mainActiveSkillCalcs
|
||||
else
|
||||
socketGroup.mainActiveSkill = m_min(#socketGroupSkillList, socketGroup.mainActiveSkill or 1)
|
||||
activeSkillIndex = socketGroup.mainActiveSkill
|
||||
activeSkillIndex = m_min(#socketGroupSkillList, socketGroup.mainActiveSkill or 1)
|
||||
if env.mode == "MAIN" then
|
||||
socketGroup.mainActiveSkill = activeSkillIndex
|
||||
end
|
||||
end
|
||||
env.player.mainSkill = socketGroupSkillList[activeSkillIndex]
|
||||
end
|
||||
|
||||
@@ -144,6 +144,50 @@ function isMouseInRegion(region)
|
||||
return cursorX >= region.x and cursorX < region.x + region.width and cursorY >= region.y and cursorY < region.y + region.height
|
||||
end
|
||||
|
||||
-- Write a Lua table to file
|
||||
local function qFmt(s)
|
||||
return '"'..s:gsub("\n","\\n"):gsub("\"","\\\"")..'"'
|
||||
end
|
||||
function writeLuaTable(out, t, indent)
|
||||
out:write('{')
|
||||
if indent then
|
||||
out:write('\n')
|
||||
end
|
||||
for k, v in pairs(t) do
|
||||
if indent then
|
||||
out:write(string.rep("\t", indent))
|
||||
end
|
||||
if type(k) == "string" and k:match("^%a+$") then
|
||||
out:write(k, '=')
|
||||
else
|
||||
out:write('[')
|
||||
if type(k) == "number" then
|
||||
out:write(k)
|
||||
else
|
||||
out:write(qFmt(k))
|
||||
end
|
||||
out:write(']=')
|
||||
end
|
||||
if type(v) == "table" then
|
||||
writeLuaTable(out, v, indent and indent + 1)
|
||||
elseif type(v) == "string" then
|
||||
out:write(qFmt(v))
|
||||
else
|
||||
out:write(tostring(v))
|
||||
end
|
||||
if next(t, k) ~= nil then
|
||||
out:write(',')
|
||||
end
|
||||
if indent then
|
||||
out:write('\n')
|
||||
end
|
||||
end
|
||||
if indent then
|
||||
out:write(string.rep("\t", indent-1))
|
||||
end
|
||||
out:write('}')
|
||||
end
|
||||
|
||||
-- Make a copy of a table and all subtables
|
||||
do
|
||||
local subTableMap = { }
|
||||
|
||||
@@ -111,6 +111,15 @@ function main:Init()
|
||||
self.defaultBuildPath = self.userPath.."Builds/"
|
||||
self.buildPath = self.defaultBuildPath
|
||||
MakeDir(self.buildPath)
|
||||
|
||||
if launch.devMode and IsKeyDown("CTRL") then
|
||||
self.rebuildModCache = true
|
||||
else
|
||||
-- Load mod caches
|
||||
for _, targetVersion in ipairs(targetVersionList) do
|
||||
LoadModule("Data/"..targetVersion.."/ModCache", modLib.parseModCache[targetVersion])
|
||||
end
|
||||
end
|
||||
|
||||
self.tree = { }
|
||||
for _, targetVersion in ipairs(targetVersionList) do
|
||||
@@ -156,6 +165,30 @@ function main:Init()
|
||||
end
|
||||
end
|
||||
|
||||
if self.rebuildModCache then
|
||||
-- Update mod caches
|
||||
for _, targetVersion in ipairs(targetVersionList) do
|
||||
local out = io.open("Data/"..targetVersion.."/ModCache.lua", "w")
|
||||
out:write('local c=...')
|
||||
for line, dat in pairs(modLib.parseModCache[targetVersion]) do
|
||||
if not dat[1] or not dat[1][1] or dat[1][1].name ~= "JewelFunc" then
|
||||
out:write('c["', line, '"]={')
|
||||
if dat[1] then
|
||||
writeLuaTable(out, dat[1])
|
||||
else
|
||||
out:write('nil')
|
||||
end
|
||||
if dat[2] then
|
||||
out:write(',"', dat[2], '"}')
|
||||
else
|
||||
out:write(',nil}')
|
||||
end
|
||||
end
|
||||
end
|
||||
out:close()
|
||||
end
|
||||
end
|
||||
|
||||
self.sharedItemList = { }
|
||||
self.sharedItemSetList = { }
|
||||
|
||||
|
||||
@@ -426,11 +426,11 @@ local preFlagList = {
|
||||
["^trap and mine damage "] = { keywordFlags = bor(KeywordFlag.Trap, KeywordFlag.Mine) },
|
||||
["^left ring slot: "] = { tag = { type = "SlotNumber", num = 1 } },
|
||||
["^right ring slot: "] = { tag = { type = "SlotNumber", num = 2 } },
|
||||
["^socketed gems have "] = { tag = { type = "SocketedIn" } },
|
||||
["^socketed gems deal "] = { tag = { type = "SocketedIn" } },
|
||||
["^socketed curse gems have "] = { tag = { type = "SocketedIn", keyword = "curse" } },
|
||||
["^socketed melee gems have "] = { tag = { type = "SocketedIn", keyword = "melee" } },
|
||||
["^socketed golem gems have "] = { tag = { type = "SocketedIn", keyword = "golem" } },
|
||||
["^socketed gems have "] = { addToSkill = { type = "SocketedIn" } },
|
||||
["^socketed gems deal "] = { addToSkill = { type = "SocketedIn" } },
|
||||
["^socketed curse gems have "] = { addToSkill = { type = "SocketedIn", keyword = "curse" } },
|
||||
["^socketed melee gems have "] = { addToSkill = { type = "SocketedIn", keyword = "melee" } },
|
||||
["^socketed golem gems have "] = { addToSkill = { type = "SocketedIn", keyword = "golem" } },
|
||||
["^your flasks grant "] = { },
|
||||
["^when hit, "] = { },
|
||||
["^you and allies [hgd][ae][via][enl] "] = { },
|
||||
@@ -687,10 +687,10 @@ local specialModList = {
|
||||
} end,
|
||||
["grants armour equal to (%d+)%% of your reserved life to you and nearby allies"] = function(num) return { mod("GrantReservedLifeAsAura", "LIST", { mod = mod("Armour", "BASE", num / 100) }) } end,
|
||||
["grants maximum energy shield equal to (%d+)%% of your reserved mana to you and nearby allies"] = function(num) return { mod("GrantReservedManaAsAura", "LIST", { mod = mod("EnergyShield", "BASE", num / 100) }) } end,
|
||||
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "SocketedIn", slotName = "Gloves" }) } end,
|
||||
["skills from your boots leech (%d+)%% of damage as life"] = function(num) return { mod("DamageLifeLeech", "BASE", num, { type = "SocketedIn", slotName = "Boots" }) } end,
|
||||
["skills in your helm can have up to (%d+) additional totems? summoned at a time"] = function(num) return { mod("ActiveTotemLimit", "BASE", num, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ElementalPenetration", "BASE", num) }, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("AreaOfEffect", "INC", num) }, { type = "SocketedIn", slotName = "Gloves" }) } end,
|
||||
["skills from your boots leech (%d+)%% of damage as life"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("DamageLifeLeech", "BASE", num) }, { type = "SocketedIn", slotName = "Boots" }) } end,
|
||||
["skills in your helm can have up to (%d+) additional totems? summoned at a time"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ActiveTotemLimit", "BASE", num) }, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["(%d+)%% less totem damage per totem"] = function(num) return { mod("Damage", "MORE", -num, nil, 0, KeywordFlag.Totem, { type = "PerStat", stat = "ActiveTotemLimit", div = 1 }) } end,
|
||||
["poison you inflict with critical strikes deals (%d+)%% more damage"] = function(num) return { mod("PoisonDamageOnCrit", "MORE", 100) } end,
|
||||
["bleeding you inflict on maimed enemies deals (%d+)%% more damage"] = function(num) return { mod("Damage", "MORE", num, nil, 0, KeywordFlag.Bleed, { type = "EnemyCondition", var = "Maimed"}) } end,
|
||||
@@ -745,13 +745,13 @@ local specialModList = {
|
||||
["%+(%d+) to level of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "level", value = num }, { type = "SocketedIn" }) } end,
|
||||
["%+(%d+)%% to quality of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "quality", value = num }, { type = "SocketedIn" }) } end,
|
||||
["%+(%d+) to level of active socketed skill gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "active_skill", key = "level", value = num }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1, { type = "SocketedIn" }) },
|
||||
["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "SocketedIn" }) } end,
|
||||
["socketed gems fire an additional projectile"] = { mod("ExtraSkillMod", "LIST", { mod = mod("ProjectileCount", "BASE", 1) }, { type = "SocketedIn" }) },
|
||||
["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ProjectileCount", "BASE", num) }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems reserve no mana"] = { mod("ManaReserved", "MORE", -100, { type = "SocketedIn" }) },
|
||||
["socketed skill gems get a (%d+)%% mana multiplier"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ManaCost", "MORE", num - 100) }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems have blood magic"] = { flag("SkillBloodMagic", { type = "SocketedIn" }) },
|
||||
["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, { type = "SocketedIn" }) } end,
|
||||
["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("PhysicalDamageGainAsFire", "BASE", num, { type = "SocketedIn", keyword = "strength" }) } end,
|
||||
["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", num) }, { type = "SocketedIn" }) } end,
|
||||
["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("PhysicalDamageGainAsFire", "BASE", num) }, { type = "SocketedIn", keyword = "strength" }) } end,
|
||||
-- Extra skill/support
|
||||
["grants level (%d+) (.+)"] = function(num, _, skill) return extraSkill(skill, num) end,
|
||||
["casts level (%d+) (.+) when equipped"] = function(num, _, skill) return extraSkill(skill, num) end,
|
||||
@@ -1409,7 +1409,7 @@ local function parseMod(line, order)
|
||||
modList[i] = mod("MinionModifier", "LIST", { mod = effectMod }, misc.addToMinionTag)
|
||||
end
|
||||
elseif misc.addToSkill then
|
||||
-- Skill enchants that add additional effects
|
||||
-- Skill enchants or socketed gem modifiers that add additional effects
|
||||
for i, effectMod in ipairs(modList) do
|
||||
modList[i] = mod("ExtraSkillMod", "LIST", { mod = effectMod }, misc.addToSkill)
|
||||
end
|
||||
@@ -1438,4 +1438,4 @@ return function(line)
|
||||
end]]
|
||||
end
|
||||
return unpack(copyTable(cache[line]))
|
||||
end
|
||||
end, cache
|
||||
@@ -430,11 +430,11 @@ local preFlagList = {
|
||||
["^trap and mine damage "] = { keywordFlags = bor(KeywordFlag.Trap, KeywordFlag.Mine) },
|
||||
["^left ring slot: "] = { tag = { type = "SlotNumber", num = 1 } },
|
||||
["^right ring slot: "] = { tag = { type = "SlotNumber", num = 2 } },
|
||||
["^socketed gems have "] = { tag = { type = "SocketedIn" } },
|
||||
["^socketed gems deal "] = { tag = { type = "SocketedIn" } },
|
||||
["^socketed curse gems have "] = { tag = { type = "SocketedIn", keyword = "curse" } },
|
||||
["^socketed melee gems have "] = { tag = { type = "SocketedIn", keyword = "melee" } },
|
||||
["^socketed golem gems have "] = { tag = { type = "SocketedIn", keyword = "golem" } },
|
||||
["^socketed gems have "] = { addToSkill = { type = "SocketedIn" } },
|
||||
["^socketed gems deal "] = { addToSkill = { type = "SocketedIn" } },
|
||||
["^socketed curse gems have "] = { addToSkill = { type = "SocketedIn", keyword = "curse" } },
|
||||
["^socketed melee gems have "] = { addToSkill = { type = "SocketedIn", keyword = "melee" } },
|
||||
["^socketed golem gems have "] = { addToSkill = { type = "SocketedIn", keyword = "golem" } },
|
||||
["^your flasks grant "] = { },
|
||||
["^when hit, "] = { },
|
||||
["^you and allies [hgd][ae][via][enl] "] = { },
|
||||
@@ -695,10 +695,10 @@ local specialModList = {
|
||||
} end,
|
||||
["grants armour equal to (%d+)%% of your reserved life to you and nearby allies"] = function(num) return { mod("GrantReservedLifeAsAura", "LIST", { mod = mod("Armour", "BASE", num / 100) }) } end,
|
||||
["grants maximum energy shield equal to (%d+)%% of your reserved mana to you and nearby allies"] = function(num) return { mod("GrantReservedManaAsAura", "LIST", { mod = mod("EnergyShield", "BASE", num / 100) }) } end,
|
||||
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "SocketedIn", slotName = "Gloves" }) } end,
|
||||
["skills from your boots leech (%d+)%% of damage as life"] = function(num) return { mod("DamageLifeLeech", "BASE", num, { type = "SocketedIn", slotName = "Boots" }) } end,
|
||||
["skills in your helm can have up to (%d+) additional totems? summoned at a time"] = function(num) return { mod("ActiveTotemLimit", "BASE", num, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ElementalPenetration", "BASE", num) }, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("AreaOfEffect", "INC", num) }, { type = "SocketedIn", slotName = "Gloves" }) } end,
|
||||
["skills from your boots leech (%d+)%% of damage as life"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("DamageLifeLeech", "BASE", num) }, { type = "SocketedIn", slotName = "Boots" }) } end,
|
||||
["skills in your helm can have up to (%d+) additional totems? summoned at a time"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ActiveTotemLimit", "BASE", num) }, { type = "SocketedIn", slotName = "Helmet" }) } end,
|
||||
["(%d+)%% less totem damage per totem"] = function(num) return { mod("Damage", "MORE", -num, nil, 0, KeywordFlag.Totem, { type = "PerStat", stat = "ActiveTotemLimit", div = 1 }) } end,
|
||||
["poison you inflict with critical strikes deals (%d+)%% more damage"] = function(num) return { mod("Damage", "MORE", num, nil, 0, KeywordFlag.Poison, { type = "Condition", var = "CriticalStrike" }) } end,
|
||||
["bleeding you inflict on maimed enemies deals (%d+)%% more damage"] = function(num) return { mod("Damage", "MORE", num, nil, 0, KeywordFlag.Bleed, { type = "EnemyCondition", var = "Maimed"}) } end,
|
||||
@@ -754,13 +754,13 @@ local specialModList = {
|
||||
["%+(%d+) to level of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "level", value = num }, { type = "SocketedIn" }) } end,
|
||||
["%+(%d+)%% to quality of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "quality", value = num }, { type = "SocketedIn" }) } end,
|
||||
["%+(%d+) to level of active socketed skill gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "active_skill", key = "level", value = num }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1, { type = "SocketedIn" }) },
|
||||
["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "SocketedIn" }) } end,
|
||||
["socketed gems fire an additional projectile"] = { mod("ExtraSkillMod", "LIST", { mod = mod("ProjectileCount", "BASE", 1) }, { type = "SocketedIn" }) },
|
||||
["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ProjectileCount", "BASE", num) }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems reserve no mana"] = { mod("ManaReserved", "MORE", -100, { type = "SocketedIn" }) },
|
||||
["socketed skill gems get a (%d+)%% mana multiplier"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("ManaCost", "MORE", num - 100) }, { type = "SocketedIn" }) } end,
|
||||
["socketed gems have blood magic"] = { flag("SkillBloodMagic", { type = "SocketedIn" }) },
|
||||
["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, { type = "SocketedIn" }) } end,
|
||||
["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("PhysicalDamageGainAsFire", "BASE", num, { type = "SocketedIn", keyword = "strength" }) } end,
|
||||
["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", num) }, { type = "SocketedIn" }) } end,
|
||||
["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("PhysicalDamageGainAsFire", "BASE", num) }, { type = "SocketedIn", keyword = "strength" }) } end,
|
||||
-- Extra skill/support
|
||||
["grants level (%d+) (.+)"] = function(num, _, skill) return extraSkill(skill, num) end,
|
||||
["casts level (%d+) (.+) when equipped"] = function(num, _, skill) return extraSkill(skill, num) end,
|
||||
@@ -1430,7 +1430,7 @@ local function parseMod(line, order)
|
||||
modList[i] = mod("MinionModifier", "LIST", { mod = effectMod }, misc.addToMinionTag)
|
||||
end
|
||||
elseif misc.addToSkill then
|
||||
-- Skill enchants that add additional effects
|
||||
-- Skill enchants or socketed gem modifiers that add additional effects
|
||||
for i, effectMod in ipairs(modList) do
|
||||
modList[i] = mod("ExtraSkillMod", "LIST", { mod = effectMod }, misc.addToSkill)
|
||||
end
|
||||
@@ -1463,4 +1463,4 @@ return function(line, isComb)
|
||||
end
|
||||
end
|
||||
return unpack(copyTable(cache[line]))
|
||||
end
|
||||
end, cache
|
||||
@@ -3,6 +3,7 @@
|
||||
-- Module: Mod Tools
|
||||
-- Various functions for dealing with modifiers
|
||||
--
|
||||
local launch = ...
|
||||
|
||||
local pairs = pairs
|
||||
local t_insert = table.insert
|
||||
@@ -42,8 +43,9 @@ function modLib.createMod(modName, modType, modVal, ...)
|
||||
end
|
||||
|
||||
modLib.parseMod = { }
|
||||
modLib.parseModCache = { }
|
||||
for _, targetVersion in pairs(targetVersionList) do
|
||||
modLib.parseMod[targetVersion] = LoadModule("Modules/ModParser-"..targetVersion)
|
||||
modLib.parseMod[targetVersion], modLib.parseModCache[targetVersion] = LoadModule("Modules/ModParser-"..targetVersion, launch)
|
||||
end
|
||||
|
||||
function modLib.formatFlags(flags, src)
|
||||
|
||||
@@ -53,6 +53,13 @@ If you'd like to help support the development of Path of Building, I have a [Pat
|
||||

|
||||
|
||||
## Changelog
|
||||
### 1.4.46 - 2017/04/17
|
||||
* The passive tree search field can now also match node type (keystone/notable/normal)
|
||||
* Modifiers that apply to gems socketed in items can now apply to minions summoned by those gems
|
||||
* Improved the program's startup time
|
||||
For 3.0 builds:
|
||||
* Fixed error when using The Consuming Dark
|
||||
|
||||
### 1.4.45 - 2017/04/17
|
||||
* Fixed issue causing tooltips in the Shared Items list to display modifier ranges instead of specific values
|
||||
* Fixed the node location display in the Items tab covering jewel tooltips
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
VERSION[1.4.46][2017/04/17]
|
||||
* The passive tree search field can now also match node type (keystone/notable/normal)
|
||||
* Modifiers that apply to gems socketed in items can now apply to minions summoned by those gems
|
||||
* Improved the program's startup time
|
||||
For 3.0 builds:
|
||||
* Fixed error when using The Consuming Dark
|
||||
VERSION[1.4.45][2017/04/17]
|
||||
* Fixed issue causing tooltips in the Shared Items list to display modifier ranges instead of specific values
|
||||
* Fixed the node location display in the Items tab covering jewel tooltips
|
||||
|
||||
28
manifest.xml
28
manifest.xml
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PoBVersion>
|
||||
<Version number="1.4.45"/>
|
||||
<Version number="1.4.46"/>
|
||||
<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="d678fe3c8097828ee4f1513a792c1b3a9780f536" name="Launch.lua" part="program"/>
|
||||
<File sha1="72b9bea1871e94a643e4471fd84bbedbc7810336" name="UpdateCheck.lua" part="program"/>
|
||||
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
|
||||
<File sha1="459ab6b0067cc9addf1bacedcb0810bb0d000bad" name="changelog.txt" part="program"/>
|
||||
<File sha1="2b4ff2bbbaa333e598b121082641f35314bba69f" name="changelog.txt" part="program"/>
|
||||
<File sha1="3558da442f2fc18c3e1ea751b301be863dee56e8" name="Classes/BuildListControl.lua" part="program"/>
|
||||
<File sha1="0e4b2d4a291f26213d81761e3ac0f7525e31f950" name="Classes/ButtonControl.lua" part="program"/>
|
||||
<File sha1="b2eb6794c0a54a295ed9652afaee2c65fbe4e742" name="Classes/CalcBreakdownControl.lua" part="program"/>
|
||||
@@ -36,7 +36,7 @@
|
||||
<File sha1="ca94b201ae873829e7be39075150ee6bc79be0c3" name="Classes/PassiveSpec.lua" part="program"/>
|
||||
<File sha1="1080dfd1b2ff05b367e7da76e4223d13746ed5e6" name="Classes/PassiveSpecListControl.lua" part="program"/>
|
||||
<File sha1="7716fe69aa6d142fa02aed47d63f9c956e6f93ce" name="Classes/PassiveTree.lua" part="program"/>
|
||||
<File sha1="d1eac652f15101dd4fbd9a6200c7a35d8647c5f3" name="Classes/PassiveTreeView.lua" part="program"/>
|
||||
<File sha1="9e362f147fc0e5cef11d172b04242fc632fe0487" name="Classes/PassiveTreeView.lua" part="program"/>
|
||||
<File sha1="2f369b35d2319ea8ae1c7ba3b59c012553936a4f" name="Classes/PathControl.lua" part="program"/>
|
||||
<File sha1="9d91ef81ac4fd8d5a1e16be17bdf199545209d87" name="Classes/PopupDialog.lua" part="program"/>
|
||||
<File sha1="40aca5f791124ed944cded4e45fb90001c657ca6" name="Classes/ScrollBarControl.lua" part="program"/>
|
||||
@@ -44,7 +44,7 @@
|
||||
<File sha1="0d7d2eaf3efb1ec40eada321331fbc248a68d8be" name="Classes/SharedItemListControl.lua" part="program"/>
|
||||
<File sha1="b3bf0b096a9348900c926aef1b7a822a40df0480" name="Classes/SharedItemSetListControl.lua" part="program"/>
|
||||
<File sha1="6e7435c7d65c4b7994b491af27579c5ba2ec47e1" name="Classes/SkillListControl.lua" part="program"/>
|
||||
<File sha1="28c156e087e2dde94de7c3f14b70f7809caf1703" name="Classes/SkillsTab.lua" part="program"/>
|
||||
<File sha1="f3550bfd017924bcd75bd443ab2c2d95ba952b9a" name="Classes/SkillsTab.lua" part="program"/>
|
||||
<File sha1="a28a04692f0b244ac648620618a1c43ed13d946a" name="Classes/SliderControl.lua" part="program"/>
|
||||
<File sha1="eeff0df56df68c5942ba632d2862bc38cff346a9" name="Classes/TextListControl.lua" part="program"/>
|
||||
<File sha1="2b16b2485f25462f129c575d9c8574cd2308938a" name="Classes/Tooltip.lua" part="program"/>
|
||||
@@ -53,25 +53,25 @@
|
||||
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
|
||||
<File sha1="e5863dd79238ffd0a4c2f12b3b15c252933da453" name="Modules/Build.lua" part="program"/>
|
||||
<File sha1="44fab56072de8e555ff7e20ee32628230511d1d6" name="Modules/BuildList.lua" part="program"/>
|
||||
<File sha1="4967d7e8aa9adc3c1917cf46dcbce05667ecb5af" name="Modules/CalcActiveSkill.lua" part="program"/>
|
||||
<File sha1="d56a4bb075bdfed509252ae9f360320f71919494" name="Modules/CalcActiveSkill.lua" part="program"/>
|
||||
<File sha1="b2b8d55258d9763d7c7a4a9ca1f99be3973528a8" name="Modules/CalcBreakdown.lua" part="program"/>
|
||||
<File sha1="f6abff3650f2ba313232c2edeec474b68bf1c83f" name="Modules/CalcDefence-2_6.lua" part="program"/>
|
||||
<File sha1="acd2aacff9c45ab880e0d7b3d3309fbf12dd4ecb" name="Modules/CalcDefence-3_0.lua" part="program"/>
|
||||
<File sha1="69cae921c21f45c18b3875a76b35f33958490b7e" name="Modules/CalcOffence-2_6.lua" part="program"/>
|
||||
<File sha1="e67ffbe1a61f8e22c78d8b36825a34130d849e70" name="Modules/CalcOffence-3_0.lua" part="program"/>
|
||||
<File sha1="e3ccc7447e549bafb911eec0cf713736c45965ab" name="Modules/CalcPerform.lua" part="program"/>
|
||||
<File sha1="c5e3b8119036d679adccc3e7ce2608ed5156f4f2" name="Modules/CalcOffence-3_0.lua" part="program"/>
|
||||
<File sha1="4bef807b99bace9fa535f01cb5fd8027b765f728" name="Modules/CalcPerform.lua" part="program"/>
|
||||
<File sha1="db07750d45df48737f29fc7b0f90c61a95c18359" name="Modules/Calcs.lua" part="program"/>
|
||||
<File sha1="1171d2e39c3027e9aeb88935c1973930eec229cf" name="Modules/CalcSections-2_6.lua" part="program"/>
|
||||
<File sha1="a9ec3ad4c1f4bdf2f2d337f6551ecc39e1fc71a9" name="Modules/CalcSections-3_0.lua" part="program"/>
|
||||
<File sha1="10f994f575f7f835a0a9a0044317b044af86ceca" name="Modules/CalcSetup.lua" part="program"/>
|
||||
<File sha1="50460a77f1c036acd3c85201e55b5ac0f0ed4091" name="Modules/CalcSetup.lua" part="program"/>
|
||||
<File sha1="fb664a2a257ec307cabafe97ca98d95fb1bd63c4" name="Modules/CalcTools.lua" part="program"/>
|
||||
<File sha1="e7cc0cab4e1e373f780bf9c26d5f7265bcd4ee8c" name="Modules/Common.lua" part="program"/>
|
||||
<File sha1="e0b177c6205ceedd50ebcb5b1ccc549d6fe29150" name="Modules/Common.lua" part="program"/>
|
||||
<File sha1="081909fbc9a19fe359848277116c44fa5415c58e" name="Modules/Data.lua" part="program"/>
|
||||
<File sha1="afc69f0c78a39a448e47432c429c8a9395758d0a" name="Modules/ItemTools.lua" part="program"/>
|
||||
<File sha1="149bdb985e7cf2a6859248aa8350c701418f03e8" name="Modules/Main.lua" part="program"/>
|
||||
<File sha1="da775ad2244dbd757cff100fd6904c8ad4c29a86" name="Modules/ModParser-2_6.lua" part="program"/>
|
||||
<File sha1="28f434d2aec869bb9c4e70944bcd905596070397" name="Modules/ModParser-3_0.lua" part="program"/>
|
||||
<File sha1="4e1067e5444062686cd06783034537e7ff4fbfe1" name="Modules/ModTools.lua" part="program"/>
|
||||
<File sha1="04443dfdc31048451224f8adc92b4318fa9309b8" name="Modules/Main.lua" part="program"/>
|
||||
<File sha1="604a2e32898ee361416590376ea8067105569d52" name="Modules/ModParser-2_6.lua" part="program"/>
|
||||
<File sha1="43d5465a4899528b240c875fd8341df34e523015" name="Modules/ModParser-3_0.lua" part="program"/>
|
||||
<File sha1="84906d6bcb280c882eb4dfafb4ec520c61027d04" name="Modules/ModTools.lua" part="program"/>
|
||||
<File sha1="c345cdcf374d271411aa424ab150c0edbb5a362d" name="Assets/game_ui_small.png" part="program"/>
|
||||
<File sha1="97b020d8213e09c313536a91528ba5d5ebc4ca0a" name="Assets/patreon_logo.png" part="program"/>
|
||||
<File sha1="4ebea5031fd03771a9b637a3fdccf394344e4782" name="Assets/range_guide.png" part="program"/>
|
||||
@@ -104,6 +104,7 @@
|
||||
<File sha1="b305198cafc6800aa5556da07a5eea699c718d3b" name="Data/2_6/EnchantmentHelmet.lua" part="program"/>
|
||||
<File sha1="170d14d9176a1d7425d4bfa1b3bcc08c5f4fe73c" name="Data/2_6/Essence.lua" part="program"/>
|
||||
<File sha1="2611aa555e5793e7c1de36c7bc0e7a3fe17f6e5e" name="Data/2_6/Minions.lua" part="program"/>
|
||||
<File sha1="e56163cdbcc4deedc064d346e090acb7a4500e44" name="Data/2_6/ModCache.lua" part="program"/>
|
||||
<File sha1="3a83e6bf5e9648edd6a01e57525a771d501d1a37" name="Data/2_6/ModCorrupted.lua" part="program"/>
|
||||
<File sha1="d96fc1e31349cb8aba1336c1f356b69ff436269b" name="Data/2_6/ModFlask.lua" part="program"/>
|
||||
<File sha1="c7d3bda476aa6c11a3ea45d93b077b82d61c5dd4" name="Data/2_6/ModItem.lua" part="program"/>
|
||||
@@ -145,6 +146,7 @@
|
||||
<File sha1="ca3017638e691f9832adb88cba78e48730204a8a" name="Data/3_0/EnchantmentHelmet.lua" part="program"/>
|
||||
<File sha1="05bf7be7aa8219e16fba64aca2cdb7bd262c4339" name="Data/3_0/Essence.lua" part="program"/>
|
||||
<File sha1="f761b485bb9c46c9d76514cae3a66823184b98c2" name="Data/3_0/Minions.lua" part="program"/>
|
||||
<File sha1="8cc0f3c0ac6ebd74947c77ea9e90b73be0ad2b4f" name="Data/3_0/ModCache.lua" part="program"/>
|
||||
<File sha1="a594cca6f7ec0c86bce89ee79740ade372ef3d7b" name="Data/3_0/ModCorrupted.lua" part="program"/>
|
||||
<File sha1="061514fc3ca4b3b2fb6f962659de0bc6284b7f90" name="Data/3_0/ModFlask.lua" part="program"/>
|
||||
<File sha1="eee385544a178a48834b508542136b0f2ab885a0" name="Data/3_0/ModItem.lua" part="program"/>
|
||||
|
||||
Reference in New Issue
Block a user