From dd1bfbab09f9e6a73f4db851e90474908479a276 Mon Sep 17 00:00:00 2001 From: Openarl Date: Thu, 20 Apr 2017 23:42:50 +1000 Subject: [PATCH] Release 1.4.7 - Added map mod/self curse section to Configuration tab - Added support for Self-Flagellation --- Classes/ConfigTab.lua | 162 +++++++++++++++++++++++----------------- Classes/SkillsTab.lua | 3 + Data/Uniques/sword.lua | 2 +- Modules/CalcDefence.lua | 2 +- Modules/CalcOffence.lua | 17 +++++ Modules/CalcPerform.lua | 7 +- Modules/ModParser.lua | 3 +- README.md | 6 ++ changelog.txt | 5 ++ manifest.xml | 18 ++--- 10 files changed, 142 insertions(+), 83 deletions(-) diff --git a/Classes/ConfigTab.lua b/Classes/ConfigTab.lua index 4cdcc93d..41b4d570 100644 --- a/Classes/ConfigTab.lua +++ b/Classes/ConfigTab.lua @@ -38,7 +38,97 @@ local varList = { { var = "summonLightningGolemEnableWrath", type = "check", label = "Enable Wrath Aura:", ifSkill = "Summon Lightning Golem", apply = function(val, modList, enemyModList) modList:NewMod("SkillData", "LIST", { key = "enable", value = true }, "Config", { type = "SkillId", skillId = "LightningGolemWrath" }) end }, ---[[ { section = "Map Modifiers and Player Debuffs", col = 2 }, + { section = "Map Modifiers and Player Debuffs", col = 2 }, + { label = "Map Prefix Modifiers:" }, + { var = "enemyHasPhysicalReduction", type = "list", label = "Enemy Physical Damage reduction:", tooltip = "'Armoured'", list = {{val=0,label="None"},{val=20,label="20% (Low tier)"},{val=30,label="30% (Mid tier)"},{val=40,label="40% (High tier)"}}, apply = function(val, modList, enemyModList) + enemyModList:NewMod("PhysicalDamageReduction", "INC", val, "Config") + end }, + { var = "enemyIsHexproof", type = "check", label = "Enemy is Hexproof?", tooltip = "'Hexproof'", apply = function(val, modList, enemyModList) + enemyModList:NewMod("Hexproof", "FLAG", true, "Config") + end }, + { var = "enemyHasLessCurseEffectOnSelf", type = "list", label = "Less effect of Curses on Enemy:", tooltip = "'Hexwarded'", list = {{val=0,label="None"},{val=25,label="25% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=60,label="60% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + enemyModList:NewMod("CurseEffectOnSelf", "MORE", -val, "Config") + end + end }, + { var = "enemyCanAvoidPoisonBlindBleed", type = "list", label = "Enemy avoid Poison/Blind/Bleed:", tooltip = "'Impervious'", list = {{val=0,label="None"},{val=25,label="25% (Low tier)"},{val=45,label="45% (Mid tier)"},{val=65,label="65% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + enemyModList:NewMod("AvoidPoison", "BASE", val, "Config") + enemyModList:NewMod("AvoidBleed", "BASE", val, "Config") + end + end }, + { var = "enemyHasResistances", type = "list", label = "Enemy has Elemental/Chaos Resist:", tooltip = "'Resistant'", list = {{val=0,label="None"},{val="LOW",label="20%/15% (Low tier)"},{val="MID",label="30%/20% (Mid tier)"},{val="HIGH",label="40%/25% (High tier)"}}, apply = function(val, modList, enemyModList) + local map = { ["LOW"] = {20,15}, ["MID"] = {30,20}, ["HIGH"] = {40,25} } + if map[val] then + enemyModList:NewMod("ElementalResist", "BASE", map[val][1], "Config") + enemyModList:NewMod("ChaosResist", "BASE", map[val][2], "Config") + end + end }, + { label = "Map Suffix Modifiers:" }, + { var = "playerHasElementalEquilibrium", type = "check", label = "Player has Elemental Equilibrium?", tooltip = "'of Balance'", apply = function(val, modList, enemyModList) + modList:NewMod("Keystone", "LIST", "Elemental Equilibrium", "Config") + end }, + { var = "playerCannotLeech", type = "check", label = "Cannot Leech Life/Mana?", tooltip = "'of Congealment'", apply = function(val, modList, enemyModList) + enemyModList:NewMod("CannotLeechLifeFromSelf", "FLAG", true, "Config") + enemyModList:NewMod("CannotLeechManaFromSelf", "FLAG", true, "Config") + end }, + { var = "playerGainsReducedFlaskCharges", type = "list", label = "Gains reduced Flask Charges:", tooltip = "'of Drought'", list = {{val=0,label="None"},{val=30,label="30% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=50,label="50% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + modList:NewMod("FlaskChargesGained", "INC", -val, "Config") + end + end }, + { var = "playerHasMinusMaxResist", type = "number", label = "-X% maximum Resistances:", tooltip = "'of Exposure'\nMid tier: 5-8%\nHigh tier: 9-12%", apply = function(val, modList, enemyModList) + if val ~= 0 then + modList:NewMod("FireResistMax", "BASE", -val, "Config") + modList:NewMod("ColdResistMax", "BASE", -val, "Config") + modList:NewMod("LightningResistMax", "BASE", -val, "Config") + modList:NewMod("ChaosResistMax", "BASE", -val, "Config") + end + end }, + { var = "playerHasLessAreaOfEffect", type = "list", label = "Less Area of Effect:", tooltip = "'of Impotence'", list = {{val=0,label="None"},{val=15,label="15% (Low tier)"},{val=20,label="20% (Mid tier)"},{val=25,label="25% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + modList:NewMod("AreaOfEffect", "MORE", -val, "Config") + end + end }, + { var = "enemyCanAvoidStatusAilment", type = "list", label = "Enemy avoid Elem. Status Ailments:", tooltip = "'of Insulation'", list = {{val=0,label="None"},{val=30,label="30% (Low tier)"},{val=60,label="60% (Mid tier)"},{val=90,label="90% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + enemyModList:NewMod("AvoidIgnite", "BASE", val, "Config") + enemyModList:NewMod("AvoidShock", "BASE", val, "Config") + enemyModList:NewMod("AvoidFreeze", "BASE", val, "Config") + end + end }, + { var = "enemyHasIncreasedAccuracy", type = "list", label = "Unlucky Dodge/Enemy has inc. Acc.:", tooltip = "'of Miring'", list = {{val=0,label="None"},{val=30,label="30% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=50,label="50% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + modList:NewMod("DodgeChanceIsUnlucky", "FLAG", true, "Config") + enemyModList:NewMod("Accuracy", "INC", val, "Config") + end + end }, + { var = "playerHasLessArmourandBlock", type = "list", label = "Reduced Block Chance/less Armour:", tooltip = "'of Rust'", list = {{val=0,label="None"},{val="LOW",label="20%/20% (Low tier)"},{val="MID",label="30%/25% (Mid tier)"},{val="HIGH",label="40%/30% (High tier)"}}, apply = function(val, modList, enemyModList) + local map = { ["LOW"] = {20,20}, ["MID"] = {30,25}, ["HIGH"] = {40,30} } + if map[val] then + modList:NewMod("BlockChance", "INC", -map[val][1], "Config") + modList:NewMod("Armour", "MORE", -map[val][2], "Config") + end + end }, + { var = "playerHasPointBlank", type = "check", label = "Player has Point Blank?", tooltip = "'of Skirmishing'", apply = function(val, modList, enemyModList) + modList:NewMod("Keystone", "LIST", "Point Blank", "Config") + end }, + { var = "playerHasLessLifeESRecovery", type = "list", label = "Less Recovery of Life & Energy Shield:", tooltip = "'of Smothering'", list = {{val=0,label="None"},{val=20,label="20% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=60,label="60% (High tier)"}}, apply = function(val, modList, enemyModList) + if val ~= 0 then + modList:NewMod("LifeRecovery", "MORE", -val, "Config") + modList:NewMod("EnergyShieldRecovery", "MORE", -val, "Config") + end + end }, + { var = "playerCannotRegenLifeManaEnergyShield", type = "check", label = "Cannot Regen Life/Mana/ES?", tooltip = "'of Stasis'", apply = function(val, modList, enemyModList) + modList:NewMod("NoLifeRegen", "FLAG", true, "Config") + modList:NewMod("NoEnergyShieldRegen", "FLAG", true, "Config") + modList:NewMod("NoManaRegen", "FLAG", true, "Config") + end }, + { var = "enemyTakesReducedExtraCritDamage", type = "number", label = "Enemy takes red. Extra Crit Damage:", tooltip = "'of Toughness'\nLow tier: 25-30%\nMid tier: 31-35%\nHigh tier: 36-40%" , apply = function(val, modList, enemyModList) + if val ~= 0 then + enemyModList:NewMod("SelfCritMultiplier", "INC", -val, "Config") + end + end }, { label = "Player is cursed by:" }, { var = "playerCursedWithAssassinsMark", type = "number", label = "Assassin's Mark:", tooltip = "Sets the level of Assassin's Mark to apply to the player.", apply = function(val, modList, enemyModList) modList:NewMod("ExtraCurse", "LIST", { name = "Assassin's Mark", level = val, applyToPlayer = true }) @@ -64,6 +154,9 @@ local varList = { { var = "playerCursedWithProjectileWeakness", type = "number", label = "Projectile Weakness:", tooltip = "Sets the level of Projectile Weakness to apply to the player.", apply = function(val, modList, enemyModList) modList:NewMod("ExtraCurse", "LIST", { name = "Projectile Weakness", level = val, applyToPlayer = true }) end }, + { var = "playerCursedWithPunishment", type = "number", label = "Punishment:", tooltip = "Sets the level of Punishment to apply to the player.", apply = function(val, modList, enemyModList) + modList:NewMod("ExtraCurse", "LIST", { name = "Punishment", level = val, applyToPlayer = true }) + end }, { var = "playerCursedWithTemporalChains", type = "number", label = "Temporal Chains:", tooltip = "Sets the level of Temporal Chains to apply to the player.\nIn mid tier maps, 'of Temporal Chains' applies level 10.\nIn high tier maps, 'of Temporal Chains' applies level 15.", apply = function(val, modList, enemyModList) modList:NewMod("ExtraCurse", "LIST", { name = "Temporal Chains", level = val, applyToPlayer = true }) end }, @@ -73,73 +166,6 @@ local varList = { { var = "playerCursedWithWarlordsMark", type = "number", label = "Warlord's Mark:", tooltip = "Sets the level of Warlord's Mark to apply to the player.", apply = function(val, modList, enemyModList) modList:NewMod("ExtraCurse", "LIST", { name = "Warlord's Mark", level = val, applyToPlayer = true }) end }, - { label = "Map Prefix Modifiers:" }, - { var = "enemyHasPhysicalReduction", type = "list", label = "Enemy Physical Damage reduction:", list = {{val=0,label="No"},{val=20,label="20% (Low tier)"},{val=30,label="30% (Mid tier)"},{val=40,label="40% (High tier)"}}, apply = function(val, modList, enemyModList) - enemyModList:NewMod("PhysicalDamageReduction", "INC", val, "Config") - end }, - { var = "enemyHasLessCurseEffectOnSelf", type = "list", label = "Less effect of Curses on Enemy:", list = {{val=0,label="No"},{val=25,label="25% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=60,label="60% (High tier)"}}, apply = function(val, modList, enemyModList) - if val ~= 0 then - enemyModList:NewMod("CurseEffectOnSelf", "MORE", -val, "Config") - end - end }, - { label = "Map Suffix Modifiers:" }, - { var = "playerHasElementalEquilibrium", type = "check", label = "Player has Elemental Equilibrium?", apply = function(val, modList, enemyModList) - modList:NewMod("Keystone", "LIST", "Elemental Equilibrium", "Config") - end }, - { var = "playerHasPointBlank", type = "check", label = "Player has Point Blank?", apply = function(val, modList, enemyModList) - modList:NewMod("Keystone", "LIST", "Point Blank", "Config") - end }, - { var = "playerGainsReducedFlaskCharges", type = "list", label = "Gains reduced Flask Charges:", list = {{val=0,label="No"},{val=30,label="30% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=50,label="50% (High tier)"}}, apply = function(val, modList, enemyModList) - if val ~= 0 then - modList:NewMod("FlaskChargesGained", "INC", -val, "Config") - end - end }, - { var = "playerHasLessAreaOfEffect", type = "list", label = "Less Area of Effect:", list = {{val=0,label="No"},{val=15,label="15% (Low tier)"},{val=20,label="20% (Mid tier)"},{val=25,label="25% (High tier)"}}, apply = function(val, modList, enemyModList) - if val ~= 0 then - modList:NewMod("AreaOfEffect", "MORE", -val, "Config") - end - end }, - { var = "enemyHasIncreasedAccuracy", type = "list", label = "Unlucky Dodge/Enemy has inc. Acc.:", list = {{val=0,label="No"},{val=30,label="30% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=50,label="50% (High tier)"}}, apply = function(val, modList, enemyModList) - if val ~= 0 then - modList:NewMod("DodgeChanceIsUnlucky", "FLAG", true, "Config") - enemyModList:NewMod("Accuracy", "INC", val, "Config") - end - end }, - { var = "playerHasLessArmourandBlock", type = "list", label = "Reduced Block Chance/less Armour:", list = {{val=0,label="No"},{val="LOW",label="20%/20% (Low tier)"},{val="MID",label="30%/25% (Mid tier)"},{val="HIGH",label="40%/30% (High tier)"}}, apply = function(val, modList, enemyModList) - local map = { ["LOW"] = {20,20}, ["MID"] = {30,25}, ["HIGH"] = {40,30} } - if map[val] then - modList:NewMod("BlockChance", "INC", -map[val][1], "Config") - modList:NewMod("Armour", "LESS", -map[val][2], "Config") - end - end }, - { var = "playerHasLessLifeESRecovery", type = "list", label = "Less Recovery of Life & Energy Shield:", list = {{val=0,label="No"},{val=20,label="20% (Low tier)"},{val=40,label="40% (Mid tier)"},{val=60,label="60% (High tier)"}}, apply = function(val, modList, enemyModList) - if val ~= 0 then - modList:NewMod("LifeRecovery", "MORE", -val, "Config") - modList:NewMod("EnergyShieldRecovery", "MORE", -val, "Config") - end - end }, - { var = "enemyTakesReducedExtraCritDamage", type = "number", label = "Enemy takes red. Extra Crit Damage:", tooltip = "Low tier: 25-30%\nMid tier: 31-35%\nHigh tier: 36-40%" , apply = function(val, modList, enemyModList) - if val ~= 0 then - enemyModList:NewMod("SelfCritMultiplier", "INC", -val, "Config") - end - end }, - { var = "playerHasMinusMaxResist", type = "number", label = "-X% maximum Resistances:", tooltip = "Mid tier: 5-8%\nHigh tier: 9-12%", apply = function(val, modList, enemyModList) - if val ~= 0 then - modList:NewMod("FireResistMax", "BASE", -val, "Config") - modList:NewMod("ColdResistMax", "BASE", -val, "Config") - modList:NewMod("LightningResistMax", "BASE", -val, "Config") - modList:NewMod("ChaosResistMax", "BASE", -val, "Config") - end - end }, - { var = "playerCannotRegenLifeManaEnergyShield", type = "check", label = "Cannot Regen Life/Mana/ES?", apply = function(val, modList, enemyModList) - modList:NewMod("NoLifeRegen", "FLAG", true, "Config") - modList:NewMod("NoEnergyShieldRegen", "FLAG", true, "Config") - modList:NewMod("NoManaRegen", "FLAG", true, "Config") - end }, - { var = "playerCannotLeech", type = "check", label = "Cannot Leech Life/Mana?", apply = function(val, modList, enemyModList) - enemyModList:NewMod("CannotLeechLifeFromSelf", "FLAG", true, "Config") - enemyModList:NewMod("CannotLeechManaFromSelf", "FLAG", true, "Config") - end },]] { section = "When In Combat", col = 1 }, { var = "usePowerCharges", type = "check", label = "Do you use Power Charges?", apply = function(val, modList, enemyModList) modList:NewMod("UsePowerCharges", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) diff --git a/Classes/SkillsTab.lua b/Classes/SkillsTab.lua index 0091991b..7562a1fc 100644 --- a/Classes/SkillsTab.lua +++ b/Classes/SkillsTab.lua @@ -236,6 +236,9 @@ function SkillsTabClass:CreateGemSlot(index) -- Gem name specification slot.nameSpec = common.New("GemSelectControl", nil, 0, 0, 300, 20, self, index, function(buf, addUndo) + if not self.displayGroup then + return + end if not self.displayGroup.gemList[index] then self.displayGroup.gemList[index] = { nameSpec = "", level = 20, quality = 0, enabled = true } slot.level:SetText("20") diff --git a/Data/Uniques/sword.lua b/Data/Uniques/sword.lua index d6370914..c7c341b6 100644 --- a/Data/Uniques/sword.lua +++ b/Data/Uniques/sword.lua @@ -465,7 +465,7 @@ Implicits: 2 {variant:1}18% increased Accuracy Rating {variant:2}40% increased Accuracy Rating +1 to Level of Active Socketed Skill Gems -(60-80)% increased Physical Damage +(40-60)% increased Physical Damage Adds (60-65) to (90-105) Chaos Damage {variant:2}Adds 1 to 2 Physical Damage to Attacks per Level {variant:1}+1 Life gained on Kill per Level diff --git a/Modules/CalcDefence.lua b/Modules/CalcDefence.lua index adba0225..c448a2c2 100644 --- a/Modules/CalcDefence.lua +++ b/Modules/CalcDefence.lua @@ -295,7 +295,7 @@ function calcs.defence(env, actor) end output.AttackDodgeChance = m_min(modDB:Sum("BASE", nil, "AttackDodgeChance"), 75) output.SpellDodgeChance = m_min(modDB:Sum("BASE", nil, "SpellDodgeChance"), 75) - if modDB:Sum("FLAG", nil, "DodgeChanceIsUnlucky") then + if env.mode_effective and modDB:Sum("FLAG", nil, "DodgeChanceIsUnlucky") then output.AttackDodgeChance = output.AttackDodgeChance / 100 * output.AttackDodgeChance output.SpellDodgeChance = output.SpellDodgeChance / 100 * output.SpellDodgeChance end diff --git a/Modules/CalcOffence.lua b/Modules/CalcOffence.lua index 79b64bd0..8067a5f2 100644 --- a/Modules/CalcOffence.lua +++ b/Modules/CalcOffence.lua @@ -1047,6 +1047,23 @@ function calcs.offence(env, actor) output.BleedChanceOnHit = 100 - (1 - output.BleedChanceOnHit / 100) * (1 - globalOutput.PierceChance / 100) * 100 output.BleedChanceOnCrit = 100 - (1 - output.BleedChanceOnCrit / 100) * (1 - globalOutput.PierceChance / 100) * 100 end + if env.mode_effective then + local bleedMult = (1 - enemyDB:Sum("BASE", nil, "AvoidBleed") / 100) + output.BleedChanceOnHit = output.BleedChanceOnHit * bleedMult + output.BleedChanceOnCrit = output.BleedChanceOnCrit * bleedMult + local poisonMult = (1 - enemyDB:Sum("BASE", nil, "AvoidPoison") / 100) + output.PoisonChanceOnHit = output.PoisonChanceOnHit * poisonMult + output.PoisonChanceOnCrit = output.PoisonChanceOnCrit * poisonMult + local igniteMult = (1 - enemyDB:Sum("BASE", nil, "AvoidIgnite") / 100) + output.IgniteChanceOnHit = output.IgniteChanceOnHit * igniteMult + output.IgniteChanceOnCrit = output.IgniteChanceOnCrit * igniteMult + local shockMult = (1 - enemyDB:Sum("BASE", nil, "AvoidShock") / 100) + output.ShockChanceOnHit = output.ShockChanceOnHit * shockMult + output.ShockChanceOnCrit = output.ShockChanceOnCrit * shockMult + local freezeMult = (1 - enemyDB:Sum("BASE", nil, "AvoidFreeze") / 100) + output.FreezeChanceOnHit = output.FreezeChanceOnHit * freezeMult + output.FreezeChanceOnCrit = output.FreezeChanceOnCrit * freezeMult + end local function calcSecondaryEffectBase(type, sourceHitDmg, sourceCritDmg) -- Calculate the inflict chance and base damage of a secondary effect (bleed/poison/ignite/shock/freeze) diff --git a/Modules/CalcPerform.lua b/Modules/CalcPerform.lua index 669cc0c5..4f73d3d6 100644 --- a/Modules/CalcPerform.lua +++ b/Modules/CalcPerform.lua @@ -524,7 +524,8 @@ function calcs.perform(env) srcList:ScaleAddList(activeSkill.debuffModList, activeSkill.skillData.stackCount or 1) mergeBuff(srcList, debuffs, activeSkill.activeGem.name) end - if activeSkill.curseModList or (activeSkill.skillFlags.curse and activeSkill.buffModList) then + if (activeSkill.curseModList or (activeSkill.skillFlags.curse and activeSkill.buffModList)) + and (not enemyDB:Sum("FLAG", nil, "Hexproof") or modDB:Sum("FLAG", nil, "CursesIgnoreHexproof")) then local curse = { name = activeSkill.activeGem.name, fromPlayer = true, @@ -557,7 +558,7 @@ function calcs.perform(env) for _, activeSkill in ipairs(activeSkill.minion.activeSkillList) do local skillModList = activeSkill.skillModList local skillCfg = activeSkill.skillCfg - if activeSkill.curseModList and activeSkill.skillData.enable then + if activeSkill.curseModList and activeSkill.skillData.enable and not enemyDB:Sum("FLAG", nil, "Hexproof") then local curse = { name = activeSkill.activeGem.name, priority = 1, @@ -594,7 +595,7 @@ function calcs.perform(env) -- Sources for curses on the player don't usually respect any kind of limit, so there's little point bothering with slots modDB.multipliers["CurseOnSelf"] = (modDB.multipliers["CurseOnSelf"] or 0) + 1 modDB:ScaleAddList(curseModList, (1 + modDB:Sum("INC", nil, "CurseEffectOnSelf") / 100) * modDB:Sum("MORE", nil, "CurseEffectOnSelf")) - else + elseif not enemyDB:Sum("FLAG", nil, "Hexproof") or modDB:Sum("FLAG", nil, "CursesIgnoreHexproof") then local curse = { name = value.name, fromPlayer = true, diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index c27b9417..64851636 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -429,7 +429,7 @@ local modTagList = { ["for each rare item you have equipped"] = { tag = { type = "Multiplier", var = "RareItem" } }, ["for each unique item you have equipped"] = { tag = { type = "Multiplier", var = "UniqueItem" } }, ["per curse on enemy"] = { tag = { type = "Multiplier", var = "CurseOnEnemy" } }, - ["per curse on you"] = { tag = { type = "Multiplier", var = "CurseOnPlayer" } }, + ["per curse on you"] = { tag = { type = "Multiplier", var = "CurseOnSelf" } }, ["to you and allies"] = { }, -- Per stat ["per (%d+) strength"] = function(num) return { tag = { type = "PerStat", stat = "Str", div = num } } end, @@ -841,6 +841,7 @@ local specialModList = { ["deal no elemental damage"] = { flag("DealNoLightning"), flag("DealNoCold"), flag("DealNoFire") }, ["attacks have blood magic"] = { flag("SkillBloodMagic", nil, ModFlag.Attack) }, ["socketed lightning spells have (%d+)%% increased spell damage if triggered"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Spell, { type = "SocketedIn", keyword = "lightning" }, { type = "Condition", var = "SkillIsTriggered" }) } end, + ["your curses can apply to hexproof enemies"] = { flag("CursesIgnoreHexproof") }, -- Skill-specific enchantment modifiers ["(%d+)%% increased decoy totem life"] = function(num) return { mod("TotemLife", "INC", num, { type = "SkillName", skillName = "Decoy Totem" }) } end, ["(%d+)%% increased ice spear critical strike chance in second form"] = function(num) return { mod("CritChance", "INC", num, { type = "SkillName", skillName = "Ice Spear" }, { type = "SkillPart", skillPart = 2 }) } end, diff --git a/README.md b/README.md index 89b821d1..7d6fad52 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ 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.4.7 - 2017/04/20 + * A new section has been added to the Configuration tab for Map Modifiers and Player Debuffs + * This section contains options for simulating many map modifiers, as well as self-curses + * Added support for Self-Flagellation + * Corrected the range of the increased Physical Damage modifier on Edge of Madness + ### 1.4.6 - 2017/04/20 * Fixed bug introduced in 1.4.5 that prevented Onslaught and Unholy Might from applying correctly * The minion modifiers on the jewel templates are now correctly hidden when their value is set to 0 diff --git a/changelog.txt b/changelog.txt index aac39b1e..a48869f7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,8 @@ +VERSION[1.4.7][2017/04/20] + * A new section has been added to the Configuration tab for Map Modifiers and Player Debuffs + * This section contains options for simulating many map modifiers, as well as self-curses + * Added support for Self-Flagellation + * Corrected the range of the increased Physical Damage modifier on Edge of Madness VERSION[1.4.6][2017/04/20] * Fixed bug introduced in 1.4.5 that prevented Onslaught and Unholy Might from applying correctly * The minion modifiers on the jewel templates are now correctly hidden when their value is set to 0 diff --git a/manifest.xml b/manifest.xml index fc8562f4..b61a2b2f 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,20 +1,20 @@ - + - + - + @@ -38,7 +38,7 @@ - + @@ -47,9 +47,9 @@ - - - + + + @@ -58,7 +58,7 @@ - + @@ -115,7 +115,7 @@ - +