Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 3 additions & 14 deletions src/Modules/CalcMirages.lua
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ local function calculateMirage(env, config)
if mirageSkill then
local newSkill, newEnv = calcs.copyActiveSkill(env, "CALCULATOR", mirageSkill)
newSkill.skillCfg.skillCond["usedByMirage"] = true
newSkill.skillFlags.multiPart = nil
newSkill.skillFlags.haveMinion = nil
newEnv.limitedSkills = newEnv.limitedSkills or {}
newEnv.limitedSkills[cacheSkillUUID(newSkill, newEnv)] = true
newSkill.skillData.mirageUses = env.player.mainSkill.skillData.storedUses
Expand Down Expand Up @@ -150,21 +152,8 @@ function calcs.mirages(env)
postCalcFunc = function(env, newSkill, newEnv)
env.player.mainSkill = newSkill
env.player.mainSkill.infoMessage = tostring(maxMirageWarriors) .. " Mirage Warriors using " .. newSkill.activeEffect.grantedEffect.name

-- Re-link over the output
env.player.output = newEnv.player.output
if newSkill.minion then
env.minion = newEnv.player.mainSkill.minion
env.minion.output = newEnv.minion.output
end

-- Re-link over the breakdown (if present)
if newEnv.player.breakdown then
env.player.breakdown = newEnv.player.breakdown
if newSkill.minion then
env.minion.breakdown = newEnv.minion.breakdown
end
end
env.player.breakdown = newEnv.player.breakdown or env.player.breakdown
end,
mirageSkillNotFoundFunc = function(env, config)
env.player.mainSkill.disableReason = "No Saviour active skill found"
Expand Down
13 changes: 7 additions & 6 deletions src/Modules/CalcTriggers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -219,18 +219,19 @@ end
local function CWCHandler(env)
if not env.player.mainSkill.skillFlags.minion and not env.player.mainSkill.skillFlags.disable then
local triggeredSkills = {}
local trigRate = 0
local source = nil
local triggerName = "Cast While Channeling"
local output = env.player.output
local breakdown = env.player.breakdown
for _, skill in ipairs(env.player.activeSkillList) do
local match1 = env.player.mainSkill.activeEffect.grantedEffect.fromItem and skill.socketGroup and skill.socketGroup.slot == env.player.mainSkill.socketGroup.slot
local match2 = (not env.player.mainSkill.activeEffect.grantedEffect.fromItem) and skill.socketGroup == env.player.mainSkill.socketGroup
if env.player.mainSkill.triggeredBy.gemData and calcLib.canGrantedEffectSupportActiveSkill(env.player.mainSkill.triggeredBy.gemData.grantedEffect, skill) and skill ~= env.player.mainSkill and (match1 or match2) and not isTriggered(skill) then
source, trigRate = findTriggerSkill(env, skill, source, trigRate)
local slotMatch = slotMatch(env, skill)
if not source then
local canSupport = env.player.mainSkill.triggeredBy.gemData and calcLib.canGrantedEffectSupportActiveSkill(env.player.mainSkill.triggeredBy.gemData.grantedEffect, skill)
if skill.skillData.triggerTime and canSupport and skill ~= env.player.mainSkill and slotMatch and not isTriggered(skill) then
source = skill
end
end
if skill.skillData.triggeredWhileChannelling and (match1 or match2) then
if skill.skillData.triggeredWhileChannelling and slotMatch then
t_insert(triggeredSkills, packageSkillDataForSimulation(skill, env))
end
end
Expand Down
Loading