back_recharge
mengchengzhen 2021-03-10 11:28:29 +08:00
parent 43f14ff544
commit 8e5e1dc6b2
1 changed files with 20 additions and 20 deletions

View File

@ -42,7 +42,7 @@ function EffectCaster:DoEffect(caster, target, eff, duration, skill)
e.args[i] = eff.args[i] e.args[i] = eff.args[i]
end end
-- 检测被动技能对技能参数的影响 -- 检测被动技能对技能参数的影响
local function _PassiveCheck(pe) local function _PassiveCheck(pe)
if pe then if pe then
e = pe e = pe
@ -60,7 +60,7 @@ end
function EffectCaster:takeEffect(caster, target, effects, effectIndex, duration, skill) function EffectCaster:takeEffect(caster, target, effects, effectIndex, duration, skill)
for k=1, #effects do for k=1, #effects do
-- 如果不是第一个效果对列的第一个效果则判断是否命中 -- 如果不是第一个效果对列的第一个效果则判断是否命中
if k ~= 1 and effectIndex == 1 then if k ~= 1 and effectIndex == 1 then
if self:CheckTargetIsHit(target) then if self:CheckTargetIsHit(target) then
self:DoEffect(caster, target, effects[k], duration, skill) self:DoEffect(caster, target, effects[k], duration, skill)
@ -76,25 +76,25 @@ function EffectCaster:ChooseTarget()
-- --
self.effectTargets = {} self.effectTargets = {}
self.targetIsHit = {} self.targetIsHit = {}
-- 先计算出技能的目标 -- 先计算出技能的目标
for i=1, #self.effectList do for i=1, #self.effectList do
-- 是否重新选择目标 -- 是否重新选择目标
local isReTarget = true local isReTarget = true
if self.targets and self.targets[i] then if self.targets and self.targets[i] then
self.effectTargets[i] = self.targets[i] self.effectTargets[i] = self.targets[i]
-- 判断是否有有效目标 -- 判断是否有有效目标
for _, role in ipairs(self.effectTargets[i]) do for _, role in ipairs(self.effectTargets[i]) do
if not role:IsRealDead() then if not role:IsRealDead() then
isReTarget = false isReTarget = false
end end
end end
end end
-- 重新选择目标 -- 重新选择目标
if isReTarget then if isReTarget then
local effectGroup = self.effectList[i] local effectGroup = self.effectList[i]
local chooseId = effectGroup.chooseId local chooseId = effectGroup.chooseId
self.effectTargets[i] = BattleUtil.ChooseTarget(self.skill.owner, chooseId) self.effectTargets[i] = BattleUtil.ChooseTarget(self.skill.owner, chooseId)
-- 检测被动对攻击目标的影响 -- 检测被动对攻击目标的影响
if i == 1 then if i == 1 then
local function _PassiveTarget(targets) local function _PassiveTarget(targets)
self.effectTargets[i] = targets self.effectTargets[i] = targets
@ -105,19 +105,19 @@ function EffectCaster:ChooseTarget()
end end
end end
-- 释放技能 -- 释放技能
-- func 技能释放完成回调 -- func 技能释放完成回调
function EffectCaster:Cast() function EffectCaster:Cast()
-- 选择目标 -- 选择目标
self:ChooseTarget() self:ChooseTarget()
-- 对目标造成相应的效果 -- 对目标造成相应的效果
for i=1, #self.effectList do for i=1, #self.effectList do
local effectGroup = self.effectList[i] local effectGroup = self.effectList[i]
local chooseId = effectGroup.chooseId local chooseId = effectGroup.chooseId
local arr = self.effectTargets[i] local arr = self.effectTargets[i]
if arr and #arr > 0 then if arr and #arr > 0 then
-- 效果延迟1帧生效 -- 效果延迟1帧生效
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function() BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function()
local effects = effectGroup.effects local effects = effectGroup.effects
local weight = math.floor(chooseId % 10000 / 100) local weight = math.floor(chooseId % 10000 / 100)
@ -125,10 +125,10 @@ function EffectCaster:Cast()
if count == 0 then if count == 0 then
count = #arr count = #arr
end end
-- 全部同时生效 -- 全部同时生效
for j=1, count do for j=1, count do
if arr[j] and not arr[j]:IsRealDead() then if arr[j] and not arr[j]:IsRealDead() then
-- 检测是否命中 -- 检测是否命中
if i == 1 then if i == 1 then
self.targetIsHit[arr[j]] = BattleUtil.CheckIsHit(self.skill.owner, arr[j],self.skill) self.targetIsHit[arr[j]] = BattleUtil.CheckIsHit(self.skill.owner, arr[j],self.skill)
end end
@ -140,7 +140,7 @@ function EffectCaster:Cast()
end end
end end
-- 遍历技能命中目标 -- 遍历技能命中目标
function EffectCaster:ForeachTargets(func) function EffectCaster:ForeachTargets(func)
local targets = self:GetDirectTargets() local targets = self:GetDirectTargets()
for _, role in ipairs(targets) do for _, role in ipairs(targets) do
@ -150,7 +150,7 @@ function EffectCaster:ForeachTargets(func)
end end
end end
-- 获取直接选择目标Id -- 获取直接选择目标Id
function EffectCaster:GetDirectChooseId() function EffectCaster:GetDirectChooseId()
local effectGroup = self.effectList[1] local effectGroup = self.effectList[1]
local chooseId = effectGroup.chooseId local chooseId = effectGroup.chooseId
@ -158,12 +158,12 @@ function EffectCaster:GetDirectChooseId()
end end
-- 获取技能的直接目标,和策划规定第一个效果的目标为直接效果目标,(包含miss的目标) -- 获取技能的直接目标,和策划规定第一个效果的目标为直接效果目标,(包含miss的目标)
function EffectCaster:GetDirectTargets() function EffectCaster:GetDirectTargets()
return self.effectTargets[1] return self.effectTargets[1]
end end
-- 获取直接目标不包含miss的目标可能为空 -- 获取直接目标不包含miss的目标可能为空
function EffectCaster:GetDirectTargetsNoMiss() function EffectCaster:GetDirectTargetsNoMiss()
local list = {} local list = {}
for _, role in ipairs(self.effectTargets[1]) do for _, role in ipairs(self.effectTargets[1]) do
@ -174,7 +174,7 @@ function EffectCaster:GetDirectTargetsNoMiss()
return list return list
end end
-- 获取技能目标最大人数 -- 获取技能目标最大人数
function EffectCaster:GetMaxTargetNum() function EffectCaster:GetMaxTargetNum()
local mainEffect = self.effectList[1] local mainEffect = self.effectList[1]
if not mainEffect then if not mainEffect then
@ -183,7 +183,7 @@ function EffectCaster:GetMaxTargetNum()
return BattleUtil.GetMaxTargetNum(mainEffect.chooseId) return BattleUtil.GetMaxTargetNum(mainEffect.chooseId)
end end
-- 判断是否命中 -- 判断是否命中
function EffectCaster:CheckTargetIsHit(role) function EffectCaster:CheckTargetIsHit(role)
return self.targetIsHit[role] return self.targetIsHit[role]
end end