Merge branch 'china/dev' of http://60.1.1.230/gaoxin/JL_Client into china/dev
commit
750761f866
Binary file not shown.
Before Width: | Height: | Size: 313 KiB After Width: | Height: | Size: 44 KiB |
|
@ -2,92 +2,161 @@ require("Modules.Battle.Logic.Monster.MonsterSkill.MCondition")
|
|||
MTrigger = {}
|
||||
local this = MTrigger
|
||||
|
||||
-- local _TriggerConfig = {
|
||||
-- [1] = { --1:敌方单位行动前
|
||||
-- event = BattleEventName.RoleTurnStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local role = args[1]
|
||||
-- return role.camp ~= skill.owner.camp
|
||||
-- end
|
||||
-- },
|
||||
-- [2] = {--2:敌方单位行动后
|
||||
-- event = BattleEventName.RoleTurnEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local role = args[1]
|
||||
-- return role.camp ~= skill.owner.camp
|
||||
-- end
|
||||
-- },
|
||||
-- [3] = {--3:我方单位行动前
|
||||
-- event = BattleEventName.RoleTurnStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local role = args[1]
|
||||
-- return role.camp == skill.owner.camp
|
||||
-- end
|
||||
-- },
|
||||
-- [4] = {--4:我方单位行动后
|
||||
-- event = BattleEventName.RoleTurnEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local role = args[1]
|
||||
-- return role.camp == skill.owner.camp
|
||||
-- end
|
||||
-- },
|
||||
-- [5] = {--5:战前
|
||||
-- event = BattleEventName.BattleStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- return true
|
||||
-- end
|
||||
-- },
|
||||
-- [6] = {--6:奇数回合开始前
|
||||
-- event = BattleEventName.BattleRoundStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local curRound = args[1]
|
||||
-- return curRound%2 == 1
|
||||
-- end
|
||||
-- },
|
||||
-- [7] = {--7:偶数回合开始前
|
||||
-- event = BattleEventName.BattleRoundStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local curRound = args[1]
|
||||
-- return curRound%2 == 0
|
||||
-- end
|
||||
-- },
|
||||
-- [8] = {--8:奇数回合结束后
|
||||
-- event = BattleEventName.BattleRoundEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local curRound = args[1]
|
||||
-- return curRound%2 == 1
|
||||
-- end
|
||||
-- },
|
||||
-- [9] = {--9:偶数回合结束后
|
||||
-- event = BattleEventName.BattleRoundEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local curRound = args[1]
|
||||
-- return curRound%2 == 0
|
||||
-- end
|
||||
-- },
|
||||
-- [10] = {--10:回合开始前
|
||||
-- event = BattleEventName.BattleRoundStart,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- return true
|
||||
-- end
|
||||
-- },
|
||||
-- [11] = {--11:回合结束后
|
||||
-- event = BattleEventName.BattleRoundEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- return true
|
||||
-- end
|
||||
-- },
|
||||
-- [12] = {--12:我方单位释放技能后
|
||||
-- event = BattleEventName.SkillCastEnd,
|
||||
-- triggerFunc = function(skill, ...)
|
||||
-- local args = {...}
|
||||
-- local castSkill = args[1]
|
||||
-- return castSkill.owner.camp == skill.owner.camp and castSkill.owner.job==2 and (castSkill.type==BattleSkillType.DeadSkill or castSkill.type==BattleSkillType.Extra or castSkill.type==BattleSkillType.Special)
|
||||
-- end
|
||||
-- },
|
||||
-- }
|
||||
|
||||
local _TriggerConfig = {
|
||||
[1] = { --1:敌方单位行动前
|
||||
event = BattleEventName.RoleTurnStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.RoleTurnStart] = {
|
||||
[1] = function(skill, ...) --1:敌方单位行动前
|
||||
local args = {...}
|
||||
local role = args[1]
|
||||
return role.camp ~= skill.owner.camp
|
||||
end
|
||||
},
|
||||
[2] = {--2:敌方单位行动后
|
||||
event = BattleEventName.RoleTurnEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
local args = {...}
|
||||
local role = args[1]
|
||||
return role.camp ~= skill.owner.camp
|
||||
end
|
||||
},
|
||||
[3] = {--3:我方单位行动前
|
||||
event = BattleEventName.RoleTurnStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
end,
|
||||
[3] = function(skill, ...) --3:我方单位行动前
|
||||
local args = {...}
|
||||
local role = args[1]
|
||||
return role.camp == skill.owner.camp
|
||||
end
|
||||
},
|
||||
[4] = {--4:我方单位行动后
|
||||
event = BattleEventName.RoleTurnEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.RoleTurnEnd] = {
|
||||
[2] = function(skill, ...)--2:敌方单位行动后
|
||||
local args = {...}
|
||||
local role = args[1]
|
||||
return role.camp ~= skill.owner.camp
|
||||
end,
|
||||
[4] = function(skill, ...)--4:我方单位行动后
|
||||
local args = {...}
|
||||
local role = args[1]
|
||||
return role.camp == skill.owner.camp
|
||||
end
|
||||
},
|
||||
[5] = {--5:战前
|
||||
event = BattleEventName.BattleStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.BattleStart] = {
|
||||
[5] = function(skill, ...)--5:战前
|
||||
return true
|
||||
end
|
||||
},
|
||||
[6] = {--6:奇数回合开始前
|
||||
event = BattleEventName.BattleRoundStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.BattleRoundStart] = {
|
||||
[6] = function(skill, ...)--6:奇数回合开始前
|
||||
local args = {...}
|
||||
local curRound = args[1]
|
||||
return curRound%2 == 1
|
||||
end
|
||||
},
|
||||
[7] = {--7:偶数回合开始前
|
||||
event = BattleEventName.BattleRoundStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
end,
|
||||
[7] = function(skill, ...)--7:偶数回合开始前
|
||||
local args = {...}
|
||||
local curRound = args[1]
|
||||
return curRound%2 == 0
|
||||
end,
|
||||
[10] = function(skill, ...)--10:回合开始前
|
||||
return true
|
||||
end
|
||||
},
|
||||
[8] = {--8:奇数回合结束后
|
||||
event = BattleEventName.BattleRoundEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.BattleRoundEnd] = {
|
||||
[8] = function(skill, ...)--8:奇数回合结束后
|
||||
local args = {...}
|
||||
local curRound = args[1]
|
||||
return curRound%2 == 1
|
||||
end
|
||||
},
|
||||
[9] = {--9:偶数回合结束后
|
||||
event = BattleEventName.BattleRoundEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
end,
|
||||
[9] = function(skill, ...)--9:偶数回合结束后
|
||||
local args = {...}
|
||||
local curRound = args[1]
|
||||
return curRound%2 == 0
|
||||
end
|
||||
},
|
||||
[10] = {--10:回合开始前
|
||||
event = BattleEventName.BattleRoundStart,
|
||||
triggerFunc = function(skill, ...)
|
||||
end,
|
||||
[11] = function(skill, ...)--11:回合结束后
|
||||
return true
|
||||
end
|
||||
},
|
||||
[11] = {--11:回合结束后
|
||||
event = BattleEventName.BattleRoundEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
return true
|
||||
end
|
||||
},
|
||||
[12] = {--12:我方单位释放技能后
|
||||
event = BattleEventName.SkillCastEnd,
|
||||
triggerFunc = function(skill, ...)
|
||||
[BattleEventName.SkillCastEnd] = {
|
||||
[12] = function(skill, ...)--12:我方单位释放技能后
|
||||
local args = {...}
|
||||
local castSkill = args[1]
|
||||
return castSkill.owner.camp == skill.owner.camp and castSkill.owner.job==2 and (castSkill.type==BattleSkillType.DeadSkill or castSkill.type==BattleSkillType.Extra or castSkill.type==BattleSkillType.Special)
|
||||
|
@ -104,32 +173,48 @@ end
|
|||
function this.InitListener()
|
||||
--每次初始化时间监听前 清除下缓存数据
|
||||
MCondition.ClearCache()
|
||||
for triggerId, config in pairs(_TriggerConfig) do
|
||||
BattleLogic.Event:AddEvent(config.event, function(...)
|
||||
for event, list in pairs(_TriggerConfig) do
|
||||
BattleLogic.Event:AddEvent(event, function(...)
|
||||
-- 用于排序
|
||||
local firstList = {}
|
||||
-- 用于排序
|
||||
local sortList = {}
|
||||
-- 判断是否有需要触发的技能
|
||||
|
||||
local triggerSkill = this.TriggerList[triggerId]
|
||||
if not triggerSkill then
|
||||
return
|
||||
end
|
||||
for _, trigger in ipairs(triggerSkill) do
|
||||
local skill = trigger.skill
|
||||
local condition = trigger.condition
|
||||
-- 判断技能是否可以释放
|
||||
if skill:canCastSkill() then
|
||||
-- 判断是否符合触发类型条件
|
||||
if config.triggerFunc(skill, ... ) then
|
||||
-- 检测是否符合子条件
|
||||
if MCondition.CheckCondition(skill, condition) then
|
||||
-- 加入技能排序对列
|
||||
table.insert(sortList, skill)
|
||||
for triggerId, triggerFunc in pairs(list) do
|
||||
-- 判断是否有需要触发的技能
|
||||
local triggerSkill = this.TriggerList[triggerId]
|
||||
if triggerSkill then
|
||||
for _, trigger in ipairs(triggerSkill) do
|
||||
local skill = trigger.skill
|
||||
local condition = trigger.condition
|
||||
-- 判断技能是否可以释放
|
||||
if skill:canCastSkill() then
|
||||
-- 判断是否符合触发类型条件
|
||||
if triggerFunc(skill, ... ) then
|
||||
-- 检测是否符合子条件
|
||||
if MCondition.CheckCondition(skill, condition) then
|
||||
-- 加入技能排序对列
|
||||
if skill.owner.position == 100 then
|
||||
table.insert(firstList, skill)
|
||||
else
|
||||
table.insert(sortList, skill)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- 对技能进行排序
|
||||
table.sort(firstList, function(a, b)
|
||||
-- 同阵营按位置排序
|
||||
if a.owner.camp == b.owner.camp then
|
||||
return a.owner.position < b.owner.position
|
||||
else
|
||||
-- 不同阵营的根据先手阵营排序
|
||||
return a.owner.camp == BattleLogic.FirstCamp
|
||||
end
|
||||
end)
|
||||
-- 对技能进行排序
|
||||
table.sort(sortList, function(a, b)
|
||||
-- 同阵营按位置排序
|
||||
if a.owner.camp == b.owner.camp then
|
||||
|
@ -140,6 +225,9 @@ function this.InitListener()
|
|||
end
|
||||
end)
|
||||
-- 依次加入技能管理
|
||||
for _, skill in ipairs(firstList) do
|
||||
SkillManager.AddMonsterSkill(skill)
|
||||
end
|
||||
for _, skill in ipairs(sortList) do
|
||||
SkillManager.AddMonsterSkill(skill)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue