fight sync
parent
7fcd9ec264
commit
dec631ed02
|
@ -139,22 +139,7 @@ local effectList = {
|
||||||
local ct = args[3]
|
local ct = args[3]
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
BattleUtil.RandomAction(f2, function ()
|
BattleUtil.RandomAction(f2, function ()
|
||||||
if target.skill then
|
target:AddSkillCD(f1, ct)
|
||||||
if f1 == 0 then --值为0时,直接清除CD
|
|
||||||
target.skill.sp = target.skill.spPass
|
|
||||||
else
|
|
||||||
if ct == 1 then --加算
|
|
||||||
target.skill.sp = max(target.skill.sp - floor(f1 * BattleLogic.GameFrameRate), 0)
|
|
||||||
elseif ct == 2 then --乘加算(百分比属性加算)
|
|
||||||
target.skill.sp = max(target.skill.sp - floor(target.skill.spPass * f1),0)
|
|
||||||
elseif ct == 3 then --减算
|
|
||||||
target.skill.sp = min(target.skill.sp + floor(f1 * BattleLogic.GameFrameRate), target.skill.spPass)
|
|
||||||
elseif ct == 4 then --乘减算(百分比属性减算)
|
|
||||||
target.skill.sp = min(target.skill.sp + floor(target.skill.spPass * f1), target.skill.spPass)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
target.Event:DispatchEvent(BattleEventName.RoleCDChanged, target.skill.sp, target.skill.spPass)
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
|
@ -539,27 +524,9 @@ local effectList = {
|
||||||
local d = args[4]
|
local d = args[4]
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
BattleUtil.RandomAction(f2, function ()
|
BattleUtil.RandomAction(f2, function ()
|
||||||
local func = function()
|
target:AddSkillCD(f1, ct)
|
||||||
if target.skill then
|
|
||||||
if f1 == 0 then --值为0时,直接清除CD
|
|
||||||
target.skill.sp = target.skill.spPass
|
|
||||||
else
|
|
||||||
if ct == 1 then --加算
|
|
||||||
target.skill.sp = max(target.skill.sp - floor(f1 * BattleLogic.GameFrameRate), 0)
|
|
||||||
elseif ct == 2 then --乘加算(百分比属性加算)
|
|
||||||
target.skill.sp = max(target.skill.sp - floor(target.skill.spPass * f1),0)
|
|
||||||
elseif ct == 3 then --减算
|
|
||||||
target.skill.sp = min(target.skill.sp + floor(f1 * BattleLogic.GameFrameRate), target.skill.spPass)
|
|
||||||
elseif ct == 4 then --乘减算(百分比属性减算)
|
|
||||||
target.skill.sp = min(target.skill.sp + floor(target.skill.spPass * f1), target.skill.spPass)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
target.Event:DispatchEvent(BattleEventName.RoleCDChanged, target.skill.sp, target.skill.spPass)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
func()
|
|
||||||
local trigger = function(skill) --新增监听事件,在印记技能结束回调时移除(印记buff可覆盖旧buff)
|
local trigger = function(skill) --新增监听事件,在印记技能结束回调时移除(印记buff可覆盖旧buff)
|
||||||
func()
|
target:AddSkillCD(f1, ct)
|
||||||
end
|
end
|
||||||
target.Event:AddEvent(BattleEventName.SkillCast, trigger)
|
target.Event:AddEvent(BattleEventName.SkillCast, trigger)
|
||||||
target:AddBuff(Buff.Create(caster, BuffName.Brand, d, "cd", function ()
|
target:AddBuff(Buff.Create(caster, BuffName.Brand, d, "cd", function ()
|
||||||
|
@ -715,7 +682,7 @@ local effectList = {
|
||||||
BattleUtil.CalDamage(caster, target, dt, f1)
|
BattleUtil.CalDamage(caster, target, dt, f1)
|
||||||
if target.isDead then
|
if target.isDead then
|
||||||
BattleUtil.RandomAction(f4, function ()
|
BattleUtil.RandomAction(f4, function ()
|
||||||
caster.skill.sp = caster.skill.spPass
|
caster:AddSkillCD(0)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -156,7 +156,7 @@ function Skill:Cast()
|
||||||
end
|
end
|
||||||
self.owner.Event:DispatchEvent(BattleEventName.SkillCast, self)
|
self.owner.Event:DispatchEvent(BattleEventName.SkillCast, self)
|
||||||
else
|
else
|
||||||
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self.cd) --队伍技能结构和其他相同,只是cd项为对应异妖类型
|
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self.cd, self.owner.camp) --队伍技能结构和其他相同,只是cd项为对应异妖类型
|
||||||
end
|
end
|
||||||
|
|
||||||
--技能的施法时间计算,根据当前目标id关联的持续时间,取其中时间最长的一个
|
--技能的施法时间计算,根据当前目标id关联的持续时间,取其中时间最长的一个
|
||||||
|
|
|
@ -6,6 +6,7 @@ RoleLogic.__index = RoleLogic
|
||||||
local Random = Random
|
local Random = Random
|
||||||
local floor = math.floor
|
local floor = math.floor
|
||||||
local max = math.max
|
local max = math.max
|
||||||
|
local min = math.min
|
||||||
local Passivity = require("Modules/Battle/Logic/Base/Passivity")
|
local Passivity = require("Modules/Battle/Logic/Base/Passivity")
|
||||||
|
|
||||||
local skillPool = BattleObjectPool.New(function ()
|
local skillPool = BattleObjectPool.New(function ()
|
||||||
|
@ -134,6 +135,74 @@ function RoleLogic:GetSkillCD()
|
||||||
return cd
|
return cd
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RoleLogic:AddSkillCD(value, type)
|
||||||
|
self.Event:DispatchEvent(BattleEventName.RoleCDChanged)
|
||||||
|
if value == 0 then --为0直接清CD
|
||||||
|
if self.skill and not self.superSkill then
|
||||||
|
self.skill.sp = self.skill.spPass
|
||||||
|
elseif not self.skill and self.superSkill then
|
||||||
|
self.superSkill.sp = self.superSkill.spPass
|
||||||
|
elseif self.skill and self.superSkill then
|
||||||
|
self.skill.sp = self.skill.spPass
|
||||||
|
self.superSkill.sp = self.superSkill.spPass
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local cdTotal = 0
|
||||||
|
if self.skill and not self.superSkill then
|
||||||
|
cdTotal = self.skill.spPass
|
||||||
|
elseif not self.skill and self.superSkill then
|
||||||
|
cdTotal = self.superSkill.spPass
|
||||||
|
elseif self.skill and self.superSkill then
|
||||||
|
if self.superSkill.sp >= self.superSkill.spPass then --滑技cd生效,加点技cd,否则加滑技cd+点技cd
|
||||||
|
cdTotal = self.skill.spPass
|
||||||
|
else
|
||||||
|
cdTotal = self.superSkill.spPass + self.skill.spPass
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local delta = 0
|
||||||
|
if type == 1 then --加算
|
||||||
|
delta = floor(value * BattleLogic.GameFrameRate)
|
||||||
|
elseif type == 2 then --乘加算(百分比属性加算)
|
||||||
|
delta = floor(value * cdTotal)
|
||||||
|
elseif type == 3 then --减算
|
||||||
|
delta = -floor(value * BattleLogic.GameFrameRate)
|
||||||
|
elseif type == 4 then --乘减算(百分比属性减算)
|
||||||
|
delta = -floor(value * cdTotal)
|
||||||
|
end
|
||||||
|
|
||||||
|
if delta > 0 then --加cd加cd最大值
|
||||||
|
if self.skill and not self.superSkill then
|
||||||
|
self.skill.spPass = self.skill.spPass + delta
|
||||||
|
elseif not self.skill and self.superSkill then
|
||||||
|
self.superSkill.spPass = self.superSkill.spPass + delta
|
||||||
|
elseif self.skill and self.superSkill then
|
||||||
|
if self.superSkill.sp < self.superSkill.spPass then --滑技cd没好,加滑技cd,否则加点技cd
|
||||||
|
self.superSkill.spPass = self.superSkill.spPass + delta
|
||||||
|
else
|
||||||
|
self.skill.spPass = self.skill.spPass + delta
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else --减cd减cd当前值
|
||||||
|
delta = -delta
|
||||||
|
if self.skill and not self.superSkill then
|
||||||
|
self.skill.sp = min(self.skill.sp + delta, self.skill.spPass)
|
||||||
|
elseif not self.skill and self.superSkill then
|
||||||
|
self.superSkill.sp = min(self.superSkill.sp + delta, self.superSkill.spPass)
|
||||||
|
elseif self.skill and self.superSkill then
|
||||||
|
if delta <= self.superSkill.spPass - self.superSkill.sp then
|
||||||
|
self.superSkill.sp = self.superSkill.sp + delta
|
||||||
|
else
|
||||||
|
delta = delta - self.superSkill.spPass + self.superSkill.sp --滑技cd不够减,继续减点技cd
|
||||||
|
self.superSkill.sp = self.superSkill.spPass
|
||||||
|
self.skill.sp = self.skill.sp + delta
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function RoleLogic:GetRoleData(property)
|
function RoleLogic:GetRoleData(property)
|
||||||
local tarPro = self.data:GetData(property)
|
local tarPro = self.data:GetData(property)
|
||||||
local item
|
local item
|
||||||
|
|
Loading…
Reference in New Issue