From af35d1818b7bc64bc293a3f5eca323841a6c5b25 Mon Sep 17 00:00:00 2001 From: Openarl Date: Sat, 18 Feb 2017 22:36:19 +1000 Subject: [PATCH] Release 1.3.2 - Added support for increased buff effect - Added basic support for DD - Fixed unarmed detection --- Data/Gems/act_dex.lua | 118 ++++++++++++++++++++++++++++++++++++++++-- Data/Gems/act_int.lua | 8 +-- Data/Gems/act_str.lua | 4 +- Data/Gems/other.lua | 4 +- Data/Gems/sup_dex.lua | 10 ++-- Data/Gems/sup_int.lua | 6 +-- Data/Gems/sup_str.lua | 2 +- Modules/Calcs.lua | 24 +++++---- Modules/Data.lua | 9 ++-- Modules/ModParser.lua | 3 +- README.md | 5 ++ changelog.txt | 4 ++ manifest.xml | 24 ++++----- 13 files changed, 172 insertions(+), 49 deletions(-) diff --git a/Data/Gems/act_dex.lua b/Data/Gems/act_dex.lua index 5a03ae5d..2e96598b 100644 --- a/Data/Gems/act_dex.lua +++ b/Data/Gems/act_dex.lua @@ -950,7 +950,7 @@ gems["Desecrate"] = { --"is_area_damage" = ? }, qualityMods = { - mod("Speed", "INC", 1, ModFlag.Spell), --"base_cast_speed_+%" = 1 + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 }, levelMods = { [1] = skill("manaCost", nil), @@ -996,7 +996,61 @@ gems["Detonate Dead"] = { cast = true, area = true, fire = true, - unsupported = true, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 6 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("manaCost", nil), + [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 7, 4, 5, }, + [2] = { 8, 5, 8, }, + [3] = { 9, 8, 11, }, + [4] = { 10, 9, 14, }, + [5] = { 11, 13, 19, }, + [6] = { 12, 17, 25, }, + [7] = { 14, 22, 33, }, + [8] = { 15, 28, 43, }, + [9] = { 17, 36, 54, }, + [10] = { 19, 46, 69, }, + [11] = { 21, 58, 87, }, + [12] = { 22, 72, 108, }, + [13] = { 23, 90, 135, }, + [14] = { 24, 111, 167, }, + [15] = { 25, 130, 195, }, + [16] = { 26, 152, 227, }, + [17] = { 27, 176, 265, }, + [18] = { 28, 205, 308, }, + [19] = { 29, 238, 357, }, + [20] = { 30, 276, 414, }, + [21] = { 31, 304, 456, }, + [22] = { 32, 335, 502, }, + [23] = { 33, 369, 553, }, + [24] = { 34, 406, 609, }, + [25] = { 34, 446, 669, }, + [26] = { 35, 491, 736, }, + [27] = { 36, 539, 809, }, + [28] = { 37, 592, 888, }, + [29] = { 38, 650, 975, }, + [30] = { 38, 713, 1070, }, + }, } gems["Vaal Detonate Dead"] = { dexterity = true, @@ -1005,7 +1059,61 @@ gems["Vaal Detonate Dead"] = { cast = true, area = true, fire = true, - unsupported = true, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 8 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"detonate_dead_chain_explode" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [2] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 5, }, + [2] = { 5, 7, }, + [3] = { 7, 10, }, + [4] = { 8, 12, }, + [5] = { 11, 17, }, + [6] = { 15, 23, }, + [7] = { 20, 30, }, + [8] = { 26, 39, }, + [9] = { 33, 50, }, + [10] = { 42, 63, }, + [11] = { 53, 79, }, + [12] = { 66, 99, }, + [13] = { 82, 122, }, + [14] = { 101, 151, }, + [15] = { 118, 177, }, + [16] = { 138, 207, }, + [17] = { 160, 241, }, + [18] = { 186, 280, }, + [19] = { 216, 325, }, + [20] = { 251, 376, }, + [21] = { 276, 415, }, + [22] = { 304, 457, }, + [23] = { 335, 503, }, + [24] = { 369, 553, }, + [25] = { 406, 609, }, + [26] = { 446, 669, }, + [27] = { 490, 735, }, + [28] = { 538, 807, }, + [29] = { 591, 886, }, + [30] = { 649, 973, }, + }, } gems["Double Strike"] = { dexterity = true, @@ -1934,7 +2042,7 @@ gems["Haste"] = { }, levelMods = { [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" [4] = mod("AreaRadius", "INC", nil), --"base_skill_area_of_effect_+%" }, @@ -1998,7 +2106,7 @@ gems["Vaal Haste"] = { }, levelMods = { [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" [4] = mod("AreaRadius", "INC", nil), --"base_skill_area_of_effect_+%" }, diff --git a/Data/Gems/act_int.lua b/Data/Gems/act_int.lua index a45809be..4c618d2f 100644 --- a/Data/Gems/act_int.lua +++ b/Data/Gems/act_int.lua @@ -1468,7 +1468,7 @@ gems["Flame Dash"] = { --"firestorm_use_server_effects" = ? }, qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = skill("manaCost", nil), @@ -1530,7 +1530,7 @@ gems["Flame Surge"] = { --"is_area_damage" = ? }, qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = skill("manaCost", nil), @@ -2801,7 +2801,7 @@ gems["Lightning Warp"] = { skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? }, qualityMods = { - mod("Speed", "INC", 1, ModFlag.Spell), --"base_cast_speed_+%" = 1 + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 }, levelMods = { [1] = skill("manaCost", nil), @@ -2868,7 +2868,7 @@ gems["Vaal Lightning Warp"] = { skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? }, qualityMods = { - mod("Speed", "INC", 1, ModFlag.Spell), --"base_cast_speed_+%" = 1 + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 }, levelMods = { [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" diff --git a/Data/Gems/act_str.lua b/Data/Gems/act_str.lua index 85d63afc..7c6d4e29 100644 --- a/Data/Gems/act_str.lua +++ b/Data/Gems/act_str.lua @@ -1279,7 +1279,7 @@ gems["Immortal Call"] = { --"base_deal_no_damage" = ? }, qualityMods = { - mod("Speed", "INC", 2, ModFlag.Spell), --"base_cast_speed_+%" = 2 + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 }, levelMods = { [1] = skill("manaCost", nil), @@ -1338,7 +1338,7 @@ gems["Vaal Immortal Call"] = { --"base_deal_no_damage" = ? }, qualityMods = { - mod("Speed", "INC", 2, ModFlag.Spell), --"base_cast_speed_+%" = 2 + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 }, levelMods = { [1] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" diff --git a/Data/Gems/other.lua b/Data/Gems/other.lua index 80a056ad..8a157003 100644 --- a/Data/Gems/other.lua +++ b/Data/Gems/other.lua @@ -41,7 +41,7 @@ gems["Detonate Mines"] = { --"base_deal_no_damage" = ? }, qualityMods = { - mod("Speed", "INC", 5, ModFlag.Spell), --"base_cast_speed_+%" = 5 + mod("Speed", "INC", 5, ModFlag.Cast), --"base_cast_speed_+%" = 5 }, levelMods = { }, @@ -72,7 +72,7 @@ gems["Portal"] = { --"base_deal_no_damage" = ? }, qualityMods = { - mod("Speed", "INC", 3, ModFlag.Spell), --"base_cast_speed_+%" = 3 + mod("Speed", "INC", 3, ModFlag.Cast), --"base_cast_speed_+%" = 3 }, levelMods = { }, diff --git a/Data/Gems/sup_dex.lua b/Data/Gems/sup_dex.lua index 8b606fa2..aeef7393 100644 --- a/Data/Gems/sup_dex.lua +++ b/Data/Gems/sup_dex.lua @@ -481,11 +481,11 @@ gems["Culling Strike"] = { mod("ManaCost", "MORE", 10), --"kill_enemy_on_hit_if_under_10%_life" = 1 mod("Speed", "INC", 0, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0 - mod("Speed", "INC", 0, ModFlag.Spell), --"base_cast_speed_+%" = 0 + mod("Speed", "INC", 0, ModFlag.Cast), --"base_cast_speed_+%" = 0 }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = mod("Damage", "INC", nil, 0, 0, nil), --"damage_+%" @@ -616,7 +616,7 @@ gems["Faster Projectiles"] = { }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" @@ -721,7 +721,7 @@ gems["Greater Multiple Projectiles"] = { }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = mod("Damage", "MORE", nil, ModFlag.Projectile), --"support_multiple_projectile_damage_+%_final" @@ -876,7 +876,7 @@ gems["Lesser Multiple Projectiles"] = { }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { [1] = mod("Damage", "MORE", nil, ModFlag.Projectile), --"support_lesser_multiple_projectile_damage_+%_final" diff --git a/Data/Gems/sup_int.lua b/Data/Gems/sup_int.lua index 17871a95..a3c7c5d6 100644 --- a/Data/Gems/sup_int.lua +++ b/Data/Gems/sup_int.lua @@ -621,10 +621,10 @@ gems["Faster Casting"] = { mod("ManaCost", "MORE", 20), }, qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Spell), --"base_cast_speed_+%" = 0.5 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 }, levelMods = { - [1] = mod("Speed", "INC", nil, ModFlag.Spell), --"base_cast_speed_+%" + [1] = mod("Speed", "INC", nil, ModFlag.Cast), --"base_cast_speed_+%" }, levels = { [1] = { 20, }, @@ -1262,7 +1262,7 @@ gems["Spell Echo"] = { mod("Damage", "INC", 0.5, ModFlag.Spell, 0, nil), --"spell_damage_+%" = 0.5 }, levelMods = { - [1] = mod("Speed", "MORE", nil, ModFlag.Spell), --"support_multicast_cast_speed_+%_final" + [1] = mod("Speed", "MORE", nil, ModFlag.Cast), --"support_multicast_cast_speed_+%_final" }, levels = { [1] = { 51, }, diff --git a/Data/Gems/sup_str.lua b/Data/Gems/sup_str.lua index 14855136..832ec992 100644 --- a/Data/Gems/sup_str.lua +++ b/Data/Gems/sup_str.lua @@ -1297,7 +1297,7 @@ gems["Spell Totem"] = { --"is_totem" = 1 --"base_totem_duration" = 8000 --"base_totem_range" = 60 - mod("Speed", "MORE", -30, ModFlag.Spell), --"support_spell_totem_cast_speed_+%_final" = -30 + mod("Speed", "MORE", -30, ModFlag.Cast), --"support_spell_totem_cast_speed_+%_final" = -30 --"base_skill_is_totemified" = ? }, qualityMods = { diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 72100e51..2280e347 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -257,10 +257,13 @@ local function buildActiveSkillModList(env, activeSkill) if skillFlags.hit then skillModFlags = bor(skillModFlags, ModFlag.Hit) end - if skillFlags.spell then - skillModFlags = bor(skillModFlags, ModFlag.Spell) - elseif skillFlags.attack then + if skillFlags.attack then skillModFlags = bor(skillModFlags, ModFlag.Attack) + else + skillModFlags = bor(skillModFlags, ModFlag.Cast) + if skillFlags.spell then + skillModFlags = bor(skillModFlags, ModFlag.Spell) + end end if skillFlags.melee then skillModFlags = bor(skillModFlags, ModFlag.Melee) @@ -1064,7 +1067,7 @@ local function performCalcs(env) if env.weaponData1.type and env.weaponData2.type then condList["DualWielding"] = true end - if not env.weaponData1.type then + if env.weaponData1.type == "None" then condList["Unarmed"] = true end if (modDB.multipliers["NormalItem"] or 0) > 0 then @@ -1157,14 +1160,14 @@ local function performCalcs(env) -- Merge auxillary modifiers if env.mode_buffs then if activeSkill.buffModList and (not activeSkill.skillFlags.totem or activeSkill.skillData.allowTotemBuff) then + local inc = modDB:Sum("INC", skillCfg, "BuffEffect") if activeSkill.activeGem.data.golem and modDB:Sum("FLAG", skillCfg, "LiegeOfThePrimordial") and (activeSkill.activeGem.data.fire or activeSkill.activeGem.data.cold or activeSkill.activeGem.data.lightning) then - modDB:ScaleAddList(activeSkill.buffModList, 2) - else - modDB:AddList(activeSkill.buffModList) + inc = inc + 100 end + modDB:ScaleAddList(activeSkill.buffModList, 1 + inc / 100) end if activeSkill.auraModList then - local inc = modDB:Sum("INC", skillCfg, "AuraEffect") + skillModList:Sum("INC", skillCfg, "AuraEffect") + local inc = modDB:Sum("INC", skillCfg, "AuraEffect") + skillModList:Sum("INC", skillCfg, "AuraEffect") + modDB:Sum("INC", skillCfg, "BuffEffect") local more = modDB:Sum("MORE", skillCfg, "AuraEffect") * skillModList:Sum("MORE", skillCfg, "AuraEffect") modDB:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) modDB:ScaleAddList(extraAuraModList, (1 + inc / 100) * more) @@ -1269,12 +1272,13 @@ local function performCalcs(env) -- Add misc buffs if env.mode_combat then if condList["Onslaught"] then - local effect = m_floor(20 * (1 + modDB:Sum("INC", nil, "OnslaughtEffect") / 100)) + local effect = m_floor(20 * (1 + modDB:Sum("INC", nil, "OnslaughtEffect", "BuffEffect") / 100)) modDB:NewMod("Speed", "INC", effect, "Onslaught") modDB:NewMod("MovementSpeed", "INC", effect, "Onslaught") end if condList["UnholyMight"] then - modDB:NewMod("PhysicalDamageGainAsChaos", "BASE", 30, "Unholy Might") + local effect = m_floor(30 * (1 + modDB:Sum("INC", nil, "BuffEffect") / 100)) + modDB:NewMod("PhysicalDamageGainAsChaos", "BASE", effect, "Unholy Might") end end diff --git a/Modules/Data.lua b/Modules/Data.lua index 39d6dc6e..ac1ab138 100644 --- a/Modules/Data.lua +++ b/Modules/Data.lua @@ -13,11 +13,12 @@ ModFlag.Attack = 0x00000001 ModFlag.Spell = 0x00000002 ModFlag.Hit = 0x00000004 ModFlag.Dot = 0x00000008 +ModFlag.Cast = 0x00000010 -- Damage sources -ModFlag.Melee = 0x00000010 -ModFlag.Area = 0x00000020 -ModFlag.Projectile = 0x00000040 -ModFlag.SourceMask = 0x00000060 +ModFlag.Melee = 0x00000100 +ModFlag.Area = 0x00000200 +ModFlag.Projectile = 0x00000400 +ModFlag.SourceMask = 0x00000600 -- Weapon types ModFlag.Axe = 0x00001000 ModFlag.Bow = 0x00002000 diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index 85357316..34b9948f 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -125,6 +125,7 @@ local modNameList = { ["curse duration"] = { "Duration", keywordFlags = KeywordFlag.Curse }, ["radius of auras"] = { "AreaRadius", keywordFlags = KeywordFlag.Aura }, ["radius of curses"] = { "AreaRadius", keywordFlags = KeywordFlag.Curse }, + ["effect of buffs on you"] = "BuffEffect", -- Charges ["maximum power charge"] = "PowerChargesMax", ["maximum power charges"] = "PowerChargesMax", @@ -207,7 +208,7 @@ local modNameList = { ["critical strike multiplier"] = "CritMultiplier", ["accuracy rating"] = "Accuracy", ["attack speed"] = { "Speed", flags = ModFlag.Attack }, - ["cast speed"] = { "Speed", flags = ModFlag.Spell }, + ["cast speed"] = { "Speed", flags = ModFlag.Cast }, ["attack and cast speed"] = "Speed", -- Elemental status ailments ["to shock"] = "EnemyShockChance", diff --git a/README.md b/README.md index ff745ce3..edf0c0bf 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,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.3.2 - 2017/02/18 + * Added support for the "increased Effect of Buffs on You" modifier on Ichimonji + * Added basic support for Detonate Dead; only the base damage is used + * Fixed issue preventing Unarmed from being correctly detected + ### 1.3.1 - 2017/02/18 * Added socket count to the tooltips in the passive tree selection dropdown menu * Added percentage values to the per-point stat differences for passive nodes diff --git a/changelog.txt b/changelog.txt index b686f4ff..c140672d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +VERSION[1.3.2][2017/02/18] + * Added support for the "increased Effect of Buffs on You" modifier on Ichimonji + * Added basic support for Detonate Dead; only the base damage is used + * Fixed issue preventing Unarmed from being correctly detected VERSION[1.3.1][2017/02/18] * Added socket count to the tooltips in the passive tree selection dropdown menu * Added percentage values to the per-point stat differences for passive nodes diff --git a/manifest.xml b/manifest.xml index a1b9d296..6ecff980 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,13 +1,13 @@ - + - + @@ -44,13 +44,13 @@ - + - + - + @@ -58,13 +58,13 @@ - - - - - - - + + + + + + +