战斗同步
parent
1c68fd6145
commit
be0f47068d
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
|
@ -66,6 +66,15 @@ function BattleEvent:DispatchEvent(sEventName, ...)
|
|||
if v.once then
|
||||
self:RemoveEvent(sEventName, v)
|
||||
end
|
||||
if v.role~=nil then
|
||||
BattleLogManager.Log(
|
||||
"send event",
|
||||
"event id==", tostring(sEventName),
|
||||
"camp", tostring(v.role.camp),
|
||||
"pos", tostring(v.role.position)
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -183,6 +183,14 @@ function BuffManager:AddBuff(target, buff)
|
|||
buff.caster.Event:DispatchEvent(BattleEventName.BuffCaster, buff)
|
||||
buff.caster.Event:DispatchEvent(BattleEventName.BuffCaster2, buff)
|
||||
buff.target.Event:DispatchEvent(BattleEventName.BuffBeAdd, buff)
|
||||
BattleLogManager.Log(
|
||||
"Role add Buff",
|
||||
"buff.type", tostring(buff.type),
|
||||
"target.camp==", tostring(target.camp),
|
||||
"target.position", tostring(target.position),
|
||||
"caster.camp==", tostring(buff.caster.camp),
|
||||
"caster.position", tostring(buff.caster.position)
|
||||
)
|
||||
-- 用于记录统计
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.RecordBuff, buff.caster, buff.target, buff)
|
||||
end
|
||||
|
@ -362,6 +370,7 @@ function BuffManager:Update()
|
|||
buff:OnEnd()
|
||||
buff.target.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BuffBeClear, buff)
|
||||
putBuff(buff)
|
||||
buffList:Remove(index)
|
||||
else
|
||||
|
|
|
@ -3137,6 +3137,56 @@ local effectList = {
|
|||
target:AddBuff(Buff.Create(caster, BuffName.Control, round, ctrType))
|
||||
end)
|
||||
end,
|
||||
-- --己方场上人数 < 地方人数,对[a]目标选择[b]属性[c]%的法术伤害并附加逆风效果,不低于对[d]目标选择[e]属性[f]%的御甲并附加乘风效果。
|
||||
-- [160] = function(caster, target, args, interval, skill)
|
||||
-- local c1 = args[1]--持续回合数
|
||||
-- local p1 = args[2]--控制类型
|
||||
-- local v1 = args[3]
|
||||
-- local c2 = args[4]
|
||||
-- local p1 = args[5]
|
||||
-- local v2 = args[6]
|
||||
-- BattleLogic.WaitForTrigger(interval, function ()
|
||||
-- local myArr = RoleManager.Query(function (r) return r.camp == caster.camp end)
|
||||
-- local enArr = RoleManager.Query(function (r) return r.camp ~= caster.camp end)
|
||||
-- if #myArr< #enArr then
|
||||
-- local arr1 = BattleUtil.ChooseTarget(caster, c1)
|
||||
-- for i=1, #arr1 do
|
||||
-- BattleUtil.CalDamage(skill, caster,arr1[i], v1,1)
|
||||
-- end
|
||||
|
||||
-- else
|
||||
|
||||
-- end
|
||||
-- end)
|
||||
-- end,
|
||||
|
||||
--添加一个[a]印记,持续[b]回合
|
||||
--a[int]:7逆风风 8:顺风风
|
||||
[160] = function(caster, target, args, interval, skill)
|
||||
local type = args[1]
|
||||
local round= args[2]
|
||||
BattleLogic.WaitForTrigger(interval, function ()
|
||||
if type==7 and caster.sunTime>=caster.sunMaxTime then
|
||||
return
|
||||
end
|
||||
if type==8 and caster.niTime>=caster.niMaxTime then
|
||||
return
|
||||
end
|
||||
target:AddBuff(Buff.Create(caster, BuffName.BreakArmor, round,type))
|
||||
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,
|
||||
}
|
||||
|
||||
return effectList
|
|
@ -12375,5 +12375,350 @@ local passivityList = {
|
|||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, BeDamagedFun,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 攻击目标越少对每个目标提升控制概率越高,提升概率为[a]%除以被击者的总数,提升为[b]改变,控制类型:[c],[d],[e],[f]
|
||||
-- a[float],b[int 改变类型],c[int],d[int],e[int],f[int]
|
||||
[470] = function(role, args,id,judge)
|
||||
local f1 = args[1]
|
||||
local ct = args[2]
|
||||
local v1 = args[3]
|
||||
local v2 = args[4]
|
||||
local v3 = args[5]
|
||||
local v4 = args[6]
|
||||
local ctrls={}
|
||||
if v1 then
|
||||
table.insert(ctrls,v1)
|
||||
end
|
||||
if v2 then
|
||||
table.insert(ctrls,v2)
|
||||
end
|
||||
if v3 then
|
||||
table.insert(ctrls,v3)
|
||||
end
|
||||
if v4 then
|
||||
table.insert(ctrls,v4)
|
||||
end
|
||||
local af = 0
|
||||
local onSkillCast = function(skill)
|
||||
local maxNum = skill:GetMaxTargetNum()
|
||||
if maxNum and maxNum > 0 then
|
||||
af = BattleUtil.ErrorCorrection(f1/maxNum)
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCast, onSkillCast,nil,nil,role)
|
||||
|
||||
local onPassiveRandomControl = function(func, ctrl2)
|
||||
if BattleUtil.ChecklistIsContainValue(ctrl2) then
|
||||
if func then func(af, ct) end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.PassiveRandomControl, onPassiveRandomControl,nil,nil,role)
|
||||
end,
|
||||
--己方场上人数 < 敌方人数,技能id为[a],不低于地方人数,技能id为[b],技能附带的buff生效次数为[c]
|
||||
--a[int],b[int],c[int]
|
||||
[471] = function(role, args)
|
||||
local skill1 = args[1]
|
||||
local skill2 = args[2]
|
||||
local time = args[3]
|
||||
role.sunMaxTime=time
|
||||
role.niMaxTime=time
|
||||
--检测自身技能
|
||||
local checkRoleSkill=function()
|
||||
local myArr = RoleManager.Query(function (r) return r.camp == role.camp end)
|
||||
local enArr = RoleManager.Query(function (r) return r.camp ~= role.camp end)
|
||||
if #myArr< #enArr then
|
||||
role.superSkill=BattleUtil.GetSkillData(skill1,0)
|
||||
else
|
||||
role.superSkill=BattleUtil.GetSkillData(skill2,0)
|
||||
end
|
||||
end
|
||||
|
||||
local onSkillCast = function(role)
|
||||
checkRoleSkill()
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleTurnStart, onSkillCast,nil,nil,role)
|
||||
|
||||
|
||||
local OnSkillCastEnd = function(skill)
|
||||
if skill.id==skill1 then
|
||||
role.sunTime=role.sunTime+1
|
||||
elseif skill.id==skill2 then
|
||||
role.niTime=role.niTime+1
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role)
|
||||
|
||||
end,
|
||||
-- 顺风/逆风最大次数[a]改变[b]次
|
||||
--a[int 改变类型], b[int]
|
||||
[472] = function(role, args)
|
||||
local ct = args[1]
|
||||
local time = args[2]
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, function(curRound)
|
||||
-- 第i1回合开始
|
||||
if curRound == 1 then
|
||||
role.sunMaxTime = BattleUtil.CountValue(role.sunMaxTime,time,ct)
|
||||
role.niMaxTime = BattleUtil.CountValue(role.niMaxTime,time,ct)
|
||||
end
|
||||
end)
|
||||
end,
|
||||
-- 处于[a]效果[b]状态的目标, 释放技能后自身改变[c][d]点怒气,
|
||||
-- a[int buff大类型],b[int buff小类型],c[int 改变类型],d[int]
|
||||
[473] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local ct = args[3]
|
||||
local v1 = args[4]
|
||||
|
||||
-- 释放技能后
|
||||
local onSkillEnd = function(skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if skill.type~=BattleSkillType.Special and skill.type~=BattleSkillType.Extra then
|
||||
return
|
||||
end
|
||||
--local list=BattleLogic.BuffMgr:GetAllBuffByFunc(function(buff) return buff.target==caster and buff.type==t1 and buff.damageType==t2 end)
|
||||
if BattleLogic.BuffMgr:HasBuff(skill.owner, t1, function(buff) return buff.caster == role and buff.signType == t2 end) then
|
||||
BattleLogic.WaitForTrigger(2, function () --延迟一帧移除事件,防止触发帧和结束帧为同一帧时,被动未移除
|
||||
BattleUtil.CalRage(role, skill.owner, v1, ct)
|
||||
end)
|
||||
end
|
||||
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.SkillCast, onSkillEnd,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 处于[a]效果[b]状态的目标,行动前有[c]%概率,无法行动
|
||||
-- a[int buff大类型],b[int buff小类型],c[float]
|
||||
[474] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local v1 = args[3]
|
||||
|
||||
-- 释放技能后
|
||||
local onSkillEnd = function(skiller)
|
||||
--skiller.notAction=false
|
||||
if BattleLogic.BuffMgr:HasBuff(skiller, t1, function(buff) return buff.signType == t2 and buff.caster==role end) then
|
||||
BattleUtil.RandomAction(v1, function()
|
||||
skiller.notAction=true
|
||||
end)
|
||||
end
|
||||
|
||||
local onTurnEnd = function(turner)
|
||||
turner.notAction= false
|
||||
end
|
||||
skiller.Event:AddEvent(BattleEventName.RoleTurnEnd, onTurnEnd,nil,nil,role)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleTurnStart, onSkillEnd,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 处于[a]效果[b]状态的目标,行动前有[c]%概率额外行动一次
|
||||
-- a[int buff大类型],b[int buff小类型],c[float]
|
||||
[475] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local v1 = args[3]
|
||||
|
||||
local triggerRole={}
|
||||
-- 释放技能后
|
||||
local onSkillEnd = function(skiller)
|
||||
if BattleUtil.ChecklistIsContainValue(triggerRole,skiller) then
|
||||
return
|
||||
end
|
||||
if BattleLogic.BuffMgr:HasBuff(skiller, t1, function(buff) return buff.signType == t2 and buff.caster==role end) then
|
||||
BattleUtil.RandomAction(v1, function()
|
||||
BattleLogic.InsertSkillRole(skiller)
|
||||
table.insert(triggerRole,skiller)
|
||||
end)
|
||||
end
|
||||
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleTurnStart, onSkillEnd,nil,nil,role)
|
||||
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundEnd,function(curRound)
|
||||
triggerRole={}
|
||||
end)
|
||||
end,
|
||||
|
||||
-- [a]效果[b]状态的buff消失时,有[c]%概率额外行动一次
|
||||
-- a[int buff大类型],b[int buff小类型],c[float]
|
||||
[476] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local v1 = args[3]
|
||||
|
||||
local OnBuffEnd=function(buff)
|
||||
|
||||
if buff.caster~=role then
|
||||
return
|
||||
end
|
||||
if buff.type~= t1 or buff.signType~=t2 then
|
||||
return
|
||||
end
|
||||
|
||||
BattleUtil.RandomAction(v1, function()
|
||||
BattleLogic.InsertSkillRole(role)
|
||||
end)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BuffBeClear, OnBuffEnd,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 处于[a]效果[b]状态的目标,且怒气[c]于[d]点,受到的伤害[e]改变[f]%,伤害类型[g]
|
||||
--a[int],b[int],c[int 1:大于 2:小于],d[int], e[改变类型]f[float],g[int 0:所有伤害 1:直接伤害 2:间接伤害 ]
|
||||
[477] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local cp = args[3]
|
||||
local num= args[4]
|
||||
local ct = args[5]
|
||||
local f1 = args[6]
|
||||
local type = args[7]
|
||||
|
||||
local onPassiveBeDamaging = function(func, atkRole, defRole, damage, skill, dotType)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
|
||||
return
|
||||
end
|
||||
if defRole==nil or defRole.Rage==nil then
|
||||
return
|
||||
end
|
||||
if cp==1 and defRole.Rage<=num then
|
||||
return
|
||||
end
|
||||
if cp==2 and defRole.Rage>=num then
|
||||
return
|
||||
end
|
||||
|
||||
if type==1 and not skill then
|
||||
return
|
||||
end
|
||||
|
||||
if type==2 and skill then
|
||||
return
|
||||
end
|
||||
if BattleLogic.BuffMgr:HasBuff(defRole, t1, function(buff) return buff.signType == t2 and buff.caster==role end) then
|
||||
local dmgDeduction = damage - floor(BattleUtil.ErrorCorrection(BattleUtil.CountValue(damage, f1, ct)))
|
||||
if func then func(dmgDeduction) end
|
||||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveBeDamaging,nil,nil,role)
|
||||
end,
|
||||
-- 处于[a]效果[b]状态的目标,且怒气[c]于[d]点,造成的伤害[e]改变[f]%,伤害类型[g]
|
||||
--a[int],b[int],c[int 1:大于 2:小于],d[int], e[改变类型]f[float],g[int 0:所有伤害 1:直接伤害 2:间接伤害 ]
|
||||
[478] = function(role, args,id,judge)
|
||||
local t1 = args[1]
|
||||
local t2 = args[2]
|
||||
local cp = args[3]
|
||||
local num= args[4]
|
||||
local ct = args[5]
|
||||
local f1 = args[6]
|
||||
local type = args[7]
|
||||
local onPassiveBeDamaging = function(func, atkRole, defRole, damage, skill, dotType)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if atkRole==nil or atkRole.Rage==nil then
|
||||
return
|
||||
end
|
||||
if cp==1 and atkRole.Rage<=num then
|
||||
return
|
||||
end
|
||||
if cp==2 and atkRole.Rage>=num then
|
||||
return
|
||||
end
|
||||
|
||||
if type==1 and not skill then
|
||||
return
|
||||
end
|
||||
|
||||
if type==2 and skill then
|
||||
return
|
||||
end
|
||||
if BattleLogic.BuffMgr:HasBuff(atkRole, t1, function(buff) return buff.signType == t2 and buff.caster==role end) then
|
||||
local dmgDeduction = damage - floor(BattleUtil.ErrorCorrection(BattleUtil.CountValue(damage, f1, ct)))
|
||||
if func then func(dmgDeduction) end
|
||||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveBeDamaging,nil,nil,role)
|
||||
end,
|
||||
-- 己方神将被击杀,自身释放[a]技能,释放的技能类型为[b],技能追加的额外技能额外造成目标[c][d]%的伤害;并复活该神将回复[e]%血量,每回合只触发[f]次
|
||||
-- a[int],b[int],c[int 属性id],d[float],e[float],f[int]
|
||||
[479] = function(role, args,id,judge)
|
||||
local f1 = args[1]
|
||||
local f2 = args[2]
|
||||
local f3 = args[3]
|
||||
local dt = args[4]
|
||||
local pro =args[5]
|
||||
local time=args[6]
|
||||
local addTime=0
|
||||
local extTime=0
|
||||
local deadTime=0
|
||||
local insertSkill=nil
|
||||
local onRoleHit = function(deadRole)
|
||||
if role.isExile then
|
||||
return
|
||||
end
|
||||
if addTime>=time then
|
||||
return
|
||||
end
|
||||
if deadRole.camp==role.camp and not role:IsDead() then
|
||||
addTime=addTime+1
|
||||
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function ()
|
||||
insertSkill= role:InsertExtraSkill(f1,f2)
|
||||
end)
|
||||
end
|
||||
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onRoleHit,nil,nil,role)
|
||||
|
||||
-- 直接伤害后
|
||||
local onPassiveDamaging = function(func, defRole, damage,skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
-- if extTime>=time then
|
||||
-- return
|
||||
-- end
|
||||
--观音,这个被动只有额外技能才能触发 by:王振兴 2021/1/21 17:48
|
||||
if skill and skill.isAdd and skill==insertSkill then
|
||||
--如果是boss 并且额外伤害是根据最大生命则返回
|
||||
if (f3==12 or f3==13) and BattleUtil.CheckIsBoss(defRole) then
|
||||
return
|
||||
end
|
||||
|
||||
local val = floor(BattleUtil.FP_Mul(dt, defRole:GetRoleData(BattlePropList[f3])))
|
||||
BattleUtil.FinalDamageCountShield(nil,role,defRole,val)
|
||||
--extTime=extTime+1
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role)
|
||||
|
||||
local onRoleRealDead = function(deadRole)
|
||||
if deadRole==role then
|
||||
return
|
||||
end
|
||||
|
||||
if deadTime>=time then
|
||||
return
|
||||
end
|
||||
if deadRole.camp == role.camp and not role:IsDead() then
|
||||
deadTime=deadTime+1
|
||||
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function () --延时一帧做处理,我方场上所有单位都结算死亡以后,再处理299被动回血
|
||||
deadRole:SetRelive(pro,role)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onRoleRealDead,nil,nil,role)
|
||||
|
||||
local onBattleRoundChange = function(func, caster)
|
||||
extTime=0
|
||||
addTime=0
|
||||
deadTime=0
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, onBattleRoundChange,nil,nil,role)
|
||||
end,
|
||||
}
|
||||
return passivityList
|
||||
|
|
|
@ -28,6 +28,7 @@ local allEnemyDamage=0
|
|||
local levelStarRecord
|
||||
local hardStageId =0
|
||||
local insertSkillRole=nil
|
||||
local insertSkillRoleList=nil
|
||||
--是否开启战斗日志
|
||||
BattleLogic.IsOpenBattleRecord = false
|
||||
--逻辑帧频
|
||||
|
@ -60,6 +61,7 @@ function BattleLogic.Init(data, _userData, maxRound)
|
|||
userData = _userData
|
||||
hardStageId=data.nodeId
|
||||
insertSkillRole=nil
|
||||
insertSkillRoleList={}
|
||||
BattleLogic.CurOrder = 0
|
||||
BattleLogic.TotalOrder = #data.enemyData
|
||||
BattleLogic.Clear()
|
||||
|
@ -321,7 +323,7 @@ function BattleLogic.TurnRound(debugTurn)
|
|||
--轮数变化后延时0.2秒用于初始化监听回合数被动的初始化
|
||||
BattleLogic.WaitForTrigger(0.5,function()
|
||||
-- 切换阵营
|
||||
if not insertSkillRole then
|
||||
if #insertSkillRoleList==0 and insertSkillRole==nil then
|
||||
CurCamp = (CurCamp + 1) % 2
|
||||
end
|
||||
BattleLogic.CheckBattleLogic()
|
||||
|
@ -345,8 +347,11 @@ function BattleLogic.CheckBattleLogic()
|
|||
local SkillRole
|
||||
local lastPos
|
||||
--如果有插入行动的英雄,就先让插入的英雄行动
|
||||
if insertSkillRole then
|
||||
if insertSkillRoleList and #insertSkillRoleList>0 then
|
||||
insertSkillRole=insertSkillRoleList[1]
|
||||
SkillRole =insertSkillRole
|
||||
table_removebyvalue(insertSkillRoleList,insertSkillRole)
|
||||
--table.removebyvalue(insertSkillRoleList,insertSkillRole)
|
||||
insertSkillRole=nil
|
||||
--记录下正常执行行动的英雄的位置,插入英雄行动完,再按照正常顺序执行
|
||||
lastPos=CurSkillPos[CurCamp]
|
||||
|
@ -430,8 +435,11 @@ end
|
|||
|
||||
--检测是否有插入得英雄
|
||||
function BattleLogic.CheckHaveInsertRole()
|
||||
if insertSkillRole then
|
||||
if insertSkillRoleList and #insertSkillRoleList>0 then
|
||||
insertSkillRole=insertSkillRoleList[1]
|
||||
local SkillRole=insertSkillRole
|
||||
--table.removebyvalue(insertSkillRoleList,insertSkillRole)
|
||||
table_removebyvalue(insertSkillRoleList,insertSkillRole)
|
||||
insertSkillRole=nil
|
||||
-- 如果找不到下一个人,直接交换阵营
|
||||
if not SkillRole then
|
||||
|
@ -497,7 +505,7 @@ function BattleLogic.WaitForTrigger(delayTime, action)
|
|||
end
|
||||
|
||||
function BattleLogic.InsertSkillRole(role)
|
||||
insertSkillRole=role
|
||||
table.insert(insertSkillRoleList,role)
|
||||
end
|
||||
|
||||
function BattleLogic.CurFrame()
|
||||
|
|
|
@ -2,7 +2,7 @@ BreakArmor = Buff:New()
|
|||
|
||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||
function BreakArmor:SetData(...)
|
||||
self.signType, --1 破军 2.迷魂 3. 4.主角状态 5.仇视 6.机械猴子标记
|
||||
self.signType, --1 破军 2.迷魂 3. 4.主角状态 5.仇视 6.机械猴子标记 7.逆风 8.顺风
|
||||
self.signValue1,
|
||||
self.signValue2=...
|
||||
-- 刷新排序等级
|
||||
|
|
|
@ -144,6 +144,7 @@ BattleEventName = {
|
|||
BuffTrigger = indexAdd(),
|
||||
BuffBeAdd=indexAdd(),
|
||||
BuffEnd = indexAdd(),
|
||||
BuffBeClear = indexAdd(),
|
||||
BuffCountChange = indexAdd(),
|
||||
BuffCover = indexAdd(),
|
||||
BuffRoundChange = indexAdd(),
|
||||
|
|
|
@ -229,6 +229,21 @@ function BattleUtil.RemoveNoDeadRole(arr)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
--按怒气排序
|
||||
function BattleUtil.SortByPos(arr, sort)
|
||||
BattleUtil.Sort(arr, function(a, b)
|
||||
local r1 = a.Rage
|
||||
local r2 = b.Rage
|
||||
if sort == 1 then
|
||||
return a.position>b.position
|
||||
else
|
||||
return a.position<b.position
|
||||
end
|
||||
end)
|
||||
return arr
|
||||
end
|
||||
|
||||
--按怒气排序
|
||||
function BattleUtil.SortByRage(arr, sort)
|
||||
BattleUtil.Sort(arr, function(a, b)
|
||||
|
@ -283,6 +298,62 @@ function BattleUtil.GetMaxTargetNum(chooseId)
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
function BattleUtil.GetSkillData(skillId,skinId)
|
||||
local skillConfig=ConfigManager.TryGetConfigData(ConfigName.SkillLogicConfig,skillId)
|
||||
if not skillId or not skillConfig then
|
||||
return
|
||||
end
|
||||
local skill = {skillId}
|
||||
--skill = {skillId, 命中时间, 持续时间, 伤害次数, {目标id1, 效果1, 效果2, ...},{目标id2, 效果3, 效果4, ...}, ...}
|
||||
--效果 = {效果类型id, 效果参数1, 效果参数2, ...}
|
||||
|
||||
local target = skillConfig.Target
|
||||
local effectList = skillConfig.Effect
|
||||
local effectArgsList = skillConfig.EffectValue
|
||||
|
||||
local eid = BattleUtil.GetCombatIdBySkin(skillId, skinId or 0)
|
||||
local EffectCombat = ConfigManager.TryGetConfigData(ConfigName.CombatControl,eid)
|
||||
skill[1] = skillId
|
||||
skill[2] = EffectCombat.KeyFrame/1000
|
||||
skill[3] = EffectCombat.SkillDuration/1000
|
||||
skill[4] = EffectCombat.SkillNumber
|
||||
|
||||
local index = 1
|
||||
for i = 1, #effectList do
|
||||
local effectGroup = { target[i][1] } -- 效果目标
|
||||
for j = 1, #effectList[i] do
|
||||
local effect = { effectList[i][j] } -- 效果Id
|
||||
for k = 1, #effectArgsList[index] do
|
||||
effect[k + 1] = effectArgsList[index][k] -- 效果参数
|
||||
end
|
||||
effectGroup[j + 1] = effect
|
||||
index = index + 1
|
||||
end
|
||||
skill[i + 4] = effectGroup
|
||||
end
|
||||
return skill
|
||||
end
|
||||
|
||||
-- 获取技能表现id
|
||||
function BattleUtil.GetCombatIdBySkin(skillId, skinId)
|
||||
local skillConfig=ConfigManager.TryGetConfigData(ConfigName.SkillLogicConfig,skillId)
|
||||
local effectIds = skillConfig.SkillDisplay
|
||||
local eid=0
|
||||
local skin = skinId or 0
|
||||
if effectIds then
|
||||
for i = 1, #effectIds do
|
||||
if effectIds[i][1] == skin then
|
||||
eid=effectIds[i][2]
|
||||
end
|
||||
end
|
||||
end
|
||||
if eid==0 then
|
||||
eid=effectIds[1][2]
|
||||
end
|
||||
return eid
|
||||
end
|
||||
|
||||
--
|
||||
function BattleUtil.ChooseTarget(role, chooseId,queryType)
|
||||
local chooseType = floor(chooseId / 100000) % 10
|
||||
|
@ -448,17 +519,19 @@ function BattleUtil.ChooseTarget(role, chooseId,queryType)
|
|||
arr=RoleManager.GetNeighbor(list[1], chooseType)
|
||||
end
|
||||
elseif chooseWeight ==15 then --我方阵亡
|
||||
|
||||
local aaa=RoleManager.GetDeadRole(role.camp)
|
||||
if aaa~=nil then
|
||||
--LogError(aaa.position)
|
||||
end
|
||||
if aaa then
|
||||
aaa.isRealDead=false
|
||||
arr={}
|
||||
table.insert(arr,aaa)
|
||||
end
|
||||
-- return aaa
|
||||
--BattleUtil.WaitForTrigger(BattleLogic.GameDeltaTime,function()
|
||||
local aaa=RoleManager.GetDeadRole(role.camp)
|
||||
if aaa~=nil then
|
||||
--LogError(aaa.position)
|
||||
end
|
||||
if aaa then
|
||||
aaa.isRealDead=false
|
||||
arr={}
|
||||
table.insert(arr,aaa)
|
||||
BattleUtil.SortByPos(arr, sort)
|
||||
return {arr[1]}
|
||||
end
|
||||
--end)
|
||||
elseif chooseWeight ==16 then --(血量百分比 含不灭)
|
||||
BattleUtil.SortByHpFactor(arr, sort)
|
||||
elseif chooseWeight ==17 then --怒气
|
||||
|
|
|
@ -42,7 +42,8 @@ function RoleData:SetValue(name, value)
|
|||
"camp", self.role.camp,
|
||||
"position", self.role.position,
|
||||
"propId", name,
|
||||
"value", value)
|
||||
"value", value,
|
||||
"change value", delta)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -92,6 +92,7 @@ function RoleLogic:Init(uid, data, position)
|
|||
self.ctrl_chaos = false --混乱
|
||||
self.deadFilter = true -- 控制死亡,置为false则角色暂时无法死亡
|
||||
self.isSuppress = false
|
||||
self.notAction = false --无法行动
|
||||
self.isExile = false --是否放逐
|
||||
self.reliveFilter = true -- 控制复活的标志位,置为false角色将不再享受复活效果
|
||||
self.reliveHPF = 1
|
||||
|
@ -109,6 +110,10 @@ function RoleLogic:Init(uid, data, position)
|
|||
self.isNormalAttackAddRage=true --普攻是否回复怒气
|
||||
self.curMainTarget=nil --当前主目标
|
||||
self.isAllBurn = false --是否视敌方全体为燃烧
|
||||
self.sunTime = 0 --顺风次数
|
||||
self.sunMaxTime = 0
|
||||
self.niTime = 0 --逆风次数
|
||||
self.niMaxTime = 0
|
||||
self.suppressTime = 0 --被压制的次数
|
||||
self.passiveList = {}
|
||||
if data.passivity and #data.passivity > 0 then
|
||||
|
@ -454,6 +459,9 @@ function RoleLogic:IsAvailable(skill)
|
|||
if self.ctrl_palsy and self.Rage < self.SuperSkillRage then
|
||||
return false
|
||||
end
|
||||
if self.notAction then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
|
@ -619,7 +627,8 @@ function RoleLogic:InsertExtraSkill(id,type)
|
|||
isTrigger=false
|
||||
end
|
||||
--和老史,佳琦确认果 附加技能算绝技 被沉默无法释放 可以套娃 递归触发 by:王振兴
|
||||
SkillManager.InsertSkill(self, effectData, skillType, nil, true, false,isTrigger)
|
||||
local insertSkill=SkillManager.InsertSkill(self, effectData, skillType, nil, true, false,isTrigger)
|
||||
return insertSkill
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -93,6 +93,7 @@ function this.AddDeadRole(role)
|
|||
end
|
||||
function this.GetDeadRole(type)
|
||||
if RealDeadList and #RealDeadList>0 then
|
||||
BattleUtil.SortByPos(RealDeadList,1)
|
||||
for i = 1, #RealDeadList do
|
||||
if RealDeadList[i].camp==type then
|
||||
return RealDeadList[i]
|
||||
|
|
|
@ -27,6 +27,7 @@ function Skill:Init(role, effectData, type, targets, isAdd, isRage,isTriggerJudg
|
|||
self.targets={}
|
||||
self.skillDamage=0
|
||||
self.AttactScale = 0 --用于追加的技能,设定其伤害的比例
|
||||
self.effectiveTime = 0 --顺风/逆风生效次数
|
||||
if isTriggerJudge~=nil then
|
||||
self.isTriggerJudge=isTriggerJudge
|
||||
else
|
||||
|
@ -153,6 +154,7 @@ function Skill:EndSkill()
|
|||
self.isTriggePassivity=false
|
||||
self.triggerPassivityId={}
|
||||
self.skillDamage=0
|
||||
self.effectiveTime = 0
|
||||
if self.castDoneFunc then self.castDoneFunc() end
|
||||
self.targets={}
|
||||
end)
|
||||
|
|
|
@ -1,4 +1,20 @@
|
|||
v1.0.130
|
||||
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.新英雄提交
|
||||
|
@ -170,6 +186,8 @@ 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
|
||||
|
|
Loading…
Reference in New Issue