diff --git a/CHANGELOG.md b/CHANGELOG.md index e52a21639f..b6a97dc3b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [v2.48.2](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.48.2) (2024/08/17) + +[Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.48.1...v2.48.2) + + + +## What's Changed +### Fixed Crashes +- Fix limited processing flag not persisting through recursions causing crash [\#8192](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8192) ([Paliak](https://github.com/Paliak)) +### User Interface +- Improve breakdown for Snipe's damage mods [\#8196](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8196) ([Paliak](https://github.com/Paliak)) +### Fixed Calculations +- Fix Damage while Leeching Life mod not working [\#8205](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8205) ([LocalIdentity](https://github.com/LocalIdentity)) +### Fixed Behaviours +- Fix Sublime Vision disabling Mine skills [\#8206](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8206) ([LocalIdentity](https://github.com/LocalIdentity)) +- Fix Snipe for Assailum not working [\#8195](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8195) ([Paliak](https://github.com/Paliak)) + + ## [v2.48.1](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.48.1) (2024/08/15) [Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.48.0...v2.48.1) diff --git a/changelog.txt b/changelog.txt index 7e34b22b79..bf2852b4bc 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,18 @@ +VERSION[2.48.2][2024/08/17] + +--- Fixed Crashes --- +* Fix limited processing flag not persisting through recursions causing crash (Paliak) + +--- User Interface --- +* Improve breakdown for Snipe's damage mods (Paliak) + +--- Fixed Calculations --- +* Fix Damage while Leeching Life mod not working (LocalIdentity) + +--- Fixed Behaviours --- +* Fix Sublime Vision disabling Mine skills (LocalIdentity) +* Fix Snipe for Assailum not working (Paliak) + VERSION[2.48.1][2024/08/15] --- Fixed Crashes --- diff --git a/manifest.xml b/manifest.xml index 7197b71210..a9583628f5 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,11 +1,11 @@ - + - + @@ -163,7 +163,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -257,21 +257,21 @@ - + - - + + - + - + diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index a23573a1c8..cbdc7c1366 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -7181,23 +7181,23 @@ c["Attacks with this Weapon have Added Maximum Lightning Damage equal to 20% of c["Attribute Requirements can be satisfied by 20% of Omniscience"]={{[1]={flags=0,keywordFlags=0,name="OmniAttributeRequirements",type="INC",value=20},[2]={flags=0,keywordFlags=0,name="OmniscienceRequirements",type="FLAG",value=true}},nil} c["Attribute Requirements can be satisfied by 25% of Omniscience"]={{[1]={flags=0,keywordFlags=0,name="OmniAttributeRequirements",type="INC",value=25},[2]={flags=0,keywordFlags=0,name="OmniscienceRequirements",type="FLAG",value=true}},nil} c["Aura Skills have 1% more Aura Effect per 2% of maximum Mana they Reserve"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={div=2,stat="ManaReservedPercent",type="PerStat"},flags=0,keywordFlags=0,name="AuraEffect",type="MORE",value=1}},nil} -c["Aura Skills other than Anger are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="anger",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Clarity are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="clarity",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Determination are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="determination",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Discipline are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="discipline",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Grace are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="grace",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Haste are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="haste",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Hatred are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="hatred",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Malevolence are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="malevolence",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Precision are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="precision",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Pride are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="pride",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Purity of Elements are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of elements",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Purity of Fire are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of fire",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Purity of Ice are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of ice",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Purity of Lightning are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of lightning",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Vitality are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="vitality",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Wrath are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="wrath",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} -c["Aura Skills other than Zealotry are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="zealotry",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Anger are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="anger",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Clarity are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="clarity",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Determination are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="determination",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Discipline are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="discipline",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Grace are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="grace",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Haste are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="haste",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Hatred are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="hatred",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Malevolence are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="malevolence",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Precision are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="precision",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Pride are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="pride",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Purity of Elements are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of elements",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Purity of Fire are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of fire",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Purity of Ice are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of ice",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Purity of Lightning are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="purity of lightning",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Vitality are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="vitality",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Wrath are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="wrath",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} +c["Aura Skills other than Zealotry are Disabled"]={{[1]={[1]={skillType=43,type="SkillType"},[2]={neg=true,skillType=40,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={[1]={skillName="zealotry",type="SkillName"},flags=0,keywordFlags=0,name="EnableSkill",type="FLAG",value=true}},nil} c["Auras from your Skills can only affect you"]={{[1]={flags=0,keywordFlags=0,name="SelfAurasOnlyAffectYou",type="FLAG",value=true}},nil} c["Auras from your Skills grant 2% increased Attack and Cast"]={{}," Attack and Cast "} c["Auras from your Skills grant 2% increased Attack and Cast Speed to you and Allies"]={{[1]={flags=0,keywordFlags=0,name="ExtraAuraEffect",type="LIST",value={mod={flags=0,keywordFlags=0,name="Speed",type="INC",value=2}}}},nil} @@ -8544,7 +8544,7 @@ c["Grants Level 20 Pacify"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type c["Grants Level 20 Penance Mark"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="PenanceMark"}}},nil} c["Grants Level 20 Queen's Demand Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="QueensDemand"}}},nil} c["Grants Level 20 Ravenous Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="Ravenous"}}},nil} -c["Grants Level 20 Snipe Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="ChannelledSnipe"}},[2]={[1]={slotName="{SlotName}",type="SocketedIn"},flags=0,keywordFlags=0,name="ExtraSupport",type="LIST",value={level=20,skillId="ChannelledSnipeSupport"}}},nil} +c["Grants Level 20 Snipe Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="Snipe"}},[2]={[1]={slotName="{SlotName}",type="SocketedIn"},flags=0,keywordFlags=0,name="ExtraSupport",type="LIST",value={level=20,skillId="ChannelledSnipeSupport"}}},nil} c["Grants Level 20 Summon Bestial Rhoa Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonBeastialRhoa"}}},nil} c["Grants Level 20 Summon Bestial Snake Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonBeastialSnake"}}},nil} c["Grants Level 20 Summon Bestial Ursa Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonBeastialUrsa"}}},nil} @@ -8571,7 +8571,7 @@ c["Grants Level 30 Crushing Fist Skill"]={{[1]={flags=0,keywordFlags=0,name="Ext c["Grants Level 30 Dash Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=30,skillId="Dash"}}},nil} c["Grants Level 30 Precision Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=30,skillId="Precision"}}},nil} c["Grants Level 30 Smite Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=30,skillId="Smite"}}},nil} -c["Grants Level 30 Snipe Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=30,skillId="ChannelledSnipe"}},[2]={[1]={slotName="{SlotName}",type="SocketedIn"},flags=0,keywordFlags=0,name="ExtraSupport",type="LIST",value={level=30,skillId="ChannelledSnipeSupport"}}},nil} +c["Grants Level 30 Snipe Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=30,skillId="Snipe"}},[2]={[1]={slotName="{SlotName}",type="SocketedIn"},flags=0,keywordFlags=0,name="ExtraSupport",type="LIST",value={level=30,skillId="ChannelledSnipeSupport"}}},nil} c["Grants Level 5 Frostbite Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=5,skillId="Frostbite"}}},nil} c["Grants Malachai's Endurance, Frenzy and Power for 6 seconds each, in sequence"]={nil,"Grants Malachai's Endurance, Frenzy and Power for 6 seconds each, in sequence "} c["Grants Perfect Agony during effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Perfect Agony"}},nil} diff --git a/src/Data/QueryMods.lua b/src/Data/QueryMods.lua index 751676b9fd..407452971d 100644 --- a/src/Data/QueryMods.lua +++ b/src/Data/QueryMods.lua @@ -13652,7 +13652,7 @@ return { ["specialCaseData"] = { }, ["tradeMod"] = { - ["id"] = "implicit.stat_78985352", + ["id"] = "implicit.stat_2089652545", ["text"] = "#% chance to Intimidate Enemies for 4 seconds on Hit", ["type"] = "implicit", }, @@ -76324,7 +76324,7 @@ return { ["specialCaseData"] = { }, ["tradeMod"] = { - ["id"] = "implicit.stat_78985352", + ["id"] = "implicit.stat_2089652545", ["text"] = "#% chance to Intimidate Enemies for 4 seconds on Hit", ["type"] = "implicit", }, diff --git a/src/Modules/CalcMirages.lua b/src/Modules/CalcMirages.lua index 1cb076837e..6e5cc51951 100644 --- a/src/Modules/CalcMirages.lua +++ b/src/Modules/CalcMirages.lua @@ -37,7 +37,8 @@ local function calculateMirage(env, config) if mirageSkill then local newSkill, newEnv = calcs.copyActiveSkill(env, env.mode, mirageSkill) newSkill.skillCfg.skillCond["usedByMirage"] = true - newSkill.skillData.limitedProcessing = true + newEnv.limitedSkills = newEnv.limitedSkills or {} + newEnv.limitedSkills[cacheSkillUUID(newSkill, newEnv)] = true newSkill.skillData.mirageUses = env.player.mainSkill.skillData.storedUses newSkill.skillTypes[SkillType.OtherThingUsesSkill] = true diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index bc24862dbc..8fba4c7c53 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1805,7 +1805,7 @@ function calcs.perform(env, skipEHP) -- computed cached versions to satisfy the order of operations. -- See: https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/5164 for _, activeSkill in ipairs(env.player.activeSkillList) do - if not activeSkill.skillFlags.disable and not activeSkill.skillData.limitedProcessing then + if not activeSkill.skillFlags.disable and not (env.limitedSkills and env.limitedSkills[cacheSkillUUID(activeSkill, env)]) then if (activeSkill.activeEffect.grantedEffect.name == "Blight" or activeSkill.activeEffect.grantedEffect.name == "Blight of Contagion" or activeSkill.activeEffect.grantedEffect.name == "Blight of Atrophy") and activeSkill.skillPart == 2 then local rate, duration = getCachedOutputValue(env, activeSkill, "Speed", "Duration") local baseMaxStages = activeSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "BlightBaseMaxStages") diff --git a/src/Modules/CalcTriggers.lua b/src/Modules/CalcTriggers.lua index 10e4618ec7..4bcfd86730 100644 --- a/src/Modules/CalcTriggers.lua +++ b/src/Modules/CalcTriggers.lua @@ -1306,7 +1306,7 @@ local configTable = { end if env.player.mainSkill.activeEffect.grantedEffect.name == "Snipe" then - if env.player.mainSkill.skillData.limitedProcessing then + if (env.limitedSkills and env.limitedSkills[cacheSkillUUID(env.player.mainSkill, env)]) then -- Snipe is being used by some other skill. In this case snipe does not get more damage mods snipeStages = 0 else @@ -1316,8 +1316,9 @@ local configTable = { if #triggeredSkills < 1 then -- Snipe is being used as a standalone skill if snipeStages then - env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeHitMulti * snipeStages, "Snipe", ModFlag.Hit, 0) - env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeAilmentMulti * snipeStages, "Snipe", ModFlag.Ailment, 0) + env.player.mainSkill.skillModList:NewMod("Multiplier:SnipeStages", "BASE", snipeStages, "Snipe") + env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeHitMulti, "Snipe", ModFlag.Hit, 0, { type = "Multiplier", var = "SnipeStages" }) + env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeAilmentMulti, "Snipe", ModFlag.Ailment, 0, { type = "Multiplier", var = "SnipeStages" }) end else -- Snipe is being used as a trigger source, it triggers other skills but does no damage it self @@ -1340,8 +1341,9 @@ local configTable = { if currentSkillSnipeIndex and currentSkillSnipeIndex <= snipeStages then local source local trigRate - env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeHitMulti * snipeStages , "Snipe", ModFlag.Hit, 0) - env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeAilmentMulti * snipeStages , "Snipe", ModFlag.Ailment, 0) + env.player.mainSkill.skillModList:NewMod("Multiplier:SnipeStages", "BASE", snipeStages, "Snipe") + env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeAilmentMulti, "Snipe", ModFlag.Ailment, 0, { type = "Multiplier", var = "SnipeStages" }) + env.player.mainSkill.skillModList:NewMod("Damage", "MORE", snipeHitMulti, "Snipe", ModFlag.Hit, 0, { type = "Multiplier", var = "SnipeStages" }) for _, skill in ipairs(env.player.activeSkillList) do if skill.activeEffect.grantedEffect.name == "Snipe" and skill.socketGroup and skill.socketGroup.slot == env.player.mainSkill.socketGroup.slot then skill.skillData.hitTimeMultiplier = snipeStages - 0.5 @@ -1418,7 +1420,7 @@ local function getUniqueItemTriggerName(skill) end function calcs.triggers(env, actor) - if actor and not actor.mainSkill.skillFlags.disable and not actor.mainSkill.skillData.limitedProcessing then + if actor and not actor.mainSkill.skillFlags.disable and not (env.limitedSkills and env.limitedSkills[cacheSkillUUID(actor.mainSkill, env)]) then local skillName = actor.mainSkill.activeEffect.grantedEffect.name local triggerName = actor.mainSkill.triggeredBy and actor.mainSkill.triggeredBy.grantedEffect.name local uniqueName = isTriggered(actor.mainSkill) and getUniqueItemTriggerName(actor.mainSkill) diff --git a/src/Modules/Calcs.lua b/src/Modules/Calcs.lua index fb3bf380f5..68f46b9189 100644 --- a/src/Modules/Calcs.lua +++ b/src/Modules/Calcs.lua @@ -403,12 +403,22 @@ end -- Process active skill function calcs.buildActiveSkill(env, mode, skill, targetUUID, limitedProcessingFlags) local fullEnv, _, _, _ = calcs.initEnv(env.build, mode, env.override) + + -- env.limitedSkills contains a map of uuids that should be limited in calculation + -- this is in order to prevent infinite recursion loops + fullEnv.limitedSkills = fullEnv.limitedSkills or {} + for uuid, _ in pairs(env.limitedSkills or {}) do + fullEnv.limitedSkills[uuid] = true + end + for uuid, _ in pairs(limitedProcessingFlags or {}) do + fullEnv.limitedSkills[uuid] = true + end + targetUUID = targetUUID or cacheSkillUUID(skill, env) for _, activeSkill in ipairs(fullEnv.player.activeSkillList) do local activeSkillUUID = cacheSkillUUID(activeSkill, fullEnv) if activeSkillUUID == targetUUID then fullEnv.player.mainSkill = activeSkill - fullEnv.player.mainSkill.skillData.limitedProcessing = limitedProcessingFlags and limitedProcessingFlags[activeSkillUUID] calcs.perform(fullEnv, true) return end diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 76bc93451b..96e0f84a3a 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1566,6 +1566,7 @@ local modTagList = { ["while you have infusion"] = { tag = { type = "Condition", var = "InfusionActive" } }, ["while focus?sed"] = { tag = { type = "Condition", var = "Focused" } }, ["while leeching"] = { tag = { type = "Condition", var = "Leeching" } }, + ["while leeching life"] = { tag = { type = "Condition", var = "LeechingLife" } }, ["while leeching energy shield"] = { tag = { type = "Condition", var = "LeechingEnergyShield" } }, ["while leeching mana"] = { tag = { type = "Condition", var = "LeechingMana" } }, ["while using a flask"] = { tag = { type = "Condition", var = "UsingFlask" } }, @@ -2814,7 +2815,7 @@ local specialModList = { ["socketed non%-channelling bow skills are triggered by snipe"] = { }, ["grants level (%d+) snipe skill"] = function(num) return { - mod("ExtraSkill", "LIST", { skillId = "ChannelledSnipe", level = num }), + mod("ExtraSkill", "LIST", { skillId = "Snipe", level = num }), mod("ExtraSupport", "LIST", { skillId = "ChannelledSnipeSupport", level = num }, { type = "SocketedIn", slotName = "{SlotName}" }), } end, ["socketed triggered bow skills deal (%d+)%% less damage"] = function(num) return { mod("ExtraSkillMod", "LIST", { mod = mod("Damage", "MORE", -num) }, { type = "SocketedIn", slotName = "{SlotName}", keyword = "bow" }, { type = "SkillType", skillType = SkillType.Triggerable }) } end, @@ -4679,7 +4680,7 @@ local specialModList = { ["your spells are disabled"] = { flag("DisableSkill", { type = "SkillType", skillType = SkillType.Spell }) }, ["your travel skills are disabled"] = { flag("DisableSkill", { type = "SkillType", skillType = SkillType.Travel }) }, ["aura skills other than ([%a%s]+) are disabled"] = function(_, name) return { - flag("DisableSkill", { type = "SkillType", skillType = SkillType.Aura }), + flag("DisableSkill", { type = "SkillType", skillType = SkillType.Aura }, { type = "SkillType", skillType = SkillType.RemoteMined, neg = true }), flag("EnableSkill", { type = "SkillName", skillName = name }), } end, ["travel skills other than ([%a%s]+) are disabled"] = function(_, name) return {