战斗同步

grimm 2024-04-27 16:28:50 +08:00
parent 654a73fd1a
commit 0227b97065
14 changed files with 249 additions and 723 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -54,7 +54,6 @@ end
--效果表 --效果表
local effectList = { local effectList = {
--造成[a]%的[b]伤害 --造成[a]%的[b]伤害
--a[float],b[伤害类型] --a[float],b[伤害类型]
[1] = function(caster, target, args, interval, skill) [1] = function(caster, target, args, interval, skill)
@ -63,7 +62,6 @@ local effectList = {
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target) caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target)
BattleLogic.WaitForTrigger(interval, function () BattleLogic.WaitForTrigger(interval, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1) BattleUtil.CalDamage(skill, caster, target, dt, f1)
-- LogError("造成伤害"..os:clock());
end) end)
end, end,
--造成[a]%的[b]伤害【AOE】 --造成[a]%的[b]伤害【AOE】
@ -622,7 +620,7 @@ local effectList = {
end) end)
end, end,
--[d]改变[a]属性[b]%,最大叠加[c]层 --[a]属性[b]%,最大叠加[c]层,[d]改变
--a[属性],b[float],c[int],d[改变类型] --a[属性],b[float],c[int],d[改变类型]
[36] = function(caster, target, args, interval, skill) [36] = function(caster, target, args, interval, skill)
local pro1 = args[1] local pro1 = args[1]
@ -2256,7 +2254,7 @@ local effectList = {
local i1 = args[1] local i1 = args[1]
--如果身上有不灭效果就不会加普攻兼容金翅大鹏10星天赋 by王振兴 --如果身上有不灭效果就不会加普攻兼容金翅大鹏10星天赋 by王振兴
if not BattleLogic.BuffMgr:HasBuff(caster,BuffName.NoDead) then if not BattleLogic.BuffMgr:HasBuff(caster,BuffName.NoDead) then
BattleLogic.WaitForTrigger(0.5+1.35, function () BattleLogic.WaitForTrigger(0.5, function ()
caster:InsertSkill(BattleSkillType.Normal, false, true, nil) caster:InsertSkill(BattleSkillType.Normal, false, true, nil)
end) end)
end end
@ -3139,49 +3137,6 @@ local effectList = {
target:AddBuff(Buff.Create(caster, BuffName.Control, round, ctrType)) target:AddBuff(Buff.Create(caster, BuffName.Control, round, ctrType))
end) end)
end, end,
--近战造成[a]次,[b]%的[C]伤害
--a[int],b[float],C[伤害类型]
[160] = function(caster, target, args, interval, skill)
local f1 = args[1]
local dt = args[2]
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target)
local skillNumberTime=skill.skillnumberTime or nil
if skillNumberTime and skillNumberTime[1] and (type(skillNumberTime[1][1]) ~= "userdata" and skillNumberTime[1][1]~=0) then
for i = 1, #skillNumberTime do
local index=i
BattleLogic.WaitForTrigger(skillNumberTime[index][2]/1000, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1)
-- LogError("触发"..index.."次"..skillNumberTime[index][2].."|"..interval)
--LogError("attackdamage"..os.date())
--LogError("currentframe"..BattleLogic.CurFrame())
end)
end
else
BattleLogic.WaitForTrigger(interval, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1)
--LogError("attackdamage"..os.date())
end)
end
end,
--远程造成[a]次,[b]%的[C]伤害
--a[int],b[float],C[伤害类型]
[161] = function(caster, target, args, interval, skill)
local f1 = args[1]
local dt = args[2]
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target)
BattleLogic.WaitForTrigger(interval, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1)
end)
end,
-- --己方场上人数 < 地方人数,对[a]目标选择[b]属性[c]%的法术伤害并附加逆风效果,不低于对[d]目标选择[e]属性[f]%的御甲并附加乘风效果。 -- --己方场上人数 < 地方人数,对[a]目标选择[b]属性[c]%的法术伤害并附加逆风效果,不低于对[d]目标选择[e]属性[f]%的御甲并附加乘风效果。
-- [160] = function(caster, target, args, interval, skill) -- [160] = function(caster, target, args, interval, skill)
-- local c1 = args[1]--持续回合数 -- local c1 = args[1]--持续回合数
@ -3207,8 +3162,7 @@ local effectList = {
--添加一个[a]印记,持续[b]回合 --添加一个[a]印记,持续[b]回合
--a[int]:7逆风风 8顺风风 --a[int]:7逆风风 8顺风风
[162] = function(caster, target, args, interval, skill) [160] = function(caster, target, args, interval, skill)
local type = args[1] local type = args[1]
local round= args[2] local round= args[2]
BattleLogic.WaitForTrigger(interval, function () BattleLogic.WaitForTrigger(interval, function ()
@ -3221,7 +3175,32 @@ local effectList = {
target:AddBuff(Buff.Create(caster, BuffName.BreakArmor, round,type)) target:AddBuff(Buff.Create(caster, BuffName.BreakArmor, round,type))
end) end)
end, end,
--为目标添加[a]属性[b]%的御甲
--a[int],b[float]
[161] = function(caster, target, args, interval, skill)
local pro = args[1]
local v1 = args[2]
BattleLogic.WaitForTrigger(interval, function ()
local val = floor(BattleUtil.FP_Mul(v1, caster:GetRoleData(BattlePropList[pro])))
--如果身上有御甲就添加御甲的值
BattleUtil.AddBlood(target,val)
end)
end,
--如果目标生命百分比小于等于[a]%,直接斩杀剩余所有血量(御甲无效)
--a[float]
[162] = function(caster, target, args, interval, skill)
local prop = args[1]
local isBoss=BattleUtil.CheckIsBoss(target)
if isBoss then
return
end
local curProp=BattleUtil.GetHPPencent(target)
if curProp>prop then
return
end
BattleUtil.Seckill(skill,caster,target)
end,
--近战造成[a]次,[b]%的[C]伤害 --近战造成[a]次,[b]%的[C]伤害
--a[int],b[float],C[伤害类型] --a[int],b[float],C[伤害类型]
[163] = function(caster, target, args, interval, skill) [163] = function(caster, target, args, interval, skill)
@ -3230,15 +3209,12 @@ local effectList = {
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target) caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target)
local skillNumberTime=skill.skillnumberTime or nil local skillNumberTime=skill.skillnumberTime or nil
if skillNumberTime and (tonumber(skillNumberTime)~=nil and skillNumberTime[1] and skillNumberTime[1][1]~=0) then if skillNumberTime and skillNumberTime[1][1]~=0 then
for i = 1, #skillNumberTime do for i = 1, #skillNumberTime do
local index=i local index=i
BattleLogic.WaitForTrigger(skillNumberTime[index][2]/1000, function () BattleLogic.WaitForTrigger(skillNumberTime[index][2]/1000, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1) BattleUtil.CalDamage(skill, caster, target, dt, f1)
-- LogError("触发"..index.."次"..skillNumberTime[index][2].."|"..interval) -- LogError("触发"..index.."次"..skillNumberTime[index][2].."|"..interval)
--LogError("attackdamage"..os.date())
--LogError("currentframe"..BattleLogic.CurFrame())
end) end)
end end
@ -3247,7 +3223,6 @@ local effectList = {
BattleLogic.WaitForTrigger(interval, function () BattleLogic.WaitForTrigger(interval, function ()
BattleUtil.CalDamage(skill, caster, target, dt, f1) BattleUtil.CalDamage(skill, caster, target, dt, f1)
--LogError("attackdamage"..os.date())
end) end)
end end

View File

@ -71,7 +71,6 @@ function EffectCaster:DoEffect(caster, target, eff, duration, skill)
-- --
if Effect[e.type] then if Effect[e.type] then
Effect[e.type](caster, target, e.args, duration, skill) Effect[e.type](caster, target, e.args, duration, skill)
-- LogError("造成效果"..os.date())
end end
end end
@ -136,16 +135,13 @@ function EffectCaster:Cast()
local arr = self.effectTargets[i] local arr = self.effectTargets[i]
if arr and #arr > 0 then if arr and #arr > 0 then
-- Ч¹ûÑÓ³Ù1Ö¡ÉúЧ -- Ч¹ûÑÓ³Ù1Ö¡ÉúЧ
-- LogError("注册effect"..os.date())
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)
local count = math.min(chooseId % 10, #arr) local count = math.min(chooseId % 10, #arr)
if count == 0 then if count == 0 then
count = #arr count = #arr
end end
-- LogError("执行effect1"..os.date())
table.sort(arr, function(a, b) table.sort(arr, function(a, b)
return a.position < b.position return a.position < b.position
end) end)
@ -156,7 +152,6 @@ function EffectCaster:Cast()
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
--LogError("执行effect2"..os.date())
self:takeEffect(self.skill.owner, arr[j], effects, i, self.skill.hitTime, self.skill) self:takeEffect(self.skill.owner, arr[j], effects, i, self.skill.hitTime, self.skill)
end end
end end

View File

@ -12801,5 +12801,116 @@ local passivityList = {
end end
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart, onRoundChange,nil,nil,role) BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart, onRoundChange,nil,nil,role)
end, end,
--我方[a]神将附加自身[b][c]%的伤害属性,并附加[d]%[e]属性到神将身上 (d e不配置不生效)
--a[int],b[int],c[float],d[float],e[int]
[482]=function(role,args,id,judge)
local type=args[1]
local p1=args[2]
local v1=args[3]
local p2=args[4]
local v2=args[5]
local attack=0
local addPro=0
local onRoundChange=function(round)
if round==1 then
attack=floor(role:GetRoleData(BattlePropList[p1])*v1)
if p2 and v2 then
addPro = role:GetRoleData(BattlePropList[v2])*p2
end
local list = RoleManager.Query(function(v) return v.camp == role.camp and v.professionId==type end)
for i=1,#list do
--list[i].data:AddValue(RoleDataName.Attack,attack)
list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, 0, RoleDataName.Attack, attack, 1))
if addPro~=0 then
--list[i].data:AddValue(BattlePropList[v2],addPro)
list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, 0, BattlePropList[v2],addPro, 1))
end
end
end
end
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart, onRoundChange,nil,nil,role)
end,
-- 战斗中生命每减少[a]%,自身[b]属性就[c]改变[d]%,持续[e]回合
-- a[float],b[int 属性],c[int 改变类型],d[float],e[int]
[483] = function(role, args,id,judge)
local f1 = args[1]
local pro = args[2]
local ct = args[3]
local v1 = args[4]
local r1 = args[5]
local maxDamage= floor(role:GetRoleData(RoleDataName.MaxHp)*f1)
local curDamage=0
local onRoleBeDamaged = function(caster, damage, bCrit, finalDmg, damageType, dotType, skill)
curDamage=curDamage+finalDmg
local num=0
if curDamage>maxDamage then
num= floor(curDamage/maxDamage)
curDamage=curDamage- maxDamage*num
end
if num>0 then
role:AddBuff(Buff.Create(role, BuffName.PropertyChange, r1, BattlePropList[pro], v1*num, ct))
end
end
role.Event:AddEvent(BattleEventName.RoleBeDamaged, onRoleBeDamaged,nil,nil,role)
end,
-- 战斗中生命每减少[a]%,友军 [b]属性就[c]改变[d]%,持续[e]回合
-- a[float],b[int 属性],c[int 改变类型],d[float],e[int]
[484] = function(role, args,id,judge)
local f1 = args[1]
local pro = args[2]
local ct = args[3]
local v1 = args[4]
local r1 = args[5]
local maxDamage= floor(role:GetRoleData(RoleDataName.MaxHp)*f1)
local curDamage=0
local onRoleBeDamaged = function(caster, damage, bCrit, finalDmg, damageType, dotType, skill)
local num=0
curDamage=curDamage+finalDmg
if curDamage>maxDamage then
num=floor(curDamage/maxDamage)
curDamage=curDamage- maxDamage*num
end
if num>0 then
local list=RoleManager.Query(function(v) return v.camp == role.camp end)
for i=1,#list do
list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, r1, BattlePropList[pro], v1*num, ct))
end
end
end
role.Event:AddEvent(BattleEventName.RoleBeDamaged, onRoleBeDamaged,nil,nil,role)
end,
--降低的护甲转移到[a],持续[b]回合
--a[int 1:自身 2全体],b[int]
[485] = function(role, args,id,judge)
local type=args[1]
local r1=args[2]
--移除破甲
local buffBeAdd=function(buff)
if buff.caster==role and buff.type==BuffName.PropertyChange and buff.changeType==4 then
local phy1=buff.target:GetRoleData(buff.propertyName)
BattleLogic.WaitForTrigger(1, function ()
local phy2=buff.target:GetRoleData(buff.propertyName)
local list={}
if type==1 then
table.insert(list,role)
else
list=RoleManager.Query(function(v) return v.camp == role.camp end)
end
for i=1,#list do
if phy1-phy2>0 then
list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, r1,buff.propertyName, phy1-phy2, 1))
end
end
end)
end
end
role.Event:AddEvent(BattleEventName.BuffCaster, buffBeAdd,nil,nil,role)
end,
} }
return passivityList return passivityList

View File

@ -431,7 +431,6 @@ function BattleLogic.CheckBattleLogic()
end end
-- 释放技能后,递归交换阵营 -- 释放技能后,递归交换阵营
--RoleLogic
SkillRole:CastSkill() SkillRole:CastSkill()
end end
@ -494,9 +493,7 @@ end
function BattleLogic.WaitForTrigger(delayTime, action) function BattleLogic.WaitForTrigger(delayTime, action)
delayTime = BattleUtil.ErrorCorrection(delayTime) delayTime = BattleUtil.ErrorCorrection(delayTime)
local delayFrame = floor(delayTime * BattleLogic.GameFrameRate + 0.5) local delayFrame = floor(delayTime * BattleLogic.GameFrameRate + 0.5)
if delayFrame == 0 then --0延迟的回调直接调用 if delayFrame == 0 then --0延迟的回调直接调用
action() action()
@ -504,7 +501,6 @@ function BattleLogic.WaitForTrigger(delayTime, action)
end end
local item = actionPool:Get() local item = actionPool:Get()
item[1] = curFrame + delayFrame item[1] = curFrame + delayFrame
--LogError("curFrame"..curFrame+delayFrame)
item[2] = action item[2] = action
tbActionList:Add(item) tbActionList:Add(item)
end end
@ -568,7 +564,6 @@ function BattleLogic.Update()
local action = tbActionList.buffer[index] local action = tbActionList.buffer[index]
if action[1] <= curFrame then if action[1] <= curFrame then
action[2]() action[2]()
-- LogError("执行帧位"..action[1])
actionPool:Put(action) actionPool:Put(action)
tbActionList:Remove(index) tbActionList:Remove(index)
else else

View File

@ -47,7 +47,7 @@ function MSkill:Init(owner, group, index, skillData,playerSkillIndex)
self.attackCount = effectData[4] -- 伤害持续时间内伤害次数 self.attackCount = effectData[4] -- 伤害持续时间内伤害次数
-- 初始化 -- 初始化
local effects = {} local effects = {}
for i=7, #effectData do for i=5, #effectData do
table.insert(effects, effectData[i]) table.insert(effects, effectData[i])
end end
self.effectCaster = EffectCaster:New() self.effectCaster = EffectCaster:New()

View File

@ -46,7 +46,7 @@ function RoleLogic:Init(uid, data, position)
self.proTranList:Clear() --属性转换列表 self.proTranList:Clear() --属性转换列表
self.isHaveNoDead = false --是否有不灭 self.isHaveNoDead = false --是否有不灭
self.Event:ClearEvent() self.Event:ClearEvent()
self.DamageTextTable={}
self.skill = data.skill self.skill = data.skill
if self.skill then if self.skill then
self.skill[1] = tonumber(self.skill[1]) self.skill[1] = tonumber(self.skill[1])
@ -190,7 +190,6 @@ function RoleLogic:Init(uid, data, position)
end end
-- 初始怒气值放在被动之后计算,使被动对初始怒气的影响生效 -- 初始怒气值放在被动之后计算,使被动对初始怒气的影响生效
self.Rage = self.Rage + self:GetRoleData(RoleDataName.InitRage)-- 当前怒气值 self.Rage = self.Rage + self:GetRoleData(RoleDataName.InitRage)-- 当前怒气值
--self.readyAction=data.readAction or (ConfigManager.TryGetConfigData(ConfigName.RoleConfig,self.roleId).ReadyAction or 0)
end end
@ -563,17 +562,15 @@ function RoleLogic:AddSkill(type, isRage, isAdd, targets,isTrigger,isLoop)
if self.ctrl_chaos then if self.ctrl_chaos then
type=BattleSkillType.ChaosNormal type=BattleSkillType.ChaosNormal
--混乱普攻使用普攻特效 --混乱普攻使用普攻特效
-- effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4],{100001,{1,1,1}},self.skill[5],self.skill[6]} effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4],{100001,{1,1,1}}}
effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4], self.skill[5] , self.skill[6] ,{200221,{1,1,1}}}
isTriggerJudge=false isTriggerJudge=false
end end
if self.ctrl_lock then if self.ctrl_lock then
type=BattleSkillType.ChaosNormal type=BattleSkillType.ChaosNormal
--嘲讽普攻使用普攻特效 --嘲讽普攻使用普攻特效
--effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4],{200221,{1,1,1}},self.skill[5],self.skill[6]} effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4],{200221,{1,1,1}}}
isTriggerJudge=false isTriggerJudge=false
effectData={self.skill[1],self.skill[2],self.skill[3],self.skill[4],self.skill[5] , self.skill[6] ,{200221,{1,1,1}}}
end end
SkillManager.AddSkill(self, effectData, type, targets, isAdd, isRage,isTriggerJudge,isLoop) SkillManager.AddSkill(self, effectData, type, targets, isAdd, isRage,isTriggerJudge,isLoop)

View File

@ -9,17 +9,15 @@ function Skill:New()
return o return o
end end
function Skill:Init(role, effectData, type, targets, isAdd, isRage,isTriggerJudge,isSpuer) --type 0 异妖 1 点技 2 滑技 function Skill:Init(role, effectData, type, targets, isAdd, isRage,isTriggerJudge) --type 0 异妖 1 点技 2 滑技
self.type = type self.type = type
--skill = {技能ID, 命中时间, 持续时间, 伤害次数, {目标id1, 效果1, 效果2, ...},{目标id2, 效果3, 效果4, ...}, ...} --skill = {技能ID, 命中时间, 持续时间, 伤害次数, {目标id1, 效果1, 效果2, ...},{目标id2, 效果3, 效果4, ...}, ...}
--效果 = {效果类型id, 效果参数1, 效果参数2, ...} --效果 = {效果类型id, 效果参数1, 效果参数2, ...}
self.owner = role self.owner = role
self.id = effectData[1] -- 技能ID self.id = effectData[1] -- 技能ID
self.hitTime = effectData[2] -- 效果命中需要的时间a EffectCombat.KeyFrame self.hitTime = effectData[2] -- 效果命中需要的时间
self.continueTime = effectData[3] -- 命中后伤害持续时间 EffectCombat.SkillDuration self.continueTime = effectData[3] -- 命中后伤害持续时间
self.attackCount = effectData[4] -- 伤害持续时间内伤害次数 EffectCombat.SkillNumber self.attackCount = effectData[4] -- 伤害持续时间内伤害次数
self.skillnumberTime = effectData[5] -- 多段伤害的每段触发时间
self.AttackDisplaceOffset = effectData[6] -- 位移終點
self.isTriggePassivity = false -- 是否一个技能只触发一次被动 true每次释放技能只会触发一次 self.isTriggePassivity = false -- 是否一个技能只触发一次被动 true每次释放技能只会触发一次
self.triggerPassivityId={} self.triggerPassivityId={}
self.isKill = false --是否技能击杀目标 self.isKill = false --是否技能击杀目标
@ -35,10 +33,9 @@ function Skill:Init(role, effectData, type, targets, isAdd, isRage,isTriggerJudg
else else
self.isTriggerJudge = true self.isTriggerJudge = true
end end
self.isSpuer=isSpuer
-- 初始化 -- 初始化
local effects = {} local effects = {}
for i=7, #effectData do for i=5, #effectData do
table.insert(effects, effectData[i]) table.insert(effects, effectData[i])
end end
self.effectCaster = EffectCaster:New() self.effectCaster = EffectCaster:New()
@ -66,7 +63,6 @@ end
-- 释放技能 -- 释放技能
-- func 技能释放完成回调 -- func 技能释放完成回调
function Skill:Cast(func) function Skill:Cast(func)
--基本是自身的dispose加回合切换的检测
self.castDoneFunc = func self.castDoneFunc = func
self.isTriggePassivity=false self.isTriggePassivity=false
self.triggerPassivityId={} self.triggerPassivityId={}
@ -83,14 +79,10 @@ function Skill:Cast(func)
return return
end end
--end --end
--具体effect的触发注册延迟造成伤害事件
self.effectCaster:Cast() self.effectCaster:Cast()
--LogError(self.id.."釋放完成"..os:clock())
end end
self.owner.Event:DispatchEvent(BattleEventName.SkillCastBefore, self) self.owner.Event:DispatchEvent(BattleEventName.SkillCastBefore, self)
-- 释放技能开始 -- 释放技能开始
--playview的技能表现层通过这个触发具体的在skillcaster里面的skillcast函数
--LogError("timestart"..os.date())
self.owner.Event:DispatchEvent(BattleEventName.SkillCast, self) self.owner.Event:DispatchEvent(BattleEventName.SkillCast, self)
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self) BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self)
-- 只对效果1的目标发送事件效果1是技能的直接伤害目标 -- 只对效果1的目标发送事件效果1是技能的直接伤害目标
@ -98,30 +90,22 @@ function Skill:Cast(func)
role.Event:DispatchEvent(BattleEventName.BeSkillCast, self) role.Event:DispatchEvent(BattleEventName.BeSkillCast, self)
end) end)
--技能的施法时间计算根据当前目标id关联的持续时间取其中时间最长的一个 --技能的施法时间计算根据当前目标id关联的持续时间取其中时间最长的一个
--local duration = self.hitTime + self.continueTime+(self.skillnumberTime[1][1]==0 and 0 or self.skillnumberTime[#self.skillnumberTime][2]/1000) local duration = self.hitTime + self.continueTime
local duration = self.continueTime
-- 结算时间向后延长0.2秒,避免在效果结算完成前就结束了技能释放 -- 结算时间向后延长0.2秒,避免在效果结算完成前就结束了技能释放
local time=1.2 local time=1.2
-- if self.id==1282 then -- if self.id==1282 then
-- time=1 -- time=1
-- end -- end
-- LogError("Pasue"..os.date()) BattleLogic.WaitForTrigger(duration + time, function()
local addTime=0
if self.skillnumberTime and self.skillnumberTime[1] then
addTime=((type(self.skillnumberTime[1][1]) == "userdata" or self.skillnumberTime[1][1]==0) and 0 or self.skillnumberTime[#self.skillnumberTime][2])/1000
end
BattleLogic.WaitForTrigger(duration + time+addTime, function()
self.owner.Event:DispatchEvent(BattleEventName.SkillCastEnd, self) self.owner.Event:DispatchEvent(BattleEventName.SkillCastEnd, self)
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCastEnd, self) BattleLogic.Event:DispatchEvent(BattleEventName.SkillCastEnd, self)
-- LogError("End"..os.date())
-- LogError("duration"..duration)
-- 只对效果1的目标发送事件效果1是技能的直接伤害目标 -- 只对效果1的目标发送事件效果1是技能的直接伤害目标
self.effectCaster:ForeachTargets(function(role) self.effectCaster:ForeachTargets(function(role)
role.Event:DispatchEvent(BattleEventName.BeSkillCastEnd, self) role.Event:DispatchEvent(BattleEventName.BeSkillCastEnd, self)
end) end)
-- 技能结束 -- 技能结束
self:EndSkill() self:EndSkill()
--LogError("end"..os.date())
--技能消息发送完后 iskill 设置为false --技能消息发送完后 iskill 设置为false
self.isKill=false self.isKill=false
end) end)

View File

@ -42,7 +42,7 @@ function WeaponSkill:Init(owner, group, index, skillData,playerSkillIndex)
self.attackCount = effectData[4] -- 伤害持续时间内伤害次数 self.attackCount = effectData[4] -- 伤害持续时间内伤害次数
-- 初始化 -- 初始化
local effects = {} local effects = {}
for i=7, #effectData do for i=5, #effectData do
table.insert(effects, effectData[i]) table.insert(effects, effectData[i])
end end
self.effectCaster = EffectCaster:New() self.effectCaster = EffectCaster:New()

View File

@ -1,487 +1,20 @@
v1.0.158 v1.0.9
1.同步战斗提jiao 1、同步数
v1.0.157
1.同步战斗提jiao
v1.0.156
1.同步战斗提jiao
v1.0.155
1.同步战斗提jiao
v1.0.154
1.同步战斗提jiao
v1.0.153
1.同步战斗提jiao
v1.0.152
1.同步战斗提jiao
v1.0.151
1.同步战斗提jiao
v1.0.150
1.同步战斗提jiao
v1.0.149
1.同步战斗提jiao
v1.0.148
1.同步战斗提jiao
v1.0.147
1.同步战斗提jiao
v1.0.146
1.同步战斗提jiao
v1.0.145
1.同步战斗提jiao
v1.0.144
1.同步战斗提jiao
v1.0.143
1.同步战斗提jiao
v1.0.142
1.同步战斗提jiao
v1.0.141
1.同步战斗提jiao
v1.0.140
1.同步战斗提jiao
v1.0.139
1.同步战斗提jiao
v1.0.138
1.同步战斗提jiao
v1.0.137
1.同步战斗提交
v1.0.136
1.同步战斗提交
v1.0.135
1.同步战斗提交
v1.0.134
1.被动474修改
v1.0.133
1.添加新英雄
v1.0.132
1.新增被动470
v1.0.131
1.疯体同步山河设计图表
v1.0.130
1.同步到凤体分支
v1.0.129
1.新英雄提交
v1.0.128
1.御甲修改提交
v1.0.127
1.被动327修改
v1.0.126
1. 注释无用log
v1.0.125
1. 添加神兵战斗
v1.0.124
1. 被动441修改
v1.0.123
1. 修改困难副本星级条件
v1.0.122
1. 添加女娲,阎罗王新英雄
v1.0.121
1. 战斗添加回合最大伤害治疗限制
v1.0.120
1. 添加金翅大鹏变身卡
v1.0.119
1. 添加法相相关被动 454被动
v1.0.118
1. 添加152效果
v1.0.117
1. 添加151效果
2. 御甲也对间接伤害生效
v1.0.116
1. 187被动治疗神将也会生效
v1.0.115
1.添加被动444445
v1.0.114
1.被动273189184修改
master_zh_test同步数据表2022_09_02_16_53_59
master_zh_test同步数据表2022_08_24_16_07_52
v1.0.113
1.被动387 437修改
master_zh_test同步数据表2022_08_17_18_26_38
master_zh_test同步数据表2022_08_10_18_33_50
master_zh_test同步数据表2022_08_10_17_37_10
master_zh_test同步数据表2022_08_10_15_22_09
master_zh_test同步数据表2022_08_03_17_06_59
v1.0.112
1.online_special 同步到zh_test
v1.0.111
1.438修改
v1.0.110
1.新增神印
master_zh_test同步数据表2022_03_29_17_06_53
master_zh_test同步数据表2022_03_22_11_35_14
master_zh_test同步数据表2022_03_22_11_35_01
master_zh_test同步数据表2022_03_21_16_48_11
v1.0.109
1.新增神系英雄技能被动
master_zh_test同步数据表2022_03_14_18_15_06
master_zh_test同步数据表2022_03_14_17_24_10
v1.0.108
1.新增429 430 431被动
master_zh_test同步数据表2022_03_08_16_52_49
v1.0.107
1.新增427 428被动
master_zh_test同步数据表2022_03_07_17_48_07
master_zh_test同步数据表2022_03_02_15_24_08
v1.0.106
1.新增425 426被动
master_zh_test同步数据表2022_03_01_15_02_06
v1.0.105
1.新增425 426被动
v1.0.104
1.被动375修改
master_zh_test同步数据表2022_02_22_19_20_35
master_zh_test同步数据表2022_02_22_18_59_21
v1.0.103
1.被动226 423 424修改
master_zh_test同步数据表2022_02_22_10_34_06
master_zh_test同步数据表2022_02_15_15_03_42
v1.0.102
1.效果108修改
2.被动356修改 新增422
master_zh_test同步数据表2022_02_08_14_14_42
v1.0.101
1.修复姑获鸟神魂五对所有人生效的问题
v1.0.100
1.御甲初始化修改
master_zh_test同步数据表2022_01_24_18_51_19
v1.0.99
1.御甲显示修改
v1.0.98
1.被动414修改
master_zh_test同步数据表2022_01_24_10_59_41
master_zh_test同步数据表2022_01_18_15_41_40
v1.0.97
1.护盾buff修改
master_zh_test同步数据表2022_01_17_16_56_13
master_zh_test同步数据表2022_01_17_16_30_59
master_zh_test同步数据表2022_01_15_19_12_17
v1.0.96
1.被动417-421 白金法宝
master_zh_test同步数据表2022_01_11_16_23_47
master_zh_test同步数据表2022_01_10_18_57_57
v1.0.95
1.新增被动414-417
2.添加御甲修改
v1.0.94
1.被动283修改
v1.0.93
1.战斗结束获取队伍剩余角色信息接口修改
master_zh_test同步数据表2021_12_28_09_56_49
master_zh_test同步数据表2021_12_24_18_32_21
v1.0.92
1.新增412被动 56被动修改
master_zh_test同步数据表2021_12_21_18_13_54
v1.0.91
1.护盾buff修改
2.鲸吞魂印修改
v1.0.90
1、修复RoleManager table.removebyvalue方法空报错
master_zh_test同步数据表2021_12_14_12_03_26
v1.0.89
1.第五期神魂
2.第二期变身卡
master_zh_test同步数据表2021_12_13_18_06_46
v1.0.88
1.被动257修改
2.不灭修改
v1.0.87
1.被动257修改
master_zh_test同步数据表2021_12_07_17_09_58
master_zh_test同步数据表2021_12_07_16_56_46
v1.0.86
1 战斗驱动逻辑修改 回合转换添加延时减半
2.被动257修改
v1.0.85
1 战斗驱动逻辑修改 回合转换添加延时减半
v1.0.84
1 战斗驱动逻辑修改 回合转换添加延时
master_zh_test同步数据表2021_12_06_19_02_28
v1.0.83
1 第四期神魂添加
master_zh_test同步数据表2021_11_30_12_06_26
v1.0.82
1 目标选择逻辑添加
master_zh_test同步数据表2021_11_29_19_48_14
v1.0.81
1、效果137修改
master_zh_test同步数据表2021_11_27_22_26_12
v1.0.80
1、同步战斗逻辑
master_zh_test同步数据表2021_11_23_11_29_17
v1.0.79
1、被动391修改 我方流血显示修改
master_zh_test同步数据表2021_11_22_18_00_26
v1.0.78
1、被动112 258 360修改提交
2. 伤害公式修改
3.战斗超时 pvp添加战斗类型
v1.0.77
1、第三批神魂提交
v1.0.76
1、修复前后端战斗数据格式不一致导致的结果不一致
master_zh_test同步数据表2021_11_16_11_07_25
v1.0.75
1添加不处理增伤的伤害接口
master_zh_test同步数据表2021_11_15_17_10_47
v1.0.74
1第二期神魂技能
master_zh_test同步数据表2021_11_08_18_01_19
v1.0.73
1被动285修改
master_zh_test同步数据表2021_11_08_17_48_59
v1.0.73
1添加日志
v1.0.72
1第一期神魂技能
v1.0.71
1灵兽技能检测添加初始化
2.追加技能特效修改
v1.0.70
1、添加神魂被动技能
master_zh_test同步数据表2021_11_01_14_07_31
master_zh_test同步数据表2021_10_26_10_10_26
master_zh_test同步数据表2021_10_25_18_57_36
v1.0.69
1、战斗公式修改
master_zh_test同步数据表2021_10_22_18_57_18
v1.0.68
1、添加主角技能
2. 被动199修改
master_zh_test同步数据表2021_10_18_11_00_42
master_zh_test同步数据表2021_10_16_19_07_28
master_zh_test同步数据表2021_10_16_19_06_48
v1.0.67
1、被动344添加空判断
2. 战斗力公式修改
master_zh_test同步数据表2021_10_12_15_58_23
master_zh_test同步数据表2021_10_12_10_25_47
master_zh_test同步数据表2021_10_11_18_25_43
v1.0.66
1、被动312修改
master_zh_test同步数据表2021_10_09_18_47_41
master_zh_test同步数据表2021_10_09_18_46_50
v1.0.65
1、被动116 258 281 312 344 250修改
2. 精卫借的怒气不会回复怒气
3. 添加不处理增伤被动的方法
master_zh_test同步数据表2021_09_28_17_45_03
v1.0.64
1、353 351 137 被动修改
2. 添加获取没有出发不灭的目标
master_zh_test同步数据表2021_09_27_18_41_38
v1.0.63
1、353被动修改
v1.0.62
1、添加御甲buff
2.添加最后一期紫府神印,添加白金装备被动 觉醒被动修改
master_zh_test同步数据表2021_09_26_20_35_14
master_zh_test同步数据表2021_09_18_21_14_36
master_zh_test同步数据表2021_09_18_18_42_35
v1.0.61
1、技能是否能释放 添加是否有技能目标判断
2.被动196 200 188 修改
master_zh_test同步数据表2021_09_17_16_21_53
master_zh_test同步数据表2021_09_15_20_05_28
master_zh_test同步数据表2021_09_15_14_23_26
master_zh_test同步数据表2021_09_14_15_46_46
master_zh_test同步数据表2021_09_14_11_51_05
v1.0.60
1、被动56修改
master_zh_test同步数据表2021_09_11_18_04_19
v1.0.59
1、被动261 修改
master_zh_test同步数据表2021_09_10_18_24_51
v1.0.58
1、修复方法缺失报错
v1.0.57
1、尝试修复孙悟空大招不会增加伤害的问题
2、添加用于debug的log
master_zh_test同步数据表2021_09_07_11_00_31
v1.0.56
1.选生命百分比最少目标逻辑修改 去掉有不灭单位
2. 死亡不把怒气显示清空
3.被动99 307 选目标逻辑修改
v1.0.55
1.被动263 269 274 332 112 145 修改
2. 添加战斗日志
v1.0.54
1. 被动91 被动115 160修改
2. Dot类buff清除逻辑修改
master_zh_test同步数据表2021_08_27_18_25_18
master_zh_test同步数据表2021_08_21_16_34_06
v1.0.54
1. 被动141 310 283 330 336修改
master_zh_test同步数据表2021_08_02_19_27_29
v1.0.53
1. 随机种子修改
master_zh_test同步数据表2021_07_31_17_55_16
master_zh_test同步数据表2021_07_31_17_54_20
v1.0.52
1. 死亡技能不会被控制
2.追加技能是否触发特性修改
master_zh_test同步数据表2021_07_26_11_10_56
v1.0.51
1. 被动292 修改
v1.0.50
1. 被动292 319修改
master_zh_test同步数据表2021_07_13_18_19_09
master_zh_test同步数据表2021_07_10_20_33_05
v1.0.49
1. 同步客户端逻辑
v1.0.48
1. 新增紫府神印被动效果
v1.0.47
1. 新增英雄觉醒被动 及 困难副本被动 效果
master_zh_test同步数据表2021_06_30_07_33_23
master_zh_test同步数据表2021_06_28_13_40_30
v1.0.46
1、同步数据表
v1.0.45
1. 【战斗】修改免疫控制效果清除提示
v1.0.44
1. 【战斗】修复群体性的免疫效果不会正常消失的问题
v1.0.43
1. 被动200修改
v1.0.42
1. 困难副本关卡表修改
v1.0.41
1. 同步客户端战斗消息号
2. 同步苦难关卡数据
v1.0.40
1、回滚v1.0.39
v1.0.39
1、删除LogGreen方法
v1.0.38
1. 同步客户端困难关卡表逻辑
v1.0.37
1. 通关星级条件检测逻辑4修改
v1.0.36
1. 同步表数据
v1.0.35
1. rolelogic添加查找被动id接口
2.通关星级条件检测逻辑9修改
v1.0.34
1. 战斗去除log
v1.0.33
1. 同步被动逻辑
v1.0.32
1. 精英副本星级判断逻辑修改
v1.0.31
1. 添加精英副本相关战斗逻辑
v1.0.30
1. 同步客户端被动表lua文件
v1.0.29
1、新增客户端数据文件客户端数据解析文件
1、被动新增 313用于动态从表数据里面抓取被动数据
v1.0.28
1、BattleMain添加测试接口
v1.0.27
1、清除轮转方法防止收到上一局战斗的影响
v1.0.26
1、合并海外战斗内容
v1.0.25
1、选择单个对位目标修改
v1.0.24
1、同步大闹天宫新增英雄专属圣物的代码逻辑修改
v1.0.23
1、被动249修改
v1.0.22
1、效果叠加显示修改注释逻辑里关于效果覆盖的代码
2 同步战斗逻辑添加boss展示
v1.0.21
1、混乱后的普攻不触发任何特性
2 舍身济世分担的伤害改为可以触发被动
v1.0.20
1、修复孙悟空和观音菩萨同时死亡导致报错的问题
v1.0.19
1、298被动修改 解除中毒效果前先解除禁疗
v1.0.18
1、禁疗显示血量 +0
2、126效果修改 生命百分比伤害会被无敌盾挡住
v1.0.17
1、新增新将观音的技能及被动
2、新增选择两列的目标选择逻辑
3、有技能在释放时不会检测轮转逻辑
v1.0.16
1、修改获取最大血量的方式修复灵兽伤害未计算到最大血量中的问题
2、被动120删除无用的事件
3、log打印添加结果数据
v1.0.15
1、添加第四期英雄觉醒
2、添加结算界面显示log
v1.0.14_2
1、战斗类型常量化
2、森罗幻境战斗超出最大回合数结果返回2并返回双方剩余血量
v1.0.14
1、 244被动修改
2、 检测是否为boss方法修改
v1.0.13
1、 新增灵兽 金乌技能逻辑修改
2、 新增 124 125 效果
3、 rolelogic 新增job字段
v1.0.12
1、【魂印】舍身济世魂印修改为不触发任何特性
2、【技能】阎罗王的连接符伤害结算改为最终伤害。
3、【技能】洛神的溢出伤害修改为最终伤害。
v1.0.11
1、修复圣物效果数据错误
2、不灭buff实现方式修改
3、灵兽buff回合计算方式修改
v1.0.10
1、修复部分圣物效果数据计算错误的问题
v1.0.9
1、二期觉醒技能添加
v1.0.8 v1.0.8
1、被动技能添加id和类型字段 1、同步数
2、部分被动技能优化
v1.0.7 v1.0.7
1、修复单个回合技能上限数值会在后端累加当一场战斗结束此数值刚好达到上限时下一场战斗毕定卡死的问题 1、同步数
v1.0.6 v1.0.6
1、添加战斗超时判断 1、同步数
v1.0.5 v1.0.5
1、修复人物行动前被持续伤害击杀触发被击杀时追加技能释放技能后战斗卡死的问题 1、同步数
2、添加每回合技能释放数量上限
v1.0.4 v1.0.4
1、被动112 修复参数错误导致的报错 1、同步数据
2、被动196 普通攻击不会被降低分摊比
v1.0.3 v1.0.3
1、被动技能200添加分摊比例检测 1、同步数据
2、特殊处理部分特性被动使其不会在被部分技能触发
v1.0.2 v1.0.2
修复灵兽技能结束后检测轮转可能会导致战斗死循环的问题 1、同步数据
v1.0.1 v1.0.1
1、觉醒相关被动技能加入 1、同步沾毒
2、减伤盾效果修改
v1.0.0 v1.0.0
1、创建战斗版本文件 1、创建真0.1战斗服
2、灵兽技能加入