back_recharge
parent
43f14ff544
commit
8e5e1dc6b2
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue