diff --git a/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua b/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua index 8505bb4c..b3857f46 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua @@ -114,6 +114,14 @@ end ---* ========== CD¼ϵͳ ========== MagicOBJ.SkillCD_handlers = {} +---* IDӳ(getskillcscdѯԭʼCD) +MagicOBJ.SkillNameMap = { + [66] = "ն", + [26] = "һ𽣷", + [56] = "ս", + [12] = "ɱ", +} + ---* עἼCDԴ ---* key: Ψһʶ("װ_xxx") ---* callback: function(actor) -> {{skillId, cdMs}, ...} or nil @@ -131,33 +139,39 @@ function MagicOBJ:unregSkillCD(key) end ---* ͼCDˢ¼(ⲿͳһ) +---* صصǼ(reductionMs)˺ԭʼCDȥ function MagicOBJ:pushSkillCD(actor) - local cdMap = {} + local reduceMap = {} -- {skillId = totalReductionMs} for key, callback in pairs(self.SkillCD_handlers or {}) do local ok, ret = pcall(callback, actor) if ok and ret then for _, v in ipairs(ret) do - local skillId, cdMs = v[1], v[2] - if skillId and cdMs and cdMs > 0 then - if not cdMap[skillId] or cdMs < cdMap[skillId] then - cdMap[skillId] = cdMs - end + local skillId, reductionMs = v[1], v[2] + if skillId and reductionMs and reductionMs > 0 then + ---* ԴͬһCDۼӼ + reduceMap[skillId] = (reduceMap[skillId] or 0) + reductionMs end end end end - for skillId, cdMs in pairs(cdMap) do - LOGDump(cdMs) - SetSkillMaxCD(actor, skillId, cdMs) + ---* ӳ似ܣȻָԭʼCDټ(ֹװCDָ) + for skillId, skillName in pairs(MagicOBJ.SkillNameMap) do + local originalCD = getskillcscd(skillName) or 0 + if originalCD > 0 then + local totalReduce = reduceMap[skillId] or 0 + local finalCD = math.max(0, originalCD - totalReduce) + SetSkillMaxCD(actor, skillId, finalCD) + end end end ---* װCD +---* value = {{skillId, reductionMs}, ...} () MagicOBJ.SuitSkillCD = { - [2001] = {{66, 1000},{26, 1000},{56, 1000}}, -- ն/һ𽣷/ս CD=1 - [2002] = {{66, 2000},{26, 2000},{56, 2000}}, -- ն/һ𽣷/ս CD=2 - [2003] = {{66, 3000},{56, 3000},{26, 3000}}, -- ն/һ𽣷/ս CD=3 - [2004] = {{66, 4000},{56, 4000},{26, 4000}}, -- ɱ/ն/һ𽣷 CD=4 + [2001] = {{66, 1000},{26, 1000},{56, 1000}}, -- 1 + [2002] = {{66, 2000},{26, 2000},{56, 2000}}, -- 2 + [2003] = {{66, 3000},{56, 3000},{26, 3000}}, -- 3 + [2004] = {{66, 4000},{56, 4000},{26, 4000}}, -- 4 }