修复技能CD减少
This commit is contained in:
parent
8e68921ead
commit
55d6525971
1 changed files with 27 additions and 13 deletions
|
|
@ -114,6 +114,14 @@ end
|
||||||
---* ========== 技能CD事件系统 ==========
|
---* ========== 技能CD事件系统 ==========
|
||||||
MagicOBJ.SkillCD_handlers = {}
|
MagicOBJ.SkillCD_handlers = {}
|
||||||
|
|
||||||
|
---* 技能ID→技能名映射(供getskillcscd查询原始CD用)
|
||||||
|
MagicOBJ.SkillNameMap = {
|
||||||
|
[66] = "开天斩",
|
||||||
|
[26] = "烈火剑法",
|
||||||
|
[56] = "逐日剑法",
|
||||||
|
[12] = "刺杀剑术",
|
||||||
|
}
|
||||||
|
|
||||||
---* 注册技能CD减少源
|
---* 注册技能CD减少源
|
||||||
---* key: 唯一标识(如"套装_xxx")
|
---* key: 唯一标识(如"套装_xxx")
|
||||||
---* callback: function(actor) -> {{skillId, cdMs}, ...} or nil
|
---* callback: function(actor) -> {{skillId, cdMs}, ...} or nil
|
||||||
|
|
@ -131,33 +139,39 @@ function MagicOBJ:unregSkillCD(key)
|
||||||
end
|
end
|
||||||
|
|
||||||
---* 推送技能CD刷新事件(外部统一入口)
|
---* 推送技能CD刷新事件(外部统一入口)
|
||||||
|
---* 回调返回的是减少量(reductionMs),此函数用原始CD减去减少量
|
||||||
function MagicOBJ:pushSkillCD(actor)
|
function MagicOBJ:pushSkillCD(actor)
|
||||||
local cdMap = {}
|
local reduceMap = {} -- {skillId = totalReductionMs}
|
||||||
for key, callback in pairs(self.SkillCD_handlers or {}) do
|
for key, callback in pairs(self.SkillCD_handlers or {}) do
|
||||||
local ok, ret = pcall(callback, actor)
|
local ok, ret = pcall(callback, actor)
|
||||||
if ok and ret then
|
if ok and ret then
|
||||||
for _, v in ipairs(ret) do
|
for _, v in ipairs(ret) do
|
||||||
local skillId, cdMs = v[1], v[2]
|
local skillId, reductionMs = v[1], v[2]
|
||||||
if skillId and cdMs and cdMs > 0 then
|
if skillId and reductionMs and reductionMs > 0 then
|
||||||
if not cdMap[skillId] or cdMs < cdMap[skillId] then
|
---* 多个来源减同一技能CD,累加减少量
|
||||||
cdMap[skillId] = cdMs
|
reduceMap[skillId] = (reduceMap[skillId] or 0) + reductionMs
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for skillId, cdMs in pairs(cdMap) do
|
---* 遍历所有映射技能,先恢复原始CD再减(防止脱装备后CD不恢复)
|
||||||
LOGDump(cdMs)
|
for skillId, skillName in pairs(MagicOBJ.SkillNameMap) do
|
||||||
SetSkillMaxCD(actor, skillId, cdMs)
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
---* 套装技能CD配置
|
---* 套装技能CD配置
|
||||||
|
---* value = {{skillId, reductionMs}, ...} 减少量(毫秒)
|
||||||
MagicOBJ.SuitSkillCD = {
|
MagicOBJ.SuitSkillCD = {
|
||||||
[2001] = {{66, 1000},{26, 1000},{56, 1000}}, -- 开天斩/烈火剑法/逐日剑法 CD=1秒
|
[2001] = {{66, 1000},{26, 1000},{56, 1000}}, -- 减1秒
|
||||||
[2002] = {{66, 2000},{26, 2000},{56, 2000}}, -- 开天斩/烈火剑法/逐日剑法 CD=2秒
|
[2002] = {{66, 2000},{26, 2000},{56, 2000}}, -- 减2秒
|
||||||
[2003] = {{66, 3000},{56, 3000},{26, 3000}}, -- 开天斩/烈火剑法/逐日剑法 CD=3秒
|
[2003] = {{66, 3000},{56, 3000},{26, 3000}}, -- 减3秒
|
||||||
[2004] = {{66, 4000},{56, 4000},{26, 4000}}, -- 刺杀剑术/开天斩/烈火剑法 CD=4秒
|
[2004] = {{66, 4000},{56, 4000},{26, 4000}}, -- 减4秒
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue