Merge remote-tracking branch 'origin/dev'

This commit is contained in:
Dayve
2016-09-20 17:39:14 +10:00
6 changed files with 72 additions and 49 deletions

View File

@@ -216,12 +216,12 @@ Reflects 15 Fire Damage to Melee Attackers
]],[[
Cloak of Tawm'r Isley
Savant's Robe
Energy Shield: (421 to 468)
Energy Shield: (409 to 468)
Requires Level 56, 152 Int
(250 to 300)% increased Energy Shield
(250-300)% increased Energy Shield
Minions cannot be Blinded
Minions have 15% chance to Blind Enemies on Hit
Socketed Minion Gems are support by Level 16 Life Leech
Minions have 15% chance to Blind Enemies on hit
Socketed Minion Gems are Supported by Level 16 Life Leech
Found Magic Items drop Identified
]],[[
The Covenant

View File

@@ -94,7 +94,7 @@ local function mergeGemMods(modList, gem)
for k, v in pairs(gem.data.quality) do
mod_listMerge(modList, k, m_floor(v * gem.quality))
end
gem.level = m_min(gem.level, #gem.data.levels)
gem.level = m_min(m_max(gem.level, 1), #gem.data.levels)
for k, v in pairs(gem.data.levels[gem.level]) do
mod_listMerge(modList, k, v)
end
@@ -160,6 +160,11 @@ local function gemCanSupport(gem, flags)
end
end
-- Check if given gem is of the given type ("all", "strength", "melee", etc)
local function gemIsType(gem, type)
return type == "all" or (type == "active" and not gem.data.support) or (type == "elemental" and (gem.data.fire or gem.data.cold or gem.data.lightning)) or gem.data[type]
end
-- Create an active skill using the given active gem and list of support gems
-- It will determine the base flag set, and check which of the support gems can support this skill
local function createActiveSkill(activeGem, supportList)
@@ -225,20 +230,24 @@ local function buildActiveSkillModList(env, activeSkill)
-- Apply local skill modifiers from the item this skill is socketed into
for type, val in pairs(activeSkill.socketBonuses.gemLevel) do
for _, gem in pairs(activeSkill.gemList) do
if not gem.fromItem and (type == "all" or (type == "active" and not gem.data.support) or gem.data[type]) then
if not gem.fromItem and gemIsType(gem, type) then
gem.level = gem.level + val
end
end
end
for type, val in pairs(activeSkill.socketBonuses.gemQuality) do
for _, gem in pairs(activeSkill.gemList) do
if not gem.fromItem and (type == "all" or (type == "active" and not gem.data.support) or gem.data[type]) then
if not gem.fromItem and gemIsType(gem, type) then
gem.quality = gem.quality + val
end
end
end
for k, v in pairs(activeSkill.socketBonuses.modList) do
mod_listMerge(skillModList, k, v)
for type, modList in pairs(activeSkill.socketBonuses.modList) do
if gemIsType(activeSkill.activeGem, type) then
for k, v in pairs(modList) do
mod_listMerge(skillModList, k, v)
end
end
end
end
@@ -614,7 +623,10 @@ local function mergeMainMods(env, repSlotName, repItem)
elseif spaceName == "gemQuality" then
slotSocketBonuses[slotName].gemQuality[modName] = v
else
mod_listMerge(slotSocketBonuses[slotName].modList, k, v)
if not slotSocketBonuses[slotName].modList[spaceName] then
slotSocketBonuses[slotName].modList[spaceName] = { }
end
mod_listMerge(slotSocketBonuses[slotName].modList[spaceName], modName, v)
end
end
end
@@ -680,20 +692,21 @@ local function mergeMainMods(env, repSlotName, repItem)
end
end
-- Create display label for the socket group if the user didn't specify one
if socketGroup.label and socketGroup.label:match("%S") then
socketGroup.displayLabel = socketGroup.label
else
socketGroup.displayLabel = nil
for _, gem in ipairs(socketGroup.gemList) do
if gem.enabled and gem.data and not gem.data.support then
socketGroup.displayLabel = (socketGroup.displayLabel and socketGroup.displayLabel..", " or "") .. gem.name
end
end
socketGroup.displayLabel = socketGroup.displayLabel or "<No active skills>"
end
if env.mode == "MAIN" then
-- Create display label for the socket group if the user didn't specify one
if socketGroup.label and socketGroup.label:match("%S") then
socketGroup.displayLabel = socketGroup.label
else
socketGroup.displayLabel = nil
for _, gem in ipairs(socketGroup.gemList) do
if gem.enabled and gem.data and not gem.data.support then
socketGroup.displayLabel = (socketGroup.displayLabel and socketGroup.displayLabel..", " or "") .. gem.name
end
end
socketGroup.displayLabel = socketGroup.displayLabel or "<No active skills>"
end
-- Save the active skill list for display in the socket group tooltip
socketGroup.displaySkillList = socketGroupSkillList
end
end
@@ -885,19 +898,16 @@ local function finaliseMods(env, output)
-- Add boss modifiers
if getMiscVal(modDB, "effective", "enemyIsBoss", false) then
mod_dbMerge(modDB, "", "curseEffectMore", 0.4) -- FIXME: Need to confirm actual value
mod_dbMerge(modDB, "", "curseEffectMore", 0.4)
mod_dbMerge(modDB, "effective", "elementalResist", 30)
mod_dbMerge(modDB, "effective", "chaosResist", 15)
end
-- Merge skill modifiers and calculate life and mana reservations
-- Merge auxillary skill modifiers and calculate skill life and mana reservations
for _, activeSkill in pairs(env.activeSkillList) do
local skillModList = activeSkill.skillModList
-- Merge skill modifiers
if activeSkill == env.mainSkill then
mod_dbMergeList(modDB, skillModList)
end
-- Merge auxillary modifiers
mod_dbMergeList(modDB, activeSkill.buffModList)
local auraEffect = (1 + (getMiscVal(modDB, nil, "auraEffectInc", 0) + (skillModList.auraEffectInc or 0)) / 100) * getMiscVal(modDB, nil, "auraEffectMore", 1) * (skillModList.auraEffectMore or 1)
mod_dbScaleMergeList(modDB, activeSkill.auraModList, auraEffect)
@@ -920,10 +930,6 @@ local function finaliseMods(env, output)
if baseVal then
local more = sumMods(modDB, true, "manaReservedMore") * (skillModList.manaReservedMore or 1)
local inc = sumMods(modDB, false, "manaReservedInc") + (skillModList.manaReservedInc or 0)
if activeSkill.baseFlags.curse then
-- Special case for Heretic's Veil, needs a general solution though
inc = inc + (skillModList.curse_manaReservedInc or 0)
end
local cost = m_ceil(m_ceil(m_floor(baseVal * (skillModList.manaCostMore or 1)) * more) * (1 + inc / 100))
if getMiscVal(modDB, nil, "bloodMagic", false) or skillModList.skill_bloodMagic then
mod_dbMerge(modDB, "reserved", "life"..suffix, cost)
@@ -933,7 +939,8 @@ local function finaliseMods(env, output)
end
end
-- Merge active skill part mods
-- Merge main skill mods
mod_dbMergeList(modDB, env.mainSkill.skillModList)
if env.mainSkill.baseFlags.multiPart and modDB["SkillPart"..env.mainSkill.skillPart] then
mod_dbMergeList(modDB, modDB["SkillPart"..env.mainSkill.skillPart])
end

View File

@@ -25,6 +25,7 @@ local formList = {
["penetrates (%d+)%% of enemy"] = "PEN",
["^([%d%.]+)%% of (.+) regenerated per second"] = "REGENPERCENT",
["^([%d%.]+) (.+) regenerated per second"] = "REGENFLAT",
["(%d+) to (%d+) additional (%a+) damage"] = "DMG",
["adds (%d+)%-(%d+) (%a+) damage"] = "DMGATTACKS",
["adds (%d+) to (%d+) (%a+) damage"] = "DMGATTACKS",
["adds (%d+)%-(%d+) (%a+) damage to attacks"] = "DMGATTACKS",
@@ -154,6 +155,7 @@ local modNameList = {
-- Other skill modifiers
["radius"] = "aoeRadius{suf}",
["radius of area skills"] = "aoeRadius{suf}",
["area of effect radius"] = "aoeRadius{suf}",
["area of effect"] = "aoeRadius{suf}",
["duration"] = "duration{suf}",
["skill effect duration"] = "duration{suf}",
@@ -278,8 +280,10 @@ local preSpaceList = {
["^melee attacks have "] = "melee_",
["^left ring slot: "] = "IfSlot:1_",
["^right ring slot: "] = "IfSlot:2_",
["^socketed gems have "] = "SocketedIn:X_",
["^socketed gems have "] = "SocketedIn:X_all_",
["^socketed gems deal "] = "SocketedIn:X_all_",
["^socketed curse gems have "] = "SocketedIn:X_curse_",
["^socketed melee gems have "] = "SocketedIn:X_melee_",
}
-- List of special namespaces
@@ -375,8 +379,8 @@ local specialModList = {
["grants maximum energy shield equal to (%d+)%% of your reserved mana to you and nearby allies"] = function(num) return { energyShieldFromReservedMana = num } end,
["you and nearby allies deal (%d+)%% increased damage"] = function(num) return { damageInc = num } end,
["you and nearby allies have (%d+)%% increased movement speed"] = function(num) return { movementSpeedInc = num } end,
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { ["SocketedIn:Helmet_elementalPen"] = num } end,
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { ["SocketedIn:Gloves_aoeRadiusInc"] = num } end,
["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { ["SocketedIn:Helmet_all_elementalPen"] = num } end,
["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { ["SocketedIn:Gloves_all_aoeRadiusInc"] = num } end,
-- Special node types
["(%d+)%% of block chance applied to spells"] = function(num) return { blockChanceConv = num } end,
["(%d+)%% additional block chance with staves"] = function(num) return { CondMod_UsingStaff_blockChance = num } end,
@@ -413,12 +417,14 @@ local specialModList = {
["%+(%d+) to level of socketed (%a+) gems"] = function(num, _, type) return { ["SocketedIn:X_gemLevel_"..type] = num } end,
["%+(%d+)%% to quality of socketed (%a+) gems"] = function(num, _, type) return { ["SocketedIn:X_gemQuality_"..type] = num } end,
["%+(%d+) to level of active socketed skill gems"] = function(num) return { ["SocketedIn:X_gemLevel_active"] = num } end,
["socketed gems are supported by level (%d+) (.+)"] = function(num, _, support) return { ["SocketedIn:X_supportedBy_"..num..":"..support] = true } end,
["socketed .*gems are supported by level (%d+) (.+)"] = function(num, _, support) return { ["SocketedIn:X_supportedBy_"..num..":"..support] = true } end,
["socketed curse gems supported by level (%d+) (.+)"] = function(num, _, support) return { ["SocketedIn:X_supportedBy_"..num..":"..support] = true } end,
["socketed gems fire an additional projectile"] = { ["SocketedIn:X_projectileCount"] = 1 },
["socketed gems fire (%d+) additional projectiles"] = function(num) return { ["SocketedIn:X_projectileCount"] = num } end,
["socketed gems reserve no mana"] = { ["SocketedIn:X_manaReservedMore"] = 0 },
["socketed gems have blood magic"] = { ["SocketedIn:X_skill_bloodMagic"] = true },
["socketed gems fire an additional projectile"] = { ["SocketedIn:X_all_projectileCount"] = 1 },
["socketed gems fire (%d+) additional projectiles"] = function(num) return { ["SocketedIn:X_all_projectileCount"] = num } end,
["socketed gems reserve no mana"] = { ["SocketedIn:X_all_manaReservedMore"] = 0 },
["socketed gems have blood magic"] = { ["SocketedIn:X_all_skill_bloodMagic"] = true },
["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { ["SocketedIn:X_all_physicalGainAslightning"] = num } end,
["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { ["SocketedIn:X_strength_physicalGainAsfire"] = num } end,
-- Unique item modifiers
["your cold damage can ignite"] = { coldCanIgnite = true },
["your fire damage can shock but not ignite"] = { fireCanShock = true, fireCannotIgnite = true },
@@ -671,6 +677,9 @@ return function(line)
if not modName then
return { }, line
end
elseif modForm == "DMG" then
val = { tonumber(formCap[1]), tonumber(formCap[2]) }
modName = { formCap[3].."Min", formCap[3].."Max" }
elseif modForm == "DMGATTACKS" then
val = { tonumber(formCap[1]), tonumber(formCap[2]) }
modName = { formCap[3].."Min", formCap[3].."Max" }

View File

@@ -48,7 +48,11 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases)
![ss3](https://cloud.githubusercontent.com/assets/19189971/18089780/f0ff234a-6f04-11e6-8c88-6193fe59a5c4.png)
## Changelog
### 1.1.0 - 2016/09/19
### 1.1.1 - 2016/09/20
* Added support for more "socketed gem" modifiers, particularly those from essences
* Fixed a few minor issues
### 1.1.0 - 2016/09/20
* You can now import all character data: passive tree, jewels, skills and items!
* Character import now has two options:
* Passive Tree and Jewels: imports the passive skill tree and any jewels socketed into it

View File

@@ -1,4 +1,7 @@
VERSION[1.1.0][2016/09/19]
VERSION[1.1.1][2016/09/20]
* Added support for more "socketed gem" modifiers, particularly those from essences
* Fixed a few minor issues
VERSION[1.1.0][2016/09/20]
* You can now import all character data: passive tree, jewels, skills and items!
* Character import now has two options:
* Passive Tree and Jewels: imports the passive skill tree and any jewels socketed into it

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<PoBVersion>
<Version number="1.1.0"/>
<Version number="1.1.1"/>
<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="889ff24936021c18a2b2d6893fc087cb3bc7018a" name="Launch.lua" part="program"/>
<File sha1="cb07c8d4819eb81df9e98ab9039e0c9adf74c150" name="UpdateCheck.lua" part="program"/>
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
<File sha1="407e95fca132008b658c75c4291ef9eaad720b9d" name="changelog.txt" part="program"/>
<File sha1="3a04b9cdd2effacaf43c6f4c5f8474523448803d" name="changelog.txt" part="program"/>
<File sha1="aef7145f378d0a1d5dc6f5f2d3c08d2a1b6ef264" name="Classes/BuildListControl.lua" part="program"/>
<File sha1="34fdf53db3b3231ce446749227e178847b982771" name="Classes/ButtonControl.lua" part="program"/>
<File sha1="ffe8c54a8006cb7acc34ba5c6e50772081a0a694" name="Classes/CalcsTab.lua" part="program"/>
@@ -39,13 +39,13 @@
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
<File sha1="4708cceaf8a777defd85fcd9ad7323bac79431dd" name="Modules/Build.lua" part="program"/>
<File sha1="c03a7796aea3e9aa832fbb92c1f674ef5af690ca" name="Modules/BuildList.lua" part="program"/>
<File sha1="42e9c6423b8e2d388a575751d6bff22ecb6d58e9" name="Modules/Calcs.lua" part="program"/>
<File sha1="6e1fd142d5b02d537d6bfa69007de7327ceb4515" name="Modules/Calcs.lua" part="program"/>
<File sha1="7245920853a007b4ffd22b3e3a10f9d38593c065" name="Modules/CalcsView.lua" part="program"/>
<File sha1="f8a0dc45e26374329ab6f7029831fdded248f8e7" name="Modules/Common.lua" part="program"/>
<File sha1="2ffd6b80329ac005726e8e1123d89529c6680eb9" name="Modules/Data.lua" part="program"/>
<File sha1="c4e87504da94d176b2c20e8b61b1c09dc5d1c09b" name="Modules/ItemTools.lua" part="program"/>
<File sha1="3d5b025a56ab808c3dddf049cff0c9c4cebc9ad5" name="Modules/Main.lua" part="program"/>
<File sha1="a4f1b1bc5a0e1a5bfab862c1bc1705dc43628135" name="Modules/ModParser.lua" part="program"/>
<File sha1="a6e374f005773a4a081f225af89d4beddcd9200c" name="Modules/ModParser.lua" part="program"/>
<File sha1="bc49ce1b5e15da40476a9c99c4c690b323c0e7ad" 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"/>
@@ -79,7 +79,7 @@
<File sha1="583d410f4d475211ce6bdfd4ae8c6798ee29717a" name="Data/Uniques/amulet.lua" part="program"/>
<File sha1="50f6fd76f91f24ee7242cd12ef98bcdb0e35d0ee" name="Data/Uniques/axe.lua" part="program"/>
<File sha1="610887f513f7c7d5fb99153de72d4e7b64456322" name="Data/Uniques/belt.lua" part="program"/>
<File sha1="0091f9fb8f118c97039de04391db2e83a5407c0e" name="Data/Uniques/body.lua" part="program"/>
<File sha1="84817e89577343ab2b82969b2aa44ec78555261e" name="Data/Uniques/body.lua" part="program"/>
<File sha1="e842b68bec43f7e24913fd5684dbc31b2121c84e" name="Data/Uniques/boots.lua" part="program"/>
<File sha1="e2d8865b9d3d194dd7e4577c5fb13aca34f71875" name="Data/Uniques/bow.lua" part="program"/>
<File sha1="156b55263c58a93e0d100dc57a19aa81eea78326" name="Data/Uniques/claw.lua" part="program"/>