71 lines
2.4 KiB
Lua
71 lines
2.4 KiB
Lua
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 |