diff --git a/Classes/ItemDBControl.lua b/Classes/ItemDBControl.lua index 73ffb091..7feef043 100644 --- a/Classes/ItemDBControl.lua +++ b/Classes/ItemDBControl.lua @@ -78,12 +78,18 @@ function ItemDBClass:DoesItemMatchFilters(item) local typeSel = self.controls.type.selIndex if typeSel > 1 then if typeSel == 2 then - return item.base.armour + if not item.base.armour then + return false + end elseif typeSel == 3 then - return item.type == "Amulet" or item.type == "Ring" or item.type == "Belt" + if not (item.type == "Amulet" or item.type == "Ring" or item.type == "Belt") then + return false + end elseif typeSel == 4 or typeSel == 5 then local weaponInfo = self.itemsTab.build.data.weaponTypeInfo[item.type] - return weaponInfo and weaponInfo.melee and ((typeSel == 4 and weaponInfo.oneHand) or (typeSel == 5 and not weaponInfo.oneHand)) + if not (weaponInfo and weaponInfo.melee and ((typeSel == 4 and weaponInfo.oneHand) or (typeSel == 5 and not weaponInfo.oneHand))) then + return false + end elseif item.type ~= self.typeList[typeSel] then return false end diff --git a/Data/3_0/Skills/act_dex.lua b/Data/3_0/Skills/act_dex.lua index e6105be4..e20db518 100644 --- a/Data/3_0/Skills/act_dex.lua +++ b/Data/3_0/Skills/act_dex.lua @@ -1246,6 +1246,7 @@ skills["Desecrate"] = { skill("duration", 5), --"base_skill_effect_duration" = 5000 --"desecrate_number_of_corpses_to_create" = 3 --"is_area_damage" = ? + skill("dotIsArea", true), }, qualityMods = { mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 @@ -1985,6 +1986,7 @@ skills["FireTrap"] = { --"base_skill_is_trapped" = ? skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? skill("trapCooldown", 3), + skill("dotIsArea", true), skill("radius", 15), }, qualityMods = { @@ -3657,6 +3659,7 @@ skills["Puncture"] = { skill("manaCost", 6), --"skill_can_fire_arrows" = ? mod("BleedChance", "BASE", 100), --"global_bleed_on_hit" = ? + skill("bleedIsSkillEffect", true), }, qualityMods = { mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 @@ -4898,6 +4901,7 @@ skills["ViperStrike"] = { mod("PoisonChance", "BASE", 100), --"base_chance_to_poison_on_hit_%" = 100 skill("duration", 8), --"base_skill_effect_duration" = 8000 skill("poisonDurationIsSkillDuration", true), --"poison_duration_is_skill_duration" = ? + skill("poisonIsSkillEffect", true), }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 diff --git a/Data/3_0/Skills/act_int.lua b/Data/3_0/Skills/act_int.lua index 13368b07..0f2bc97a 100644 --- a/Data/3_0/Skills/act_int.lua +++ b/Data/3_0/Skills/act_int.lua @@ -1897,6 +1897,7 @@ skills["FlameDash"] = { skill("duration", 4), --"base_skill_effect_duration" = 4000 --"is_area_damage" = ? --"firestorm_use_server_effects" = ? + skill("dotIsArea", true), }, qualityMods = { mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 @@ -4226,6 +4227,7 @@ skills["RighteousFire"] = { mod("FireDegen", "BASE", 0.9, 0, 0, { type = "PerStat", stat = "Life", div = 1}, { type = "GlobalEffect", effectType = "Buff" }), --"base_nonlethal_fire_damage_%_of_maximum_life_taken_per_minute" = 5400 --"base_righteous_fire_%_of_max_energy_shield_to_deal_to_nearby_per_minute" = 3000 mod("FireDegen", "BASE", 0.7, 0, 0, { type = "PerStat", stat = "EnergyShield", div = 1}, { type = "GlobalEffect", effectType = "Buff" }), --"base_nonlethal_fire_damage_%_of_maximum_energy_shield_taken_per_minute" = 4200 + skill("dotIsArea", true), skill("radius", 18), }, qualityMods = { @@ -5368,6 +5370,7 @@ skills["FrostBoltNova"] = { --"active_skill_if_used_through_frostbolt_damage_+%_final" = 40 --"is_area_damage" = ? skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_skill_dot" = ? + skill("dotIsArea", true), }, qualityMods = { mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 diff --git a/Data/3_0/Skills/sup_str.lua b/Data/3_0/Skills/sup_str.lua index 03f943b0..770a04d2 100644 --- a/Data/3_0/Skills/sup_str.lua +++ b/Data/3_0/Skills/sup_str.lua @@ -455,11 +455,11 @@ skills["SupportWeaponElementalDamage"] = { mod("ManaCost", "MORE", 40), }, qualityMods = { - mod("ElementalDamage", "INC", 0.5, ModFlag.Attack), --"elemental_damage_with_attack_skills_+%" = 0.5 + mod("ElementalDamage", "INC", 0.5, 0, KeywordFlag.Attack), --"elemental_damage_with_attack_skills_+%" = 0.5 }, levelMods = { [1] = nil, - [2] = mod("ElementalDamage", "MORE", nil, ModFlag.Attack), --"support_attack_skills_elemental_damage_+%_final" + [2] = mod("ElementalDamage", "MORE", nil, 0, KeywordFlag.Attack), --"support_attack_skills_elemental_damage_+%_final" }, levels = { [1] = { 18, 35, }, diff --git a/Export/Skills/act_dex.txt b/Export/Skills/act_dex.txt index 3ee2283d..f6070d37 100644 --- a/Export/Skills/act_dex.txt +++ b/Export/Skills/act_dex.txt @@ -137,6 +137,7 @@ local skills, mod, flag, skill = ... #skill Desecrate #flags spell area duration chaos +#baseMod skill("dotIsArea", true) #mods #skill DetonateDead @@ -229,6 +230,7 @@ local skills, mod, flag, skill = ... #skill FireTrap #flags spell trap area duration fire #baseMod skill("trapCooldown", 3) +#baseMod skill("dotIsArea", true) #baseMod skill("radius", 15) #mods @@ -383,6 +385,7 @@ local skills, mod, flag, skill = ... #skill Puncture #flags attack melee projectile duration +#baseMod skill("bleedIsSkillEffect", true) #mods #skill ColdResistAura @@ -469,6 +472,7 @@ local skills, mod, flag, skill = ... #skill ViperStrike #flags attack melee duration chaos +#baseMod skill("poisonIsSkillEffect", true) #mods #skill WhirlingBlades diff --git a/Export/Skills/act_int.txt b/Export/Skills/act_int.txt index 2add9a3f..eec16849 100644 --- a/Export/Skills/act_int.txt +++ b/Export/Skills/act_int.txt @@ -156,6 +156,7 @@ local skills, mod, flag, skill = ... #skill FlameDash #flags spell area duration movement fire +#baseMod skill("dotIsArea", true) #mods #skill FlameWhip @@ -354,6 +355,7 @@ local skills, mod, flag, skill = ... actor.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 end end, +#baseMod skill("dotIsArea", true) #baseMod skill("radius", 18) #mods @@ -468,6 +470,7 @@ local skills, mod, flag, skill = ... #skill FrostBoltNova #flags spell area duration cold +#baseMod skill("dotIsArea", true) #mods #skill Vulnerability diff --git a/Export/Skills/statmap.ini b/Export/Skills/statmap.ini index 9b5263e7..1a797acc 100644 --- a/Export/Skills/statmap.ini +++ b/Export/Skills/statmap.ini @@ -408,7 +408,7 @@ mod = mod("Accuracy", "BASE", {val}, 0, 0, {curse}) [accuracy_rating_+%] mod = mod("Accuracy", "INC", {val}, 0, 0, {curse}) [elemental_damage_with_attack_skills_+%] -mod = mod("ElementalDamage", "INC", {val}, ModFlag.Attack) +mod = mod("ElementalDamage", "INC", {val}, 0, KeywordFlag.Attack) [attack_minimum_added_physical_damage] mod = mod("PhysicalMin", "BASE", {val}, ModFlag.Attack, 0, {global}) [attack_maximum_added_physical_damage] @@ -713,7 +713,7 @@ mod = mod("Damage", "MORE", {val}, ModFlag.Spell) mod = mod("Damage", "MORE", {val}) # Elemental Damage with Attacks [support_attack_skills_elemental_damage_+%_final] -mod = mod("ElementalDamage", "MORE", {val}, ModFlag.Attack) +mod = mod("ElementalDamage", "MORE", {val}, 0, KeywordFlag.Attack) # Elemental Focus [support_gem_elemental_damage_+%_final] mod = mod("ElementalDamage", "MORE", {val}) diff --git a/Modules/CalcActiveSkill.lua b/Modules/CalcActiveSkill.lua index 28e0e1b0..27859d5f 100644 --- a/Modules/CalcActiveSkill.lua +++ b/Modules/CalcActiveSkill.lua @@ -444,7 +444,9 @@ function calcs.buildActiveSkillModList(env, actor, activeSkill) for d = 1, #activeSkill[destList] do local destMod = activeSkill[destList][d] if sig == modLib.formatModParams(destMod) and (destMod.type == "BASE" or destMod.type == "INC") then + destMod = copyTable(destMod) destMod.value = destMod.value + skillModList[i].value + activeSkill[destList][d] = destMod sig = nil break end diff --git a/Modules/CalcOffence-3_0.lua b/Modules/CalcOffence-3_0.lua index 7fd5b335..067e38a8 100644 --- a/Modules/CalcOffence-3_0.lua +++ b/Modules/CalcOffence-3_0.lua @@ -1277,7 +1277,7 @@ function calcs.offence(env, actor) end end output.BleedDPS = baseVal * effMult - local durationMod = calcLib.mod(modDB, dotCfg, "EnemyBleedDuration") * calcLib.mod(enemyDB, nil, "SelfBleedDuration") + local durationMod = calcLib.mod(modDB, dotCfg, "EnemyBleedDuration", skillData.bleedIsSkillEffect and "Duration" or nil) * calcLib.mod(enemyDB, nil, "SelfBleedDuration") globalOutput.BleedDuration = 5 * durationMod * debuffDurationMult if breakdown then t_insert(breakdown.BleedDPS, s_format("x %.2f ^8(bleed deals %d%% per second)", basePercent/100, basePercent)) @@ -1353,7 +1353,7 @@ function calcs.offence(env, actor) else durationBase = 2 end - local durationMod = calcLib.mod(modDB, dotCfg, "EnemyPoisonDuration") * calcLib.mod(enemyDB, nil, "SelfPoisonDuration") + local durationMod = calcLib.mod(modDB, dotCfg, "EnemyPoisonDuration", skillData.poisonIsSkillEffect and "Duration" or nil) * calcLib.mod(enemyDB, nil, "SelfPoisonDuration") globalOutput.PoisonDuration = durationBase * durationMod * debuffDurationMult output.PoisonDamage = output.PoisonDPS * globalOutput.PoisonDuration if skillData.showAverage then @@ -1634,8 +1634,9 @@ function calcs.offence(env, actor) -- Calculate DPS for Essence of Delirium's Decay effect skillFlags.decay = true mainSkill.decayCfg = { + skillName = skillCfg.skillName, slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), + flags = ModFlag.Dot, keywordFlags = skillCfg.keywordFlags, } local dotCfg = mainSkill.decayCfg diff --git a/Modules/CalcSections-3_0.lua b/Modules/CalcSections-3_0.lua index 28de3fe4..7c716f3b 100644 --- a/Modules/CalcSections-3_0.lua +++ b/Modules/CalcSections-3_0.lua @@ -424,7 +424,7 @@ return { { label = "Bleed DPS", { format = "{1:output:BleedDPS}", { breakdown = "BleedDPS" }, { breakdown = "MainHand.BleedDPS" }, { breakdown = "OffHand.BleedDPS" }, }, }, { label = "Bleed Duration", { format = "{2:output:BleedDuration}s", { breakdown = "BleedDuration" }, - { label = "Player modifiers", modName = "Duration", cfg = "bleed" }, + { label = "Player modifiers", modName = "EnemyBleedDuration", cfg = "bleed" }, { label = "Enemy modifiers", modName = "SelfBleedDuration", enemy = true }, }, }, } }, @@ -452,7 +452,7 @@ return { }, }, { label = "Poison Duration", { format = "{2:output:PoisonDuration}s", { breakdown = "PoisonDuration" }, - { label = "Player modifiers", modName = "Duration", cfg = "poison" }, + { label = "Player modifiers", modName = "EnemyPoisonDuration", cfg = "poison" }, { label = "Enemy modifiers", modName = "SelfPoisonDuration", enemy = true }, }, }, { label = "Dmg. per Poison", { format = "{1:output:PoisonDamage}", diff --git a/README.md b/README.md index 86c50eee..b577e761 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,14 @@ If you'd like to help support the development of Path of Building, I have a [Pat ![ss3](https://cloud.githubusercontent.com/assets/19189971/18089780/f0ff234a-6f04-11e6-8c88-6193fe59a5c4.png) ## Changelog +### 1.4.23 - 2017/06/09 + * Fixed issue causing some of the item type filters in the unique and rare databases to disable the other filters +For 3.0 builds: + * Modifiers to Area Damage should now apply to all instances of Area Damage over Time (Righteous Fire, Vortex, etc) + * Modifiers to Skill Effect Duration will now apply to Puncture's Bleed and Viper Strike's Poison + * The Decay calculation has been updated to account for the Damage over Time changes + * Elemental Damage with Attacks now correctly affects Ignite + ### 1.4.22 - 2017/06/09 * Fixed bug causing certain skill stats to be ignored; this notably affected Blade Vortex and Wither For 3.0 builds: diff --git a/changelog.txt b/changelog.txt index fd557738..c7a7e3bd 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,10 @@ +VERSION[1.4.23][2017/06/09] + * Fixed issue causing some of the item type filters in the unique and rare databases to disable the other filters +For 3.0 builds: + * Modifiers to Area Damage should now apply to all instances of Area Damage over Time (Righteous Fire, Vortex, etc) + * Modifiers to Skill Effect Duration will now apply to Puncture's Bleed and Viper Strike's Poison + * The Decay calculation has been updated to account for the Damage over Time changes + * Elemental Damage with Attacks now correctly affects Ignite VERSION[1.4.22][2017/06/09] * Fixed bug causing certain skill stats to be ignored; this notably affected Blade Vortex and Wither For 3.0 builds: diff --git a/manifest.xml b/manifest.xml index eb6a497b..296ecf7c 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,13 +1,13 @@ - + - + @@ -22,7 +22,7 @@ - + @@ -49,15 +49,15 @@ - + - + - + @@ -163,15 +163,15 @@ - - + + - +