diff --git a/spec/System/TestTriggers_spec.lua b/spec/System/TestTriggers_spec.lua index 3f21d2e94d..0f8c9b54ac 100644 --- a/spec/System/TestTriggers_spec.lua +++ b/spec/System/TestTriggers_spec.lua @@ -1409,4 +1409,36 @@ describe("TestTriggers", function() runCallback("OnFrame") assert.are.not_equals(math.floor(build.calcsTab.mainOutput.SkillTriggerRate * 100), math.floor(baseRate * 100)) end) + + it("skillId config search", function() + build.itemsTab:CreateDisplayItemFromRaw([[Rarity: RARE + Physical 1H Mace + Boom Mace + Crafted: true + Prefix: {range:0.5}LocalIncreasedPhysicalDamagePercent5 + Prefix: {range:0.5}LocalIncreasedPhysicalDamagePercentAndAccuracyRating5 + Prefix: {range:0.5}LocalAddedPhysicalDamage6 + Suffix: {range:0.5}LocalIncreasedAttackSpeed3 + Suffix: {range:0.5}LocalCriticalStrikeChance3 + Suffix: {range:0.5}LocalCriticalMultiplier4 + Quality: 20 + Sockets: R-R-R + LevelReq: 70 + Implicits: 1 + Trigger Level 20 Fiery Impact on Melee Hit with this Weapon + 172% increased Physical Damage + Adds 16 to 29 Physical Damage + 12% increased Attack Speed + 22% increased Critical Strike Chance + +27% to Global Critical Strike Multiplier + +111 to Accuracy Rating]]) + build.itemsTab:AddDisplayItem() + runCallback("OnFrame") + + build.skillsTab:PasteSocketGroup("Smite 20/0 1\n") + runCallback("OnFrame") + + local baseRate = build.calcsTab.mainOutput.SkillTriggerRate + assert.True(build.calcsTab.mainOutput.SkillTriggerRate ~= nil) + end) end) diff --git a/src/Modules/CalcTriggers.lua b/src/Modules/CalcTriggers.lua index f1d3788272..bcf1711658 100644 --- a/src/Modules/CalcTriggers.lua +++ b/src/Modules/CalcTriggers.lua @@ -1540,6 +1540,12 @@ local configTable = { return {source = env.player.mainSkill} end end, + ["TriggeredMoltenStrike"] = function(env) + return {triggerSkillCond = function(env, skill) return (skill.skillTypes[SkillType.Melee] or skill.skillTypes[SkillType.Attack]) end} + end, + ["FieryImpactHeistMaceImplicit"] = function(env) + return {triggerSkillCond = function(env, skill) return (skill.skillTypes[SkillType.Melee] or skill.skillTypes[SkillType.Attack]) end} + end, } -- Find unique item trigger name @@ -1569,7 +1575,9 @@ function calcs.triggers(env, actor) local triggerNameLower = triggerName and triggerName:lower() local awakenedTriggerNameLower = triggerNameLower and triggerNameLower:gsub("^awakened ", "") local uniqueNameLower = uniqueName and uniqueName:lower() - local config = skillNameLower and configTable[skillNameLower] and configTable[skillNameLower](env) + local skillId = actor.mainSkill.activeEffect.grantedEffect.id + local config = skillId and configTable[skillId] and configTable[skillId](env) + config = config or skillNameLower and configTable[skillNameLower] and configTable[skillNameLower](env) config = config or triggerNameLower and configTable[triggerNameLower] and configTable[triggerNameLower](env) config = config or awakenedTriggerNameLower and configTable[awakenedTriggerNameLower] and configTable[awakenedTriggerNameLower](env) config = config or uniqueNameLower and configTable[uniqueNameLower] and configTable[uniqueNameLower](env) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 74d53459db..cb7362ba29 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3201,6 +3201,7 @@ local specialModList = { ["trigger level (%d+) (.+) when you lose cat's stealth"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["trigger level (%d+) (.+) when your trap is triggered"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["trigger level (%d+) (.+) on hit with this weapon"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, + ["trigger level (%d+) (.+) on melee hit"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["trigger level (%d+) (.+) on melee hit while cursed"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["trigger level (%d+) (.+) on melee hit with this weapon"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["trigger level (%d+) (.+) every [%d%.]+ seconds while phasing"] = function(num, _, skill) return triggerExtraSkill(skill, num) end,