diff --git a/Classes/ConfigTab.lua b/Classes/ConfigTab.lua index 5065e2ea..9e4f8675 100644 --- a/Classes/ConfigTab.lua +++ b/Classes/ConfigTab.lua @@ -17,6 +17,9 @@ local varList = { { var = "conditionFullLife", type = "check", label = "Are you always on Full Life?", ifCond = "FullLife", tooltip = "You will automatically be considered to be on Full Life if you have Chaos Innoculation,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "FullLife" }, "Config") end }, + { var = "conditionFullEnergyShield", type = "check", label = "Are you always on Full Energy Shield?", ifCond = "FullES", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "FullEnergyShield" }, "Config") + end }, { var = "igniteMode", type = "list", label = "Ignite calculation mode:", tooltip = "Controls how the base damage for ignite is calculated:\nAverage Damage: Ignite is based on the average damage dealt, factoring in crits and non-crits.\nCrit Damage: Ignite is based on crit damage only.", list = {{val="AVERAGE",label="Average Damage"},{val="CRIT",label="Crit Damage"}} }, { section = "When In Combat" }, { var = "usePowerCharges", type = "check", label = "Do you use Power Charges?" }, @@ -37,6 +40,9 @@ local varList = { { var = "conditionUsingFlask", type = "check", label = "Do you have a Flask active?", ifCond = "UsingFlask", tooltip = "This is automatically enabled if you have a flask active,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsingFlask" }, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionHaveTotem", type = "check", label = "Do you have a Totem summoned?", ifCond = "HaveTotem", tooltip = "You will automatically be considered to have a Totem if your main skill is a Totem,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "HaveTotem" }, "Config", { type = "Condition", var = "Combat" }) + end }, { var = "conditionOnConsecratedGround", type = "check", label = "Are you on Consecrated Ground?", tooltip = "In addition to allowing any 'while on Consecrated Ground' modifiers to apply,\nthis will apply the 4% life regen modifier granted by Consecrated Ground.", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "OnConsecratedGround" }, "Config", { type = "Condition", var = "Combat" }) end }, @@ -85,6 +91,15 @@ local varList = { { var = "conditionBeenSavageHitRecently", type = "check", label = "Have you been Savage Hit Recently?", ifCond = "BeenSavageHitRecently", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "BeenSavageHitRecently" }, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionHitByFireDamageRecently", type = "check", label = "Have you been hit by Fire Recently?", ifCond = "HitByFireDamageRecently", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "HitByFireDamageRecently" }, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionHitByColdDamageRecently", type = "check", label = "Have you been hit by Cold Recently?", ifCond = "HitByColdDamageRecently", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "HitByColdDamageRecently" }, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionHitByLightningDamageRecently", type = "check", label = "Have you been hit by Light. Recently?", ifCond = "HitByLightningDamageRecently", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "HitByLightningDamageRecently" }, "Config", { type = "Condition", var = "Combat" }) + end }, { var = "conditionBlockedRecently", type = "check", label = "Have you Blocked Recently?", ifCond = "BlockedRecently", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "BlockedRecently" }, "Config", { type = "Condition", var = "Combat" }) end }, @@ -97,6 +112,12 @@ local varList = { { var = "conditionCastSpellRecently", type = "check", label = "Have you Cast a Spell Recently?", ifNode = 3154, tooltip = "You will automatically be considered to have Cast a Spell Recently if your main skill is a spell,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "CastSpellRecently" }, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionUsedWarcryRecently", type = "check", label = "Have you used a Warcry Recently?", ifCond = "UsedWarcryRecently", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsedWarcryRecently" }, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionConsumedCorpseRecently", type = "check", label = "Consumed a corpse Recently?", ifCond = "ConsumedCorpseRecently", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "ConsumedCorpseRecently" }, "Config", { type = "Condition", var = "Combat" }) + end }, { var = "conditionUsedFireSkillInPast10Sec", type = "check", label = "Used a Fire Skill in the past 10s?", ifNode = 61259, apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsedFireSkillInPast10Sec" }, "Config", { type = "Condition", var = "Combat" }) end }, diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 60d9abc8..e0840db2 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -1103,6 +1103,7 @@ local function performCalcs(env) condList["UsedMovementSkillRecently"] = true end if env.mainSkill.skillFlags.totem then + condList["HaveTotem"] = true condList["SummonedTotemRecently"] = true end if env.mainSkill.skillFlags.mine then @@ -1180,6 +1181,7 @@ local function performCalcs(env) if activeSkill.curseModList then activeSkill.debuffSkill = true condList["EnemyCursed"] = true + modDB.multipliers["CurseOnEnemy"] = (modDB.multipliers["CurseOnEnemy"] or 0) + 1 local inc = modDB:Sum("INC", skillCfg, "CurseEffect") + enemyDB:Sum("INC", nil, "CurseEffect") + skillModList:Sum("INC", skillCfg, "CurseEffect") local more = modDB:Sum("MORE", skillCfg, "CurseEffect") * enemyDB:Sum("MORE", nil, "CurseEffect") * skillModList:Sum("MORE", skillCfg, "CurseEffect") enemyDB:ScaleAddList(activeSkill.curseModList, (1 + inc / 100) * more) diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index 26d79e0e..2f1b564c 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -288,6 +288,7 @@ local modFlagList = { ["with mines"] = { keywordFlags = KeywordFlag.Mine }, ["trap"] = { keywordFlags = KeywordFlag.Trap }, ["with traps"] = { keywordFlags = KeywordFlag.Trap }, + ["for traps"] = { keywordFlags = KeywordFlag.Trap }, ["totem"] = { keywordFlags = KeywordFlag.Totem }, ["with totem skills"] = { keywordFlags = KeywordFlag.Totem }, ["minion"] = { keywordFlags = KeywordFlag.Minion }, @@ -381,9 +382,11 @@ local modTagList = { ["when on full life"] = { tag = { type = "Condition", var = "FullLife" } }, ["when not on full life"] = { tag = { type = "Condition", var = "FullLife", neg = true } }, ["while no mana is reserved"] = { tag = { type = "Condition", var = "NoManaReserved" } }, + ["while on full energy shield"] = { tag = { type = "Condition", var = "FullEnergyShield" } }, ["while at maximum power charges"] = { tag = { type = "Condition", var = "AtMaxPowerCharges" } }, ["while at maximum frenzy charges"] = { tag = { type = "Condition", var = "AtMaxFrenzyCharges" } }, ["while at maximum endurance charges"] = { tag = { type = "Condition", var = "AtMaxEnduranceCharges" } }, + ["while you have a totem"] = { tag = { type = "Condition", var = "HaveTotem" } }, ["while you have fortify"] = { tag = { type = "Condition", var = "Fortify" } }, ["during onslaught"] = { tag = { type = "Condition", var = "Onslaught" } }, ["while you have onslaught"] = { tag = { type = "Condition", var = "Onslaught" } }, @@ -419,6 +422,7 @@ local modTagList = { ["if you've blocked a hit from a unique enemy recently"] = { tag = { type = "Condition", var = "BlockedHitFromUniqueEnemyRecently" } }, ["if you've attacked recently"] = { tag = { type = "Condition", var = "AttackedRecently" } }, ["if you've cast a spell recently"] = { tag = { type = "Condition", var = "CastSpellRecently" } }, + ["if you have consumed a corpse recently"] = { tag = { type = "Condition", var = "ConsumedCorpseRecently" } }, ["if you've used a fire skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedFireSkillInPast10Sec" } }, ["if you've used a cold skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedColdSkillInPast10Sec" } }, ["if you've used a lightning skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedLightningSkillInPast10Sec" } }, @@ -444,6 +448,7 @@ local modTagList = { ["against chilled enemies"] = { tag = { type = "Condition", var = "EnemyChilled" }, flags = ModFlag.Hit }, ["enemies which are chilled"] = { tag = { type = "Condition", var = "EnemyChilled" }, flags = ModFlag.Hit }, ["against frozen, shocked or ignited enemies"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, + ["against enemies affected by elemental status ailments"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, ["against enemies that are affected by elemental status ailments"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, ["against enemies that are affected by no elemental status ailments"] = { tagList = { { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"}, neg = true }, { type = "Condition", var = "Effective" } }, flags = ModFlag.Hit }, } @@ -492,7 +497,13 @@ local specialModList = { ["armour received from body armour is doubled"] = { flag("Unbreakable") }, ["gain (%d+)%% of maximum mana as extra maximum energy shield"] = function(num) return { mod("ManaGainAsEnergyShield", "BASE", num) } end, ["you have fortify"] = { mod("Misc", "LIST", { type = "Condition", var = "Fortify"}) }, - ["(%d+)%% increased damage of each damage type for which you have a matching golem"] = function(num) return { mod("PhysicalDamage", "INC", num, { type = "Condition", var = "HavePhysicalGolem"}), mod("LightningDamage", "INC", num, { type = "Condition", var = "HaveLightningGolem"}), mod("ColdDamage", "INC", num, { type = "Condition", var = "HaveColdGolem"}), mod("FireDamage", "INC", num, { type = "Condition", var = "HaveFireGolem"}), mod("ChaosDamage", "INC", num, { type = "Condition", var = "HaveChaosGolem"}) } end, + ["(%d+)%% increased damage of each damage type for which you have a matching golem"] = function(num) return { + mod("PhysicalDamage", "INC", num, { type = "Condition", var = "HavePhysicalGolem"}), + mod("LightningDamage", "INC", num, { type = "Condition", var = "HaveLightningGolem"}), + mod("ColdDamage", "INC", num, { type = "Condition", var = "HaveColdGolem"}), + mod("FireDamage", "INC", num, { type = "Condition", var = "HaveFireGolem"}), + mod("ChaosDamage", "INC", num, { type = "Condition", var = "HaveChaosGolem"}) + } end, ["100%% increased effect of buffs granted by your elemental golems"] = { flag("LiegeOfThePrimordial") }, ["every 10 seconds, gain (%d+)%% increased elemental damage for 4 seconds"] = function(num) return { mod("ElementalDamage", "INC", num, { type = "Condition", var = "PendulumOfDestruction" }) } end, ["every 10 seconds, gain (%d+)%% increased radius of area skills for 4 seconds"] = function(num) return { mod("AreaRadius", "INC", num, { type = "Condition", var = "PendulumOfDestruction" }) } end, @@ -514,6 +525,20 @@ local specialModList = { ["non%-critical strikes penetrate (%d+)%% of enemy elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, { type = "Condition", var = "CriticalStrike", neg = true }) } end, ["movement speed cannot be modified to below base value"] = { flag("MovementSpeedCannotBeBelowBase") }, ["your offering skills also affect you"] = { flag("OfferingsAffectPlayer") }, + ["consecrated ground you create grants (%d+)%% increased damage to you and allies"] = function(num) return { mod("Damage", "INC", num, { type = "Condition", var = "OnConsecratedGround" }) } end, + ["for each element you've been hit by damage of recently, (%d+)%% increased damage of that element"] = function(num) return { + mod("FireDamage", "INC", num, { type = "Condition", var = "HitByFireDamageRecently" }), + mod("ColdDamage", "INC", num, { type = "Condition", var = "HitByColdDamageRecently" }), + mod("LightningDamage", "INC", num, { type = "Condition", var = "HitByLightningDamageRecently" }) + } end, + ["when you kill an enemy, for each curse on that enemy, gain (%d+)%% of non%-chaos damage as extra chaos damage for 4 seconds"] = function(num) return { + mod("PhysicalDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), + mod("LightningDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), + mod("ColdDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), + mod("FireDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }) + } end, + ["you and nearby allies have (%d+)%% increased attack, cast and movement speed if you've used a warcry recently"] = function(num) return { mod("Speed", "INC", num, { type = "Condition", var = "UsedWarcryRecently" }), mod("MovementSpeed", "INC", num, { type = "Condition", var = "UsedWarcryRecently" }) } end, + ["warcries cost no mana"] = { mod("ManaCost", "MORE", -100, nil, 0, KeywordFlag.Warcry) }, -- Special node types ["(%d+)%% of block chance applied to spells"] = function(num) return { mod("BlockChanceConv", "BASE", num) } end, ["(%d+)%% additional block chance with staves"] = function(num) return { mod("BlockChance", "BASE", num, { type = "Condition", var = "UsingStaff" }) } end, diff --git a/README.md b/README.md index c56e6821..9f2a5ddb 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,17 @@ 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.5 - 2017/02/21 + * Added support for the extra Chaos Damage from Malediction + * The bonus only applies with "Have you killed Recently?" enabled, and scales based on the number of active curse skills + * Added options to the Configuration tab for: + * Are you always on Full Energy Shield? + * Do you have a Totem summoned? + * Have you been hit by Fire/Cold/Lightning Recently? (for Paragon of Calamity) + * Have you used a Warcry Recently? + * Consumed a corpse Recently? + * Added support for the "Consecrated Ground grants 40% increased Damage" modifier from Sanctify + ### 1.3.4 - 2017/02/20 * Added support for the Offering skills and Mistress of Sacrifice diff --git a/changelog.txt b/changelog.txt index 1c226801..c28af1f6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,13 @@ +VERSION[1.3.5][2017/02/21] + * Added support for the extra Chaos Damage from Malediction + * The bonus only applies with "Have you killed Recently?" enabled, and scales based on the number of active curse skills + * Added options to the Configuration tab for: + * Are you always on Full Energy Shield? + * Do you have a Totem summoned? + * Have you been hit by Fire/Cold/Lightning Recently? (for Paragon of Calamity) + * Have you used a Warcry Recently? + * Consumed a corpse Recently? + * Added support for the "Consecrated Ground grants 40% increased Damage" modifier from Sanctify VERSION[1.3.4][2017/02/20] * Added support for the Offering skills and Mistress of Sacrifice VERSION[1.3.3][2017/02/19] diff --git a/manifest.xml b/manifest.xml index da415025..fd7120db 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,20 +1,20 @@ - + - + - + @@ -44,13 +44,13 @@ - + - +