diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 3f004bd17..c91694c01 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -4533,8 +4533,7 @@ c["Cannot be Blinded while on Full Life"]={{[1]={[1]={type="Condition",var="Full c["Cannot be Critically Hit while Parrying"]={nil,"Cannot be Critically Hit while Parrying "} c["Cannot be Heavy Stunned while Sprinting"]={{[1]={[1]={type="Condition",var="Sprinting"},flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil} c["Cannot be Ignited"]={{[1]={flags=0,keywordFlags=0,name="IgniteImmune",type="FLAG",value=true}},nil} -c["Cannot be Light Stunned"]={nil,"Cannot be Light Stunned "} -c["Cannot be Light Stunned Cannot Dodge Roll or Sprint"]={nil,"Cannot be Light Stunned Cannot Dodge Roll or Sprint "} +c["Cannot be Light Stunned"]={{[1]={flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil} c["Cannot be Light Stunned if you haven't been Hit Recently"]={nil,"Cannot be Light Stunned if you haven't been Hit Recently "} c["Cannot be Poisoned"]={{[1]={flags=0,keywordFlags=0,name="PoisonImmune",type="FLAG",value=true}},nil} c["Cannot be Shocked"]={{[1]={flags=0,keywordFlags=0,name="ShockImmune",type="FLAG",value=true}},nil} @@ -4740,8 +4739,7 @@ c["Detonator skills have 8% increased Area of Effect"]={{[1]={[1]={skillType=241 c["Detonator skills have 80% reduced damage"]={{[1]={[1]={skillType=241,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=-80}},nil} c["Dodge Roll avoids all Hits"]={nil,"Dodge Roll avoids all Hits "} c["Dodge Roll avoids all Hits 10% less Movement and Skill Speed per Dodge Roll in the past 20 seconds"]={nil,"Dodge Roll avoids all Hits 10% less Movement and Skill Speed per Dodge Roll in the past 20 seconds "} -c["Dodge Roll cannot Avoid Damage"]={nil,"Dodge Roll cannot Avoid Damage "} -c["Dodge Roll cannot Avoid Damage Take 30% less Damage from Hits while Dodge Rolling"]={nil,"Dodge Roll cannot Avoid Damage Take 30% less Damage from Hits while Dodge Rolling "} +c["Dodge Roll cannot Avoid Damage"]={{},nil} c["Dodge Roll passes through Enemies"]={nil,"Dodge Roll passes through Enemies "} c["Double Activation Delay of Curses"]={{[1]={flags=0,keywordFlags=0,name="CurseDelay",type="MORE",value=100}},nil} c["Double Adaptation Effect"]={{[1]={[1]={globalLimit=100,globalLimitKey="LocalEffectDoubledLimit",type="Multiplier",var="LocalEffectDoubled"},flags=0,keywordFlags=0,name="LocalEffect",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:LocalEffectDoubled",type="OVERRIDE",value=1}}," Adaptation "} @@ -4865,7 +4863,7 @@ c["Evasion Rating from Equipped Helmet, Gloves and Boots is doubled"]={{[1]={[1] c["Evasion Rating is doubled if you have not been Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="BeenHitRecently"},[2]={globalLimit=100,globalLimitKey="EvasionDoubledLimit",type="Multiplier",var="EvasionDoubled"},flags=0,keywordFlags=0,name="Evasion",type="MORE",value=100},[2]={[1]={neg=true,type="Condition",var="BeenHitRecently"},flags=0,keywordFlags=0,name="Multiplier:EvasionDoubled",type="OVERRIDE",value=1}},nil} c["Evasion Rating is increased by Uncapped Lightning Resistance"]={nil,"Evasion Rating is increased by Uncapped Lightning Resistance "} c["Everlasting Sacrifice"]={{[1]={flags=0,keywordFlags=0,name="Condition:EverlastingSacrifice",type="FLAG",value=true}},nil} -c["Every 10 Rage also grants 12% increased Physical Damage"]={nil,"Every 10 Rage also grants 12% increased Physical Damage "} +c["Every 10 Rage also grants 12% increased Physical Damage"]={{[1]={[1]={div=10,type="Multiplier",var="RageEffect"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=12}},nil} c["Every 10 seconds, gain a random non-damaging Shrine buff for 20 seconds"]={nil,"Every 10 seconds, gain a random non-damaging Shrine buff for 20 seconds "} c["Every 2 Rage also grants 1% more Spell damage"]={{[1]={[1]={div=2,type="Multiplier",var="RageEffect"},flags=2,keywordFlags=0,name="Damage",type="MORE",value=1}},nil} c["Every 3 seconds during Effect, deal 100% of Mana spent in those seconds as Chaos Damage to Enemies within 3 metres"]={nil,"Every 3 seconds during Effect, deal 100% of Mana spent in those seconds as Chaos Damage to Enemies within 3 metres "} @@ -5658,7 +5656,7 @@ c["No Inherent loss of Rage during effect"]={nil,"No Inherent loss of Rage durin c["No Inherent loss of Rage during effect 50% increased Duration"]={nil,"No Inherent loss of Rage during effect 50% increased Duration "} c["No Movement Speed Penalty while Shield is Raised"]={nil,"No Movement Speed Penalty while Shield is Raised "} c["No Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalMin"}},[2]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalMax"}},[3]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalDPS"}}},nil} -c["No Rage effect"]={nil,"No Rage effect "} +c["No Rage effect"]={{[1]={flags=0,keywordFlags=0,name="RageEffect",type="OVERRIDE",value=0}},nil} c["No inherent Mana Regeneration"]={{[1]={flags=0,keywordFlags=0,name="Condition:NoInherentManaRegen",type="FLAG",value=true}},nil} c["Non-Channelling Spells cost an additional 6% of your maximum Life"]={{[1]={[1]={floor=true,percent=6,stat="Life",type="PercentStat"},[2]={neg=true,skillType=48,type="SkillType"},flags=0,keywordFlags=131072,name="LifeCostBase",type="BASE",value=1}},nil} c["Non-Channelling Spells deal 10% increased Damage per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=10}},nil} @@ -5988,8 +5986,8 @@ c["Spells Cast by Totems have 3% increased Cast Speed per Summoned Totem"]={{[1] c["Spells Cast by Totems have 4% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=4}},nil} c["Spells Cast by Totems have 5% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=5}},nil} c["Spells Cast by Totems have 6% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=6}},nil} -c["Spells Gain 12% of Damage as extra Chaos Damage"]={nil,"Spells Gain 12% of Damage as extra Chaos Damage "} -c["Spells Gain 5% of Damage as extra Chaos Damage"]={nil,"Spells Gain 5% of Damage as extra Chaos Damage "} +c["Spells Gain 12% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=12}},nil} +c["Spells Gain 5% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=5}},nil} c["Spells consume a Power Charge if able to deal 40% more Damage"]={nil,"Spells consume a Power Charge if able to deal 40% more Damage "} c["Spells fire 4 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}},nil} c["Spells fire Projectiles in a circle"]={nil,"Projectiles in a circle "} @@ -6013,7 +6011,7 @@ c["Successfully Parrying a Projectile Hit grants 40% increased Damage to your ne c["Take 100 Chaos damage per second per Endurance Charge"]={{[1]={[1]={type="Multiplier",var="EnduranceCharge"},flags=0,keywordFlags=0,name="ChaosDegen",type="BASE",value=100}},nil} c["Take 100 Fire Damage when you Ignite an Enemy"]={{[1]={flags=0,keywordFlags=0,name="EyeOfInnocenceSelfDamage",type="LIST",value={baseDamage=100,damageType="fire"}}},nil} c["Take 100% of Mana Costs you pay for Skills as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ManaCostAsPhysical",type="BASE",value=100}}," s you pay for Skills "} -c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-30}}," from Hits while Dodge Rolling "} +c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Condition",var="InDodgeRoll"},flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="MORE",value=-30}},nil} c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits "} c["Take 30% more Damage from Hits Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits Take 40% less Damage from Hits "} c["Take 30% more Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=30}},nil} diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 3ca200b56..cd5a2bc12 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -664,7 +664,7 @@ local function doActorMisc(env, actor) local minStacks = m_min(modDB:Sum("BASE", nil, "MinimumRage"), maxStacks) local rageConfig = modDB:Sum("BASE", nil, "Multiplier:RageStack") local stacks = m_max(m_min(rageConfig, maxStacks), (minStacks > 0 and minStacks) or 0) - output.RageEffect = m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect")) + output.RageEffect = modDB:Override(nil, "RageEffect") or m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect")) modDB:NewMod("Multiplier:RageEffect", "BASE", output.RageEffect, "Base") output.Rage = stacks output.MaximumRage = maxStacks diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index ec0ed4870..721a75876 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1212,6 +1212,10 @@ Huge sets the radius to 11. { var = "conditionInfusionConsumedRecently", type = "check", label = "Infusion consumed recently?", apply = function(val, modList, enemyModList) modList:NewMod("Condition:InfusionConsumedRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionInDodgeRoll", type = "check", label = "Are you in dodge roll?", ifCond = "InDodgeRoll", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:InDodgeRoll", "FLAG", true, "Config", { type = "Condition", var = "Combat" }, { type = "Condition", var ="CannotDodgeRoll", neg = true }) + end }, + { var = "conditionBeenHitRecently", type = "check", label = "Have you been Hit Recently?", ifCond = "BeenHitRecently", apply = function(val, modList, enemyModList) modList:NewMod("Condition:BeenHitRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 52280d136..8c6d5b291 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1251,7 +1251,7 @@ local preFlagList = { ["^attacks using your weapons [ghd][ae][iva][eln] "] = { flags = ModFlag.Attack, tag = { type = "SkillType", skillType = SkillType.NonWeaponAttack, neg = true }}, ["^attacks used by ballistas [hd][ae][va][el] "] = { flags = ModFlag.Attack, keywordFlags = KeywordFlag.Totem, tag = { type = "Condition", var = "BallistaSkill" } }, ["^attack skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Attack }, - ["^spells [hdf][aei][var][el] a? ?"] = { flags = ModFlag.Spell }, + ["^spells [hgdf][aei][ivar][nel] a? ?"] = { flags = ModFlag.Spell }, ["^spell skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Spell }, ["^offering skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.Offering } }, ["^projectile attack skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.RangedAttack } }, @@ -1374,8 +1374,8 @@ local preFlagList = { ["allies in your presence [hgd][ae][via][enl] "] = { newAura = true, newAuraOnlyAllies = true }, ["^you and allies in your presence [hgd][ae][via][enl] "] = { newAura = true }, ["^every rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect" } }, - ["^every 2 rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect", div = 2} }, ["^each rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect" } }, + ["^every (%d+) rage also grants "] = function(num) return { tag = { type = "Multiplier", var = "RageEffect", div = tonumber(num) } } end, ["^you and allies affected by auras from your skills [hgd][ae][via][enl] "] = { tag = { type = "Condition", var = "AffectedByAura" } }, ["^take "] = { modSuffix = "Taken" }, ["^marauder: "] = { tag = { type = "Condition", var = "ConnectedToMarauderStart" } }, @@ -1788,6 +1788,7 @@ local modTagList = { ["during onslaught"] = { tag = { type = "Condition", var = "Onslaught" } }, ["while you have onslaught"] = { tag = { type = "Condition", var = "Onslaught" } }, ["while phasing"] = { tag = { type = "Condition", var = "Phasing" } }, + ["while dodge rolling"] = { tag = { type = "Condition", var = "InDodgeRoll" } }, ["while you have tailwind"] = { tag = { type = "MultiplierThreshold", var = "Tailwind", threshold = 1 } }, ["while elusive"] = { tag = { type = "Condition", var = "Elusive" } }, ["gain elusive"] = { tag = { type = "Condition", varList = { "CanBeElusive", "Elusive" } } }, @@ -2256,7 +2257,7 @@ local specialModList = { ["burning enemies you kill have a (%d+)%% chance to explode, dealing a (.+) of their maximum life as (.+) damage"] = function(chance, _, amount, type) -- Explosive Impact return explodeFunc(chance, amount, type, { type = "ActorCondition", actor = "enemy", var = "Burning" }) end, - ["non-aura curses you inflict are not removed from dying enemies"] = {}, + ["non-aura curses you inflict are not removed from dying enemies"] = { }, ["enemies near corpses affected by your curses are blinded"] = { mod("EnemyModifier", "LIST", { mod = flag("Condition:Blinded") }, { type = "MultiplierThreshold", var = "NearbyCorpse", threshold = 1 }, { type = "ActorCondition", actor = "enemy", var = "Cursed" }) }, ["enemies killed near corpses affected by your curses explode, dealing (%d+)%% of their life as (.+) damage"] = function(amount, _, type) -- Asenath's Gentle Touch return explodeFunc(100, amount, type, { type = "MultiplierThreshold", var = "NearbyCorpse", threshold = 1 }, { type = "ActorCondition", actor = "enemy", var = "Cursed" }) @@ -2277,6 +2278,8 @@ local specialModList = { return explodeFunc(chance, amount, type) end, -- Keystones + ["dodge roll cannot avoid damage"] = { }, + ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return{ mod("DamageTakenWhenHit", "MORE", -num, { type = "Condition", var = "InDodgeRoll" }) } end, ["(%d+)%% more skill speed while off hand is empty and you have a one%-handed martial weapon equipped in your main hand"] = function(num) return { mod("Speed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), mod("WarcrySpeed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), @@ -2601,6 +2604,7 @@ local specialModList = { } end, ["brands have (%d+)%% increased area of effect if (%d+)%% of attached duration expired"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "Condition", var = "BrandLastHalf" }, { type = "SkillType", skillType = SkillType.Brand }) } end, ["corrupted blood cannot be inflicted on you"] = { flag("CorruptedBloodImmune") }, + ["cannot be light stunned"] = { flag("StunImmune") }, ["you cannot be hindered"] = { flag("HinderImmune") }, ["you cannot be maimed"] = { flag("MaimImmune") }, ["you cannot be impaled"] = { flag("ImpaleImmune") }, @@ -2745,6 +2749,7 @@ local specialModList = { ["while a pinnacle atlas boss is in your presence, gain %d+ rage on hit with attacks, no more than once every [%d%.]+ seconds"] = { flag("Condition:CanGainRage", { type = "ActorCondition", actor = "enemy", var = "PinnacleBoss" }), }, + ["no rage effect"] = { mod("RageEffect", "OVERRIDE", 0) }, ["inherent effects from having rage are tripled"] = { mod("RageEffect", "MORE", 200) }, ["inherent effects from having rage are doubled"] = { mod("RageEffect", "MORE", 100) }, ["cannot be stunned while you have at least (%d+) rage"] = function(num) return { flag("StunImmune", { type = "MultiplierThreshold", var = "Rage", threshold = num }) } end, @@ -3262,7 +3267,7 @@ local specialModList = { ["skills have (%d+)%% increased skill speed per connected green support gem"] = function(num) return { mod("SkillSpeedIncreasedPerGreenSupport", "FLAG", num) } end, - ["for each colour of socketed support gem that is most numerous, gain:"] = {}, + ["for each colour of socketed support gem that is most numerous, gain:"] = { }, ["red: hits against you have no critical damage bonus"] = { mod("ReduceCritExtraDamage", "BASE", 100, { type = "Condition", var = "MostNumerousRedSocketedSupports" }) }, @@ -3307,7 +3312,7 @@ local specialModList = { mod("EnemyModifier", "LIST", { mod = mod("LightningExposure", "BASE", -20) }, { type = "ActorCondition", actor = "enemy", var = "EnemyInPresence" }), }, -- Druid -- Oracle - ["walk the paths not taken"] = {}, + ["walk the paths not taken"] = { }, ["gain the benefits of bonded modifiers on runes and idols"] = { flag("Condition:CanUseBondedModifiers"), },