Skip to content

Commit 676edb5

Browse files
MrHB212LocalIdentity
andauthored
Added different nodes on tree (#1644)
* added Unwavering Stance * added bulwark with config option * fixed bulwark and added interaction wit unwavering stance * fixed config for "in dodge roll" * parse "dodge roll cannot avoid damage" * Bestial Rage, Primal Hunger, Night's Bite * review * Fix parsing * Fix Rage mod parsing * Spacing * More spacing fixes --------- Co-authored-by: LocalIdentity <[email protected]>
1 parent 80b3cdb commit 676edb5

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

src/Data/ModCache.lua

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4533,8 +4533,7 @@ c["Cannot be Blinded while on Full Life"]={{[1]={[1]={type="Condition",var="Full
45334533
c["Cannot be Critically Hit while Parrying"]={nil,"Cannot be Critically Hit while Parrying "}
45344534
c["Cannot be Heavy Stunned while Sprinting"]={{[1]={[1]={type="Condition",var="Sprinting"},flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil}
45354535
c["Cannot be Ignited"]={{[1]={flags=0,keywordFlags=0,name="IgniteImmune",type="FLAG",value=true}},nil}
4536-
c["Cannot be Light Stunned"]={nil,"Cannot be Light Stunned "}
4537-
c["Cannot be Light Stunned Cannot Dodge Roll or Sprint"]={nil,"Cannot be Light Stunned Cannot Dodge Roll or Sprint "}
4536+
c["Cannot be Light Stunned"]={{[1]={flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil}
45384537
c["Cannot be Light Stunned if you haven't been Hit Recently"]={nil,"Cannot be Light Stunned if you haven't been Hit Recently "}
45394538
c["Cannot be Poisoned"]={{[1]={flags=0,keywordFlags=0,name="PoisonImmune",type="FLAG",value=true}},nil}
45404539
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
47404739
c["Detonator skills have 80% reduced damage"]={{[1]={[1]={skillType=241,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=-80}},nil}
47414740
c["Dodge Roll avoids all Hits"]={nil,"Dodge Roll avoids all Hits "}
47424741
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 "}
4743-
c["Dodge Roll cannot Avoid Damage"]={nil,"Dodge Roll cannot Avoid Damage "}
4744-
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 "}
4742+
c["Dodge Roll cannot Avoid Damage"]={{},nil}
47454743
c["Dodge Roll passes through Enemies"]={nil,"Dodge Roll passes through Enemies "}
47464744
c["Double Activation Delay of Curses"]={{[1]={flags=0,keywordFlags=0,name="CurseDelay",type="MORE",value=100}},nil}
47474745
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]
48654863
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}
48664864
c["Evasion Rating is increased by Uncapped Lightning Resistance"]={nil,"Evasion Rating is increased by Uncapped Lightning Resistance "}
48674865
c["Everlasting Sacrifice"]={{[1]={flags=0,keywordFlags=0,name="Condition:EverlastingSacrifice",type="FLAG",value=true}},nil}
4868-
c["Every 10 Rage also grants 12% increased Physical Damage"]={nil,"Every 10 Rage also grants 12% increased Physical Damage "}
4866+
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}
48694867
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 "}
48704868
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}
48714869
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
56585656
c["No Inherent loss of Rage during effect 50% increased Duration"]={nil,"No Inherent loss of Rage during effect 50% increased Duration "}
56595657
c["No Movement Speed Penalty while Shield is Raised"]={nil,"No Movement Speed Penalty while Shield is Raised "}
56605658
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}
5661-
c["No Rage effect"]={nil,"No Rage effect "}
5659+
c["No Rage effect"]={{[1]={flags=0,keywordFlags=0,name="RageEffect",type="OVERRIDE",value=0}},nil}
56625660
c["No inherent Mana Regeneration"]={{[1]={flags=0,keywordFlags=0,name="Condition:NoInherentManaRegen",type="FLAG",value=true}},nil}
56635661
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}
56645662
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]
59885986
c["Spells Cast by Totems have 4% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=4}},nil}
59895987
c["Spells Cast by Totems have 5% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=5}},nil}
59905988
c["Spells Cast by Totems have 6% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=6}},nil}
5991-
c["Spells Gain 12% of Damage as extra Chaos Damage"]={nil,"Spells Gain 12% of Damage as extra Chaos Damage "}
5992-
c["Spells Gain 5% of Damage as extra Chaos Damage"]={nil,"Spells Gain 5% of Damage as extra Chaos Damage "}
5989+
c["Spells Gain 12% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=12}},nil}
5990+
c["Spells Gain 5% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=5}},nil}
59935991
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 "}
59945992
c["Spells fire 4 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}},nil}
59955993
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
60136011
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}
60146012
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}
60156013
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 "}
6016-
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 "}
6014+
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}
60176015
c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits "}
60186016
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 "}
60196017
c["Take 30% more Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=30}},nil}

src/Modules/CalcPerform.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ local function doActorMisc(env, actor)
664664
local minStacks = m_min(modDB:Sum("BASE", nil, "MinimumRage"), maxStacks)
665665
local rageConfig = modDB:Sum("BASE", nil, "Multiplier:RageStack")
666666
local stacks = m_max(m_min(rageConfig, maxStacks), (minStacks > 0 and minStacks) or 0)
667-
output.RageEffect = m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect"))
667+
output.RageEffect = modDB:Override(nil, "RageEffect") or m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect"))
668668
modDB:NewMod("Multiplier:RageEffect", "BASE", output.RageEffect, "Base")
669669
output.Rage = stacks
670670
output.MaximumRage = maxStacks

src/Modules/ConfigOptions.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,6 +1212,10 @@ Huge sets the radius to 11.
12121212
{ var = "conditionInfusionConsumedRecently", type = "check", label = "Infusion consumed recently?", apply = function(val, modList, enemyModList)
12131213
modList:NewMod("Condition:InfusionConsumedRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
12141214
end },
1215+
{ var = "conditionInDodgeRoll", type = "check", label = "Are you in dodge roll?", ifCond = "InDodgeRoll", apply = function(val, modList, enemyModList)
1216+
modList:NewMod("Condition:InDodgeRoll", "FLAG", true, "Config", { type = "Condition", var = "Combat" }, { type = "Condition", var ="CannotDodgeRoll", neg = true })
1217+
end },
1218+
12151219
{ var = "conditionBeenHitRecently", type = "check", label = "Have you been Hit Recently?", ifCond = "BeenHitRecently", apply = function(val, modList, enemyModList)
12161220
modList:NewMod("Condition:BeenHitRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
12171221
end },

src/Modules/ModParser.lua

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,7 +1251,7 @@ local preFlagList = {
12511251
["^attacks using your weapons [ghd][ae][iva][eln] "] = { flags = ModFlag.Attack, tag = { type = "SkillType", skillType = SkillType.NonWeaponAttack, neg = true }},
12521252
["^attacks used by ballistas [hd][ae][va][el] "] = { flags = ModFlag.Attack, keywordFlags = KeywordFlag.Totem, tag = { type = "Condition", var = "BallistaSkill" } },
12531253
["^attack skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Attack },
1254-
["^spells [hdf][aei][var][el] a? ?"] = { flags = ModFlag.Spell },
1254+
["^spells [hgdf][aei][ivar][nel] a? ?"] = { flags = ModFlag.Spell },
12551255
["^spell skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Spell },
12561256
["^offering skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.Offering } },
12571257
["^projectile attack skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.RangedAttack } },
@@ -1374,8 +1374,8 @@ local preFlagList = {
13741374
["allies in your presence [hgd][ae][via][enl] "] = { newAura = true, newAuraOnlyAllies = true },
13751375
["^you and allies in your presence [hgd][ae][via][enl] "] = { newAura = true },
13761376
["^every rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect" } },
1377-
["^every 2 rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect", div = 2} },
13781377
["^each rage also grants "] = { tag = { type = "Multiplier", var = "RageEffect" } },
1378+
["^every (%d+) rage also grants "] = function(num) return { tag = { type = "Multiplier", var = "RageEffect", div = tonumber(num) } } end,
13791379
["^you and allies affected by auras from your skills [hgd][ae][via][enl] "] = { tag = { type = "Condition", var = "AffectedByAura" } },
13801380
["^take "] = { modSuffix = "Taken" },
13811381
["^marauder: "] = { tag = { type = "Condition", var = "ConnectedToMarauderStart" } },
@@ -1788,6 +1788,7 @@ local modTagList = {
17881788
["during onslaught"] = { tag = { type = "Condition", var = "Onslaught" } },
17891789
["while you have onslaught"] = { tag = { type = "Condition", var = "Onslaught" } },
17901790
["while phasing"] = { tag = { type = "Condition", var = "Phasing" } },
1791+
["while dodge rolling"] = { tag = { type = "Condition", var = "InDodgeRoll" } },
17911792
["while you have tailwind"] = { tag = { type = "MultiplierThreshold", var = "Tailwind", threshold = 1 } },
17921793
["while elusive"] = { tag = { type = "Condition", var = "Elusive" } },
17931794
["gain elusive"] = { tag = { type = "Condition", varList = { "CanBeElusive", "Elusive" } } },
@@ -2256,7 +2257,7 @@ local specialModList = {
22562257
["burning enemies you kill have a (%d+)%% chance to explode, dealing a (.+) of their maximum life as (.+) damage"] = function(chance, _, amount, type) -- Explosive Impact
22572258
return explodeFunc(chance, amount, type, { type = "ActorCondition", actor = "enemy", var = "Burning" })
22582259
end,
2259-
["non-aura curses you inflict are not removed from dying enemies"] = {},
2260+
["non-aura curses you inflict are not removed from dying enemies"] = { },
22602261
["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" }) },
22612262
["enemies killed near corpses affected by your curses explode, dealing (%d+)%% of their life as (.+) damage"] = function(amount, _, type) -- Asenath's Gentle Touch
22622263
return explodeFunc(100, amount, type, { type = "MultiplierThreshold", var = "NearbyCorpse", threshold = 1 }, { type = "ActorCondition", actor = "enemy", var = "Cursed" })
@@ -2277,6 +2278,8 @@ local specialModList = {
22772278
return explodeFunc(chance, amount, type)
22782279
end,
22792280
-- Keystones
2281+
["dodge roll cannot avoid damage"] = { },
2282+
["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return{ mod("DamageTakenWhenHit", "MORE", -num, { type = "Condition", var = "InDodgeRoll" }) } end,
22802283
["(%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 {
22812284
mod("Speed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}),
22822285
mod("WarcrySpeed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}),
@@ -2601,6 +2604,7 @@ local specialModList = {
26012604
} end,
26022605
["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,
26032606
["corrupted blood cannot be inflicted on you"] = { flag("CorruptedBloodImmune") },
2607+
["cannot be light stunned"] = { flag("StunImmune") },
26042608
["you cannot be hindered"] = { flag("HinderImmune") },
26052609
["you cannot be maimed"] = { flag("MaimImmune") },
26062610
["you cannot be impaled"] = { flag("ImpaleImmune") },
@@ -2745,6 +2749,7 @@ local specialModList = {
27452749
["while a pinnacle atlas boss is in your presence, gain %d+ rage on hit with attacks, no more than once every [%d%.]+ seconds"] = {
27462750
flag("Condition:CanGainRage", { type = "ActorCondition", actor = "enemy", var = "PinnacleBoss" }),
27472751
},
2752+
["no rage effect"] = { mod("RageEffect", "OVERRIDE", 0) },
27482753
["inherent effects from having rage are tripled"] = { mod("RageEffect", "MORE", 200) },
27492754
["inherent effects from having rage are doubled"] = { mod("RageEffect", "MORE", 100) },
27502755
["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 = {
32623267
["skills have (%d+)%% increased skill speed per connected green support gem"] = function(num) return {
32633268
mod("SkillSpeedIncreasedPerGreenSupport", "FLAG", num)
32643269
} end,
3265-
["for each colour of socketed support gem that is most numerous, gain:"] = {},
3270+
["for each colour of socketed support gem that is most numerous, gain:"] = { },
32663271
["red: hits against you have no critical damage bonus"] = {
32673272
mod("ReduceCritExtraDamage", "BASE", 100, { type = "Condition", var = "MostNumerousRedSocketedSupports" })
32683273
},
@@ -3307,7 +3312,7 @@ local specialModList = {
33073312
mod("EnemyModifier", "LIST", { mod = mod("LightningExposure", "BASE", -20) }, { type = "ActorCondition", actor = "enemy", var = "EnemyInPresence" }),
33083313
},
33093314
-- Druid -- Oracle
3310-
["walk the paths not taken"] = {},
3315+
["walk the paths not taken"] = { },
33113316
["gain the benefits of bonded modifiers on runes and idols"] = {
33123317
flag("Condition:CanUseBondedModifiers"),
33133318
},

0 commit comments

Comments
 (0)