MCondition = {} local this = MCondition local _ConditionConfig = { [0] = function(skill, condition) --0:无限制条件 return true end, [1] = function(skill, condition) --1:我方任意神将生命百分比 【比较类型】 N(万分比) local conId = condition[1] local comType = condition[2] local comValue = condition[3] -- 获取该技能相同阵营人物 local roleList = RoleManager.Query(function(role) return role.camp == skill.owner.camp end) -- 判断 for _, role in ipairs(roleList) do local hpf = role:GetRoleData(RoleDataName.Hp) / role:GetRoleData(RoleDataName.MaxHp) if BattleUtil.CompareValue(hpf, comValue/10000, comType) then return true end end return false end, [2] = function(skill, condition) --2:回合数 【比较类型】 N local conId = condition[1] local comType = condition[2] local comValue = condition[3] -- 获取当前回合 local curRound = BattleLogic.GetCurRound() return BattleUtil.CompareValue(curRound, comValue, comType) end, [3] = function(skill, condition) --2:回合数 【比较类型】 N 且 概率为 N local conId = condition[1] local comType = condition[2] local comValue = condition[3] local rand = condition[4] -- 获取当前回合 local curRound = BattleLogic.GetCurRound() local isRoundOk = BattleUtil.CompareValue(curRound, comValue, comType) -- 判断概率 local r = Random.Range01() local isRandomOk = r <= rand/10000 return isRoundOk and isRandomOk end, [4] = function(skill, condition) --4:行动单位的职业设定 【比较类型】 N local conId = condition[1] local comType = condition[2] local comValue = condition[3] -- 当前释放技能的单位的职业 local professionId = skill.owner.professionId return professionId == comValue end, } -- 条件检测 function MCondition.CheckCondition(skill, condition) if not condition then return true end local conId = condition[1] local comType = condition[2] local comValue = condition[3] return _ConditionConfig[conId](skill, condition) end return MCondition