[战斗]========觉醒技能提交,困难副本星级条件提交,关卡被动提交
parent
b3fca866e8
commit
b1425236af
|
@ -243,14 +243,15 @@ function BuffManager:ClearBuff(target, func)
|
|||
local buff = list.buffer[idx]
|
||||
if buff.target == target and (not func or (func and buff.clear and func(buff))) then
|
||||
if func and func(buff) then
|
||||
if buff.type== BuffName.Shield then
|
||||
if buff.type== BuffName.Shield then
|
||||
buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.Shield)
|
||||
elseif buff.type== BuffName.DOT or buff.type==BuffName.Control or buff.type==BuffName.Immune then
|
||||
elseif buff.type== BuffName.DOT or buff.type==BuffName.Control or buff.type==BuffName.Immune then
|
||||
buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.clear)
|
||||
end
|
||||
end
|
||||
end
|
||||
buff:OnEnd()
|
||||
buff.target.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
putBuff(buff)
|
||||
list:Remove(idx)
|
||||
else
|
||||
|
@ -319,6 +320,7 @@ function BuffManager:Update()
|
|||
buffList:Add(buff)
|
||||
buff:OnStart()
|
||||
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||
end
|
||||
|
||||
-- 清除过期buff
|
||||
|
@ -331,6 +333,7 @@ function BuffManager:Update()
|
|||
if buff.disperse then
|
||||
buff:OnEnd()
|
||||
buff.target.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BuffEnd, buff)
|
||||
putBuff(buff)
|
||||
buffList:Remove(index)
|
||||
else
|
||||
|
|
|
@ -1019,7 +1019,7 @@ local passivityList = {
|
|||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleHit, OnDamage,nil,nil,role)
|
||||
end,
|
||||
--造成暴击时,额外造成目标最大生命值[a]%的伤害。(目标最大生命值伤害总上限为施法者2.5倍攻击)
|
||||
--造成暴击时,额外造成目标最大生命值[a]%的伤害。
|
||||
--a[float]
|
||||
[56] = function(role, args,id,judge)
|
||||
local f1 = args[1]
|
||||
|
@ -1030,9 +1030,9 @@ local passivityList = {
|
|||
if lastTrigger > 1 then --加入限定避免循环触发
|
||||
return
|
||||
end
|
||||
local ar1 = BattleUtil.FP_Mul(defRole:GetRoleData(RoleDataName.MaxHp), f1)
|
||||
local ar2 = BattleUtil.FP_Mul(role:GetRoleData(RoleDataName.Attack), 2.5)
|
||||
BattleUtil.ApplyDamage(nil, role, defRole, floor(min(ar1, ar2)))
|
||||
local ar1 = floor(BattleUtil.FP_Mul(defRole:GetRoleData(RoleDataName.MaxHp), f1))
|
||||
--local ar2 = BattleUtil.FP_Mul(role:GetRoleData(RoleDataName.Attack), 2.5)
|
||||
BattleUtil.FinalDamage(nil, role, defRole, ar1)
|
||||
lastTrigger = 0
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleCrit, OnRoleCrit,nil,nil,role)
|
||||
|
@ -1875,7 +1875,7 @@ local passivityList = {
|
|||
|
||||
|
||||
|
||||
-- 释放技能后增加友方全体[a]点怒气
|
||||
-- 释放技能后增加友方全体[a]点怒气,是否
|
||||
-- a[int]
|
||||
[105] = function(role, args,id,judge)
|
||||
local i1 = args[1]
|
||||
|
@ -2250,16 +2250,20 @@ local passivityList = {
|
|||
role.Event:AddEvent(BattleEventName.RoleBeHit, onBeHit,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 普攻后回复[a]点怒气
|
||||
-- a[int]
|
||||
-- 普攻后回复[a]点怒气,普攻类型为[b](b不填默认为所有普攻)
|
||||
-- a[int],b[int 1:追加的普攻 ]
|
||||
[121] = function(role, args,id,judge)
|
||||
local i1 = args[1]
|
||||
local type =args[2]
|
||||
-- 释放技能后
|
||||
local onSkillEnd = function(skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if skill.type == BattleSkillType.Normal then
|
||||
if type and type==1 and not skill.isAdd then
|
||||
return
|
||||
end
|
||||
BattleUtil.CalRage(role, role, i1, CountTypeName.Add)
|
||||
end
|
||||
end
|
||||
|
@ -2349,14 +2353,16 @@ local passivityList = {
|
|||
role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 战斗中生命每减少[c]%,[d]就[e]改变[f]%
|
||||
-- c[float]d[属性]e[改变类型]f[float]
|
||||
-- 战斗中生命每减少[a]%,[b]就[c]改变[d]%,[e]属性[f]改变[g]% (e f g 不填就不会加)
|
||||
-- a[float],b[属性],c[改变类型],d[float],e[int],f[int],g[float]
|
||||
[126] = function(role, args)
|
||||
local f1 = args[1]
|
||||
local pro = args[2]
|
||||
local dt = args[3]
|
||||
local f2 = args[4]
|
||||
|
||||
local pro2 = args[5]
|
||||
local dt2 = args[6]
|
||||
local f3 = args[7]
|
||||
local curLevel = 0
|
||||
-- 释放技能后
|
||||
local onRoleBeDamaged = function(caster, damage)
|
||||
|
@ -2369,6 +2375,10 @@ local passivityList = {
|
|||
local buff = Buff.Create(role, BuffName.PropertyChange, 0, BattlePropList[pro], f2, dt)
|
||||
buff.cover = true
|
||||
role:AddBuff(buff)
|
||||
if pro2 and dt2 and f3 then
|
||||
local buff = Buff.Create(role, BuffName.PropertyChange, 0, BattlePropList[pro2], f3, dt2)
|
||||
role:AddBuff(buff)
|
||||
end
|
||||
end
|
||||
curLevel = level
|
||||
end
|
||||
|
@ -3072,23 +3082,30 @@ local passivityList = {
|
|||
role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 释放技能有[a]%概率附加[b]效果持续[c]回合
|
||||
-- a[float]b[控制状态]c[int]
|
||||
-- 释放技能有[a]%概率附加[b]效果持续[c]回合,查找目标条件[d](填技能查找目标逻辑,不填按照技能目标查找)
|
||||
-- a[float]b[控制状态]c[int],d[int]
|
||||
[152] = function(role, args,id,judge)
|
||||
local f1 = args[1]
|
||||
local ctrl = args[2]
|
||||
local i1 = args[3]
|
||||
|
||||
local con = args[4]
|
||||
-- 技能后后
|
||||
local onSkillCastEnd = function(skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if skill.type == BattleSkillType.Special then
|
||||
local targets = skill:GetDirectTargetsNoMiss()
|
||||
if targets then
|
||||
for _, r in ipairs(targets) do
|
||||
BattleUtil.RandomControl(f1, ctrl, role, r, i1)
|
||||
if skill.type == BattleSkillType.Special or skill.type == BattleSkillType.Extra then
|
||||
if con then
|
||||
local arr=BattleUtil.ChooseTarget(role,con)
|
||||
for i = 1, #arr do
|
||||
BattleUtil.RandomControl(f1, ctrl, role, arr[i], i1)
|
||||
end
|
||||
else
|
||||
local targets = skill:GetDirectTargetsNoMiss()
|
||||
if targets then
|
||||
for _, r in ipairs(targets) do
|
||||
BattleUtil.RandomControl(f1, ctrl, role, r, i1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -3361,7 +3378,6 @@ local passivityList = {
|
|||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role)
|
||||
|
||||
end,
|
||||
|
||||
-- 爆伤减免增加[a]%,[b]改变
|
||||
|
@ -3528,7 +3544,7 @@ local passivityList = {
|
|||
end,
|
||||
|
||||
-- 攻击目标越少[a]对每个目标提升概率越高,提升概率为[b]%除以被击者的总数,提升为[c]改变
|
||||
-- a[控制状态]b[float]c[改变类型]
|
||||
-- a[控制状态],b[float],c[改变类型]
|
||||
[172] = function(role, args,id,judge)
|
||||
local ctrl = args[1]
|
||||
local f1 = args[2]
|
||||
|
@ -4193,15 +4209,11 @@ local passivityList = {
|
|||
-- 同阵营武将受到直接伤害时该伤害[a]%转移给有此锦囊的武将转移伤害属于直接伤害(无法触发任何特性)
|
||||
-- a[float]
|
||||
[200] = function(role, args)
|
||||
if PassiveManager.passiveCountList[role.camp][200] and PassiveManager.passiveCountList[role.camp][200] > 0 then
|
||||
return
|
||||
if PassiveManager.passiveCountList[role.camp][200] and PassiveManager.passiveCountList[role.camp][200] > 0 then
|
||||
return
|
||||
end
|
||||
PassiveManager.passiveCountList[role.camp][200] = 1
|
||||
local f1 = args[1]
|
||||
-- if PassiveManager.passiveCountList[role.camp][200] and PassiveManager.passiveCountList[role.camp][200] > 0 then
|
||||
-- return
|
||||
-- end
|
||||
-- PassiveManager.passiveCountList[role.camp][200] = 1
|
||||
local onFinalDamage = function(damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit, damageType)
|
||||
local ignoreShara=atkRole.ignoreShara
|
||||
--特殊处理 白骨精附加的普攻不会忽略分摊
|
||||
|
@ -5638,7 +5650,7 @@ local passivityList = {
|
|||
role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role)
|
||||
end,
|
||||
--本次技能中如果有[a]目标,额外回复[b]点怒气
|
||||
-- a[持续伤害状态]b[int]
|
||||
-- a[持续伤害状态],b[int]
|
||||
[261]=function(role,args,id,judge)
|
||||
local dot=args[1]
|
||||
local i1 = args[2]--defRole, damage, bCrit, finalDmg, damageType, skill
|
||||
|
@ -5711,7 +5723,8 @@ local passivityList = {
|
|||
if defRole and defRole.camp~=role.camp and skill.owner==role and (skill.type==BattleSkillType.Special or skill.type==BattleSkillType.Extra) then
|
||||
BattleUtil.RandomAction(pro, function()
|
||||
BattleLogic.BuffMgr:ClearBuff(defRole, function(buff)
|
||||
if buff.type == BuffName.Immune and (buff.immuneType == 4 or buff.immuneType == 2) then
|
||||
--之前写的 buff.immuneType == 2 不知道为什么清除免疫燃烧 改成==1 了 by:王振兴 2021/06/09
|
||||
if buff.type == BuffName.Immune and (buff.immuneType == 4 or buff.immuneType == 1) then
|
||||
-- buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.clear)
|
||||
return true
|
||||
end
|
||||
|
@ -6125,13 +6138,24 @@ local passivityList = {
|
|||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillEffectBefore, onSkillEffectBefore,nil,nil,role)
|
||||
end,
|
||||
--为己方神将附加的护盾消失后,回复被保护的神将[a][b]%的血量
|
||||
--a[int 属性id] b[flaot]
|
||||
--为己方神将附加的护盾消失后,回复被保护的神将[a][b]%的血量,盾的类型为[c],己方神将为[d]阵营 (不填c,默认为所有盾;不填d,默认所有阵营)
|
||||
--a[int 属性id] b[flaot] c[int] d[int]
|
||||
[278]=function(role,args)
|
||||
local pro=args[1]
|
||||
local v1=args[2]
|
||||
local shieldType = args[3]
|
||||
local ele =args[4]
|
||||
local OnBuffEnd=function(buff)
|
||||
if buff and not buff.target:IsDead() and buff.caster==role and buff.type==BuffName.Shield then
|
||||
if buff.caster~=role then
|
||||
return
|
||||
end
|
||||
if ele and buff.target.element~=ele then
|
||||
return
|
||||
end
|
||||
if shieldType and buff and buff.type==BuffName.Shield and buff.shieldType~=shieldType then
|
||||
return
|
||||
end
|
||||
if buff and not buff.target:IsDead() and buff.type==BuffName.Shield then
|
||||
local val = floor(BattleUtil.FP_Mul(v1, buff.target:GetRoleData(BattlePropList[pro])))
|
||||
BattleUtil.CalTreat(role,buff.target, val)
|
||||
end
|
||||
|
@ -6235,13 +6259,17 @@ local passivityList = {
|
|||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, OnRoundChange,nil,nil,role)
|
||||
end,
|
||||
--释放技能后,额外[a]改变[b]方怒气最少的[c]阵营目标[d]点怒气
|
||||
--a[int 改变类型],b[int 0:己方 1:敌方],c[int],d[int]
|
||||
--释放技能后,额外[a]改变[b]方怒气最少的[c]阵营目标[d]点怒气,目标人数[e](e 不填默认为 1人 填10为敌方燃烧数 )
|
||||
--a[int 改变类型],b[int 0:己方 1:敌方],c[int],d[int],e[int]
|
||||
[283]=function(role,args,id,judge)
|
||||
local ct=args[1]
|
||||
local camp=args[2]
|
||||
local ele=args[3]
|
||||
local v1=args[4]
|
||||
local num= args[5]
|
||||
if not num then
|
||||
num=1
|
||||
end
|
||||
local onSkillCastEnd=function(skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
|
@ -6251,13 +6279,28 @@ local passivityList = {
|
|||
if camp==0 then
|
||||
list= RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele end)
|
||||
elseif camp==1 then
|
||||
list= RoleManager.Query(function(v) return v.camp ~= role.camp and v.element==ele end)
|
||||
list= RoleManager.Query(function(v) return v.camp ~= role.camp and v.element==ele end)
|
||||
end
|
||||
if not list or #list ==0 then
|
||||
return
|
||||
end
|
||||
--查找敌方燃烧数量
|
||||
if num==10 then
|
||||
num=0
|
||||
local arr=RoleManager.Query(function (v) return v.camp~=role.camp end)
|
||||
for i = 1, #arr do
|
||||
local aaa=BattleLogic.BuffMgr:HasBuff(arr[i], BuffName.DOT, function (buff) return buff.damageType==1 end)
|
||||
if aaa then
|
||||
num=num+1
|
||||
end
|
||||
end
|
||||
end
|
||||
list=BattleUtil.SortByRage(list,0)
|
||||
BattleUtil.CalRage(role, list[1], v1, ct)
|
||||
for i = 1, #list do
|
||||
if i<=num then
|
||||
BattleUtil.CalRage(role, list[i], v1, ct)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillCastEnd,nil,nil,role)
|
||||
|
@ -6583,41 +6626,45 @@ local passivityList = {
|
|||
-- 技能,普攻治疗治疗的目标为[a]阵营,资料量额外提升[b]%,并解除[c]效果
|
||||
-- a[int], b[flaot], c[持续伤害type类型]
|
||||
[298] = function(role, args,id,judge)
|
||||
local ele = args[1]
|
||||
local v1 = args[2]
|
||||
local type = args[3]
|
||||
local curSkill = nil
|
||||
local passiveTreating = function(func,target)
|
||||
if curSkill and curSkill.isTriggerJudge==false and judge==1 then
|
||||
return
|
||||
end
|
||||
if target and target.roleData.element ==ele then
|
||||
BattleLogic.BuffMgr:ClearBuff(target, function (buff)
|
||||
return buff.type == BuffName.DOT and buff.damageType==type
|
||||
end)
|
||||
if func then func(v1, CountTypeName.AddPencent) end
|
||||
end
|
||||
end
|
||||
local disposeCtrlNoHeal = function(caster,target)
|
||||
if caster==role and target.ctrl_noheal and target.roleData.element==ele then
|
||||
BattleLogic.BuffMgr:ClearBuff(target, function (buff)
|
||||
return buff.type == BuffName.Control and buff.ctrlType==4
|
||||
end)
|
||||
local ele = args[1]
|
||||
local v1 = args[2]
|
||||
local type = args[3]
|
||||
local curSkill = nil
|
||||
local passiveTreating = function(func,target)
|
||||
if curSkill and curSkill.isTriggerJudge==false and judge==1 then
|
||||
return
|
||||
end
|
||||
if target and target.roleData.element ==ele then
|
||||
if type then
|
||||
BattleLogic.BuffMgr:ClearBuff(target, function (buff)
|
||||
return buff.type == BuffName.DOT and buff.damageType==type
|
||||
end)
|
||||
end
|
||||
if func then func(v1, CountTypeName.AddPencent) end
|
||||
end
|
||||
end
|
||||
local disposeCtrlNoHeal = function(caster,target)
|
||||
if caster==role and target.ctrl_noheal and target.roleData.element==ele then
|
||||
if type then
|
||||
BattleLogic.BuffMgr:ClearBuff(target, function (buff)
|
||||
return buff.type == BuffName.Control and buff.ctrlType==4
|
||||
end)
|
||||
end
|
||||
end
|
||||
local OnSkillCast = function(skill)
|
||||
curSkill=skill
|
||||
role.Event:AddEvent(BattleEventName.PassiveTreatingFactor, passiveTreating,nil,nil,role)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.DisposeRoleCtrl_noheal,disposeCtrlNoHeal,nil,nil,role)
|
||||
end
|
||||
local OnSkillCastEnd = function(skill)
|
||||
curSkill=nil
|
||||
role.Event:RemoveEvent(BattleEventName.PassiveTreatingFactor, passiveTreating)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.DisposeRoleCtrl_noheal,disposeCtrlNoHeal)
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role)
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role)
|
||||
end,
|
||||
end
|
||||
end
|
||||
local OnSkillCast = function(skill)
|
||||
curSkill=skill
|
||||
role.Event:AddEvent(BattleEventName.PassiveTreatingFactor, passiveTreating)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.DisposeRoleCtrl_noheal,disposeCtrlNoHeal)
|
||||
end
|
||||
local OnSkillCastEnd = function(skill)
|
||||
curSkill=nil
|
||||
role.Event:RemoveEvent(BattleEventName.PassiveTreatingFactor, passiveTreating)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.DisposeRoleCtrl_noheal,disposeCtrlNoHeal)
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast)
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd)
|
||||
end,
|
||||
|
||||
--死亡时,立即回复己方全体自身[a]*[b]的血量。
|
||||
--a[属性],b[float]
|
||||
|
@ -6847,6 +6894,184 @@ local passivityList = {
|
|||
end
|
||||
role.Event:AddEvent(BattleEventName.BuffCaster, OnBuffCaster,nil,nil,role)
|
||||
end,
|
||||
-- 受到技能伤害时,会为血量属性最低的神将额外回复自身[a]%的[b]
|
||||
-- 回复a[float] b[int 属性id]
|
||||
[307] = function(role, args)
|
||||
local f1 = args[1]
|
||||
local pro=args[2]
|
||||
local onBeSkillHit = function(caster, damage, bCrit, finalDmg, damageType, skill)
|
||||
--如果角色死亡就不会触发
|
||||
if role:IsDead() then
|
||||
return
|
||||
end
|
||||
-- if skill and not skill.isTriggerJudge and judge==1 then
|
||||
-- return
|
||||
-- end
|
||||
-- LogYellow("307 1")
|
||||
if skill and (skill.type==BattleSkillType.Special or skill.type== BattleSkillType.Extra or skill.type== BattleSkillType.Monster) then --技能造成的直接伤害
|
||||
local list = RoleManager.Query(function(v) return v.camp == role.camp end)
|
||||
BattleUtil.SortByHpFactor(list, 1)
|
||||
-- LogYellow("307 2")
|
||||
if list[1] then
|
||||
-- LogYellow("307 3")
|
||||
local val = floor(BattleUtil.FP_Mul(f1, list[1]:GetRoleData(BattlePropList[pro])))
|
||||
BattleUtil.CalTreat(role, list[1], val)
|
||||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, onBeSkillHit,nil,nil,role)
|
||||
end,
|
||||
-- 普攻后目标附加1个免疫控制的效果[a][b][c](眩晕、沉默、麻痹)的护盾,持续[d]]回合
|
||||
-- 免疫控制的效果a[int]b[int]c[int] d[int,回合]
|
||||
[308] = function(role, args,id,judge)
|
||||
local ctrl = args[1]
|
||||
local ctr2 = args[2]
|
||||
local ctr3 = args[3]
|
||||
local round = args[4]
|
||||
local ctrls={}
|
||||
if ctrl then
|
||||
table.insert(ctrls,ctrl)
|
||||
end
|
||||
if ctr2 then
|
||||
table.insert(ctrls,ctr2)
|
||||
end
|
||||
if ctr3 then
|
||||
table.insert(ctrls,ctr3)
|
||||
end
|
||||
local immune = function(buff)
|
||||
return buff.type == BuffName.Control and (BattleUtil.ChecklistIsContainValue(ctrls,buff.ctrlType))
|
||||
end
|
||||
-- 释放技能后
|
||||
local onSkillEnd = function(skill)
|
||||
-- if skill and not skill.isTriggerJudge and judge==1 then
|
||||
-- return
|
||||
-- end
|
||||
-- LogYellow("308 1")
|
||||
if skill.type == BattleSkillType.Normal then
|
||||
local targets = skill:GetDirectTargetsNoMiss()
|
||||
-- LogYellow("308 2")
|
||||
if targets then
|
||||
-- LogYellow("308 3: "..#targets)
|
||||
local curBuff=nil
|
||||
for _, r in ipairs(targets) do
|
||||
curBuff=Buff.Create(r, BuffName.Immune, round,4,immune)
|
||||
r:AddBuff(curBuff)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role)
|
||||
end,
|
||||
--释放技能时,如果当前血量最少的神将为[a]系神将,清除控制效果(眩晕、沉默、麻痹、混乱)
|
||||
--a[int,角色职业] 控制效果b[int]c[int]d[int]e[int]
|
||||
[309] = function(role, args)
|
||||
local ele = args[1]
|
||||
local ctrl = args[2]
|
||||
local ctr2 = args[3]
|
||||
local ctr3 = args[4]
|
||||
local ctr4 = args[5]
|
||||
local SkillCast = function(damagingFunc, defRole, damage, skill)
|
||||
local list = RoleManager.Query(function(v) return v.camp == role.camp end)
|
||||
BattleUtil.SortByHpFactor(list, 1)
|
||||
local target = nil
|
||||
-- LogYellow("309 1: "..#list)
|
||||
for i = 1, #list do
|
||||
if not list[i]:IsRealDead() then
|
||||
target = list[i]
|
||||
break
|
||||
end
|
||||
end
|
||||
if target and target.roleData.element==ele then
|
||||
-- LogYellow("309 2")
|
||||
BattleLogic.BuffMgr:ClearBuff(target, function(buff)
|
||||
-- LogYellow("309 3: "..buff.type.." "..buff.ctrlType)
|
||||
return buff.type == BuffName.Control and (buff.ctrlType == ctrl or buff.immuneType == ctr2 or buff.immuneType == ctr3 or buff.immuneType == ctr4)
|
||||
end)
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCast,SkillCast,nil,nil,role)
|
||||
end,
|
||||
-- 敌方暴毙时,将会对周围的目标造成[a]%的[b]属性伤害
|
||||
-- a[float] b[int,属性id]
|
||||
[310] = function(role, args,id,judge)
|
||||
local f1 = args[1]
|
||||
local pro =args[2]
|
||||
local onRoleHit = function(target, damage, bCrit, finalDmg)
|
||||
-- --屏蔽相同阵应
|
||||
-- if target and target.camp==role.camp then
|
||||
-- return
|
||||
-- end
|
||||
-- LogYellow("310 1 "..target.position)
|
||||
if target:IsDead() then
|
||||
local list = RoleManager.GetNeighbor(target, 1)
|
||||
if list then
|
||||
for key, value in pairs(list) do
|
||||
if value and value ~= target then
|
||||
-- LogYellow("310 2 周围的目标造成[a]%的[b]属性伤害 value:"..value.position)
|
||||
local val = floor(BattleUtil.FP_Mul(f1, role:GetRoleData(BattlePropList[pro])))
|
||||
-- LogYellow("310 end pro: "..pro.." val: "..val)
|
||||
BattleUtil.FinalDamage(role, value, val)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role)
|
||||
end,
|
||||
-- 触发追击技能时,该追击技能的伤害[a]% 提高[b]改变类型
|
||||
-- a[float] b[int,改变类型]
|
||||
[311] = function(role, args)
|
||||
local f1 = args[1]
|
||||
local ct = args[2]
|
||||
local OnPassiveDamaging = function(damagingFunc, defRole, damage, skill)
|
||||
-- LogYellow("311 1 ")
|
||||
-- if skill then
|
||||
-- LogYellow("311 2 "..skill.type.." "..tostring(skill.isAdd))
|
||||
-- end
|
||||
if skill and skill.type == BattleSkillType.Extra and skill.isAdd then
|
||||
local dd = BattleUtil.CountValue(damage, f1, ct) - damage
|
||||
-- LogYellow("311 3 end f1: "..f1.." ct: "..ct.." dd "..dd)
|
||||
damagingFunc(-floor(BattleUtil.ErrorCorrection(dd)))
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.PassiveDamaging, OnPassiveDamaging,nil,nil,role)
|
||||
end,
|
||||
|
||||
-- 敌方处于链接符状态的目标如果受到回怒效果,阎罗王也同时受到回怒效果,每回合回复不超过[a]点怒气。
|
||||
-- a[int]
|
||||
[312] = function(role, args)
|
||||
local n1 = args[1]
|
||||
local curRoundAddValue = 0--当前回合加的所有怒气点数
|
||||
local onRecordRageChange = function(caster, target, deltaRage,countType,value)
|
||||
-- LogYellow("312 1")
|
||||
if countType == CountTypeName.Add then
|
||||
-- LogYellow("312 2")
|
||||
local list=BattleLogic.BuffMgr:GetBuff(target)
|
||||
for i = 1, #list do
|
||||
local buff=list[i]
|
||||
-- 有连接符
|
||||
if BattleLogic.BuffMgr:HasBuff(target, BuffName.Curse, function(buff) return buff.curseType == CurseTypeName.ShareDamage end) then
|
||||
-- LogYellow("312 3")
|
||||
if curRoundAddValue <= n1 then
|
||||
local endAddNum = value
|
||||
if (curRoundAddValue + endAddNum) > n1 then
|
||||
endAddNum = n1 - curRoundAddValue
|
||||
end
|
||||
-- LogYellow("312 4 endAddNum: "..endAddNum)
|
||||
curRoundAddValue = curRoundAddValue + endAddNum
|
||||
role:AddRage(endAddNum, CountTypeName.Add)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RecordRageChange, onRecordRageChange,nil,nil,role)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, function(curRound)
|
||||
-- LogYellow("312 5 curRoundAddValue = 0")
|
||||
curRoundAddValue = 0
|
||||
end,nil,nil,role)
|
||||
end,
|
||||
-- 根据生命百分比添加被动 血量百分比[a],被动id[b],...(后面没有的不配)
|
||||
-- a[float],b[int],c[float],d[int],e[float],f[int],g[float],h[int]
|
||||
[313] = function(role, args,id,judge)
|
||||
|
@ -7070,6 +7295,223 @@ local passivityList = {
|
|||
end
|
||||
role.Event:AddEvent(BattleEventName.FinalBeDamageEnd, onFinalBeDamage,nil,nil,role)
|
||||
end,
|
||||
--技能击杀目标溢出伤害的[a]%将对生命百分比最[b]的 攻击目标造成伤害
|
||||
-- a[float],b[int 0:最高 1:最低]
|
||||
[322]=function(role,args,id,judge)
|
||||
local f1 = args[1]
|
||||
local type = args[2]
|
||||
local point=nil
|
||||
local allDamage=0
|
||||
-- 直接伤害后
|
||||
local onRoleHit = function(target, damage, bCrit, finalDmg, damageType, skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if skill and skill.owner==role and (skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra) and target:IsDead() and not BattleUtil.CheckIsNoDead(target) then
|
||||
local dmg= floor(BattleUtil.ErrorCorrection((damage-finalDmg)*f1))
|
||||
if target:IsDead() then
|
||||
allDamage=allDamage+dmg
|
||||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role)
|
||||
|
||||
local onSkillCastEnd=function (skill)
|
||||
if not skill then
|
||||
return
|
||||
end
|
||||
if allDamage>0 then
|
||||
local list = skill:GetDirectTargets()
|
||||
list = BattleUtil.SortByHpFactor(list,type)
|
||||
if list then
|
||||
for i = 1, #list do
|
||||
if list[i] and not list[i]:IsDead() then
|
||||
BattleUtil.FinalDamage(nil,role,list[i],allDamage)
|
||||
allDamage=0
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCastEnd,nil,nil,role)
|
||||
end,
|
||||
--[a]攻击时,如果目标处于持续伤害[b]状态,则有[c]%的概率使目标[d][e]回合
|
||||
--a[int 攻击类型 1:普攻 4:死亡技能]
|
||||
[323]=function(role,args,id,judge)
|
||||
local st = args[1]
|
||||
local dt = args[2]
|
||||
local p1 = args[3]
|
||||
local ct = args[4]
|
||||
local round=args[5]
|
||||
local onRoleBeDamage=function (defRole, atkRole, damage, bCrit, finalDmg, damageType, dotType, skill)
|
||||
if atkRole and atkRole~=role then
|
||||
return
|
||||
end
|
||||
if not skill or skill.type~=st then
|
||||
return
|
||||
end
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function(buff) return buff.damageType == dt end) then
|
||||
BattleUtil.RandomControl(p1,ct,role,defRole,round)
|
||||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleBeDamaged,onRoleBeDamage,nil,nil,role)
|
||||
end,
|
||||
--释放技能怒气不足时,损失自身([a]-我方活着的[b]系神将数)%生命*不足怒气数 后释放技能
|
||||
--a[int],b[int]
|
||||
[324]=function(role,args)
|
||||
local max=args[1]
|
||||
local ele=args[2]
|
||||
local onRoleCastSkillBrfore=function(caster)
|
||||
if caster~=role then
|
||||
return
|
||||
end
|
||||
--释放者死亡或释放着被沉默
|
||||
if caster:IsDead() or caster.ctrl_slient then
|
||||
return
|
||||
end
|
||||
local num=role.SuperSkillRage-role.Rage
|
||||
local list = RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele and v~=role end)
|
||||
local curHp=role:GetRoleData(RoleDataName.Hp)
|
||||
local aaa=(max-#list)/100*num
|
||||
local removeHp= floor(role:GetRoleData(RoleDataName.MaxHp)*aaa)
|
||||
--如果血量不足抵扣就只剩1点血
|
||||
if removeHp>=curHp then
|
||||
removeHp=curHp-1
|
||||
end
|
||||
BattleUtil.CalRage(role,role,num,CountTypeName.Add)
|
||||
BattleUtil.FinalDamage(nil,role,role,removeHp)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleCastSkillBefore, onRoleCastSkillBrfore,nil,nil,role)
|
||||
end,
|
||||
-- 被自身控制[a]的敌方目标,己方[b]阵营神将对其造成伤害增加[c]%
|
||||
-- a[int 控制状态] b[int] c[float]
|
||||
[325] = function(role, args)
|
||||
local f1 = args[1]
|
||||
local ele = args[2]
|
||||
local f2 = args[3]
|
||||
|
||||
local function onPassiveDamaging(damagingFunc, atkRole, defRole, damage,skill,skilldotType, bCrit,damageType, dotType,isDirect)
|
||||
--不是真实伤害
|
||||
if not skill and not isDirect then
|
||||
return
|
||||
end
|
||||
if atkRole.camp==role.camp and atkRole.element==ele and BattleLogic.BuffMgr:HasBuff(defRole, BuffName.Control, function (buff) return buff.ctrlType == f1 and buff.caster==role end) then
|
||||
local dd = BattleUtil.CountValue(damage, f2, CountTypeName.AddPencent) - damage
|
||||
damagingFunc(-floor(BattleUtil.ErrorCorrection(dd)))
|
||||
end
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role)
|
||||
end,
|
||||
--自身添加的控制[a]结束时,被控制的目标改变[b][c]点怒气
|
||||
--a[int], b[int], c[int]
|
||||
[326]=function(role,args)
|
||||
local ctrl=args[1]
|
||||
local ct =args[2]
|
||||
local num =args[3]
|
||||
local OnBuffEnd=function(buff)
|
||||
if buff.caster~=role or buff.type~= BuffName.Control or buff.ctrlType~=ctrl then
|
||||
return
|
||||
end
|
||||
BattleUtil.CalRage(role,buff.target,num,ct)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BuffEnd, OnBuffEnd,nil,nil,role)
|
||||
end,
|
||||
--释放技能后,我方怒气最少的[a]阵营目标行动一回合(释放一次技能)
|
||||
--a[int]
|
||||
[327]=function(role,args,id,judge)
|
||||
local ele=args[1]
|
||||
|
||||
local onSkillCastEnd=function(skill)
|
||||
if skill and not skill.isTriggerJudge and judge==1 then
|
||||
return
|
||||
end
|
||||
if skill and (skill.type== BattleSkillType.Special or skill.type==BattleSkillType.Extra ) then
|
||||
local list= RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele end)
|
||||
if not list or #list ==0 then
|
||||
return
|
||||
end
|
||||
list=BattleUtil.SortByRage(list,0)
|
||||
list[1]:CastSkill()
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillCastEnd,nil,nil,role)
|
||||
end,
|
||||
--[a]排敌人获取无法消除的无敌盾,无敌盾击杀全部另外一排后消失
|
||||
--a[int 1:前排 2:后排]
|
||||
[328]=function(role,args,id,judge)
|
||||
local pos=args[1]
|
||||
local buff=nil
|
||||
--给我方前/后排上无敌盾
|
||||
if pos==BattleUtil.GetRolePosType(role.position) then
|
||||
--无敌盾
|
||||
buff=Buff.Create(role, BuffName.Shield, 0, ShieldTypeName.AllReduce, 0, 0)
|
||||
buff.clear=false
|
||||
role:AddBuff(buff)
|
||||
end
|
||||
|
||||
local onBattleRoleDead = function(defRole)
|
||||
--如果死的是敌方 or 死亡的是有无敌盾的那排
|
||||
if defRole.camp~=role.camp or pos==BattleUtil.GetRolePosType(defRole.position) then
|
||||
return
|
||||
end
|
||||
local list = RoleManager.Query(function(v) return v.camp == role.camp and pos~=BattleUtil.GetRolePosType(v.position) end)
|
||||
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime*3, function ()--加个延时,防止击杀的角色复活计算不准确
|
||||
if #list>0 then
|
||||
return
|
||||
end
|
||||
if BattleLogic.BuffMgr:HasBuff(role, BuffName.Shield, function(buff1) return buff1==buff end) then
|
||||
buff.disperse=true
|
||||
end
|
||||
end)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onBattleRoleDead,nil,nil,role)
|
||||
end,
|
||||
--死亡后有[a]%概率[b]%血量复活,并回复[c]点怒气
|
||||
--a[float],b[float],c[int]
|
||||
[329]=function (role,args,id,judge)
|
||||
local p1=args[1]
|
||||
local p2=args[2]
|
||||
local num=args[3]
|
||||
local onRoleRealDead = function(deadRole)
|
||||
--如果死亡的不是自身
|
||||
if deadRole~=role then
|
||||
return
|
||||
end
|
||||
BattleUtil.RandomAction(p1, function ()
|
||||
deadRole:SetRelive(p2)
|
||||
BattleUtil.CalRage(role, role,num,CountTypeName.Add)
|
||||
end)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onRoleRealDead,nil,nil,role)
|
||||
end,
|
||||
--死亡后有[a]%概率随机击杀敌方一个神将
|
||||
--a[float]
|
||||
[330]=function (role,args,id,judge)
|
||||
local p1=args[1]
|
||||
local onRoleRealDead = function(deadRole)
|
||||
--如果死亡的不是自身
|
||||
if deadRole~=role then
|
||||
return
|
||||
end
|
||||
BattleUtil.RandomAction(p1, function ()
|
||||
local list = RoleManager.Query(function(r)
|
||||
return r.camp ~= role.camp
|
||||
end)
|
||||
if #list < 1 then return end
|
||||
local index = Random.RangeInt(1, #list)
|
||||
local target = list[index]
|
||||
BattleUtil.Seckill(nil,role,target)
|
||||
end)
|
||||
end
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onRoleRealDead,nil,nil,role)
|
||||
end,
|
||||
|
||||
}
|
||||
return passivityList
|
|
@ -8,13 +8,24 @@ function NoDead:SetData(...)
|
|||
self.cover = true --控制效果可被覆盖
|
||||
-- 刷新排序等级
|
||||
self.sort = 4
|
||||
self.recordDamage=0
|
||||
end
|
||||
|
||||
-- 伤害降低
|
||||
function NoDead:onPassiveDamaging(func, target, damage, skill)
|
||||
if skill and skill.type == BattleSkillType.Special then
|
||||
local dd = BattleUtil.CountValue(damage, self.damageFactor, self.factorCT) - damage
|
||||
if func then func(-math.floor(BattleUtil.ErrorCorrection(dd))) end
|
||||
if func then
|
||||
func(-math.floor(BattleUtil.ErrorCorrection(dd))-self.recordDamage)
|
||||
self.recordDamage=0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- 记录承受伤害
|
||||
function NoDead:OnRoleBeHit(atkRole, damage, bCrit, finalDmg, damageType, skill,isDirect)
|
||||
if skill and (skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra ) and atkRole.camp~=self.target.camp then
|
||||
self.recordDamage=self.recordDamage+math.floor(damage*0.1)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -22,6 +33,9 @@ end
|
|||
function NoDead:OnStart()
|
||||
--
|
||||
self.target.Event:AddEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self)
|
||||
if self.target.star>=11 then
|
||||
self.target.Event:AddEvent(BattleEventName.RoleBeHit,self.OnRoleBeHit,self)
|
||||
end
|
||||
self.target:SetDeadFilter(false)
|
||||
|
||||
self.target:SetReliveFilter(self.isCanRelive)
|
||||
|
@ -36,7 +50,11 @@ end
|
|||
|
||||
--效果结束时调用一次
|
||||
function NoDead:OnEnd()
|
||||
self.target.Event:AddEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self)
|
||||
self.target.Event:RemoveEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self)
|
||||
if self.target.star>=11 then
|
||||
self.target.Event:RemoveEvent(BattleEventName.RoleBeHit,self.OnRoleBeHit,self)
|
||||
end
|
||||
--self.target.Event
|
||||
self.target:SetDeadFilter(true)
|
||||
|
||||
-- self.target:SetIsCanAddSkill(false)
|
||||
|
|
|
@ -134,7 +134,76 @@ local _ConditionConfig = {
|
|||
end
|
||||
return 0
|
||||
end,
|
||||
|
||||
--持续伤害[a]杀死[b]人
|
||||
--a[int 0:所有 1:燃烧 2:毒死]
|
||||
[14]=function(condition)
|
||||
local v1 = condition[1]
|
||||
local v2 = condition[2]
|
||||
local firing,poison=HardStageEventManager.GetDotDieNum()
|
||||
if v1==0 then
|
||||
if firing+poison>=v2 then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
if v1==1 then
|
||||
if firing>=v2 then
|
||||
return 1
|
||||
end
|
||||
elseif v1==2 then
|
||||
if poison>=v2 then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
--追击击杀[a]人,击杀[b]号位敌方(填b 就不会判断 a)
|
||||
--a[int] b[int]
|
||||
[15]=function(condition)
|
||||
local v1 = condition[1]
|
||||
local v2 = condition[2]
|
||||
local list=HardStageEventManager.GetAddSkillDieList()
|
||||
if v2 then
|
||||
local isHave=BattleUtil.ChecklistIsContainValue(list,v2)
|
||||
if isHave then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
end
|
||||
else
|
||||
local num=BattleUtil.LengthOfTable(list)
|
||||
if num>=v1 then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
--回复血量[a]次
|
||||
[16]=function(condition)
|
||||
local v1=condition[1]
|
||||
local time=HardStageEventManager.GetAllTreatTime()
|
||||
if time>=v1 then
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
--第[a]个击杀敌方[b]号位
|
||||
--a[int 0:是最后],b[int]
|
||||
[17]=function(condition)
|
||||
local v1=condition[1]
|
||||
local v2=condition[2]
|
||||
local list=HardStageEventManager.GetDeadSortList()
|
||||
local isHave=BattleUtil.ChecklistIsContainValue(list,v2)
|
||||
if not isHave then
|
||||
return 0
|
||||
end
|
||||
if v1==0 then
|
||||
v1=#list
|
||||
end
|
||||
if list[v1]==v2 then
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -12,18 +12,35 @@ local recordAddKill
|
|||
local seckKillNum=0
|
||||
--控制次数集合
|
||||
local ctrlNumList
|
||||
--毒死的人数
|
||||
local poisonDieNum=0
|
||||
--烧死的人数
|
||||
local firingDieNum=0
|
||||
local allTreatTime=0
|
||||
--追击技能击杀任务集合
|
||||
local addSkillDieList
|
||||
--死亡顺序集合
|
||||
local deadSortList
|
||||
function this.Init()
|
||||
recordRound=1
|
||||
roundDamage=0
|
||||
seckKillNum=0
|
||||
CurRound=0
|
||||
poisonDieNum=0
|
||||
firingDieNum=0
|
||||
allTreatTime=0
|
||||
recordRoundDamage={}
|
||||
recordAddKill={}
|
||||
ctrlNumList={}
|
||||
addSkillDieList={}
|
||||
deadSortList={}
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RecordDamage,this.OnRecordDamage)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.Seckill,this.OnSeckill)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BuffRoundChange,this.OnRoundChange)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RecordBuff,this.OnBuffAdd)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoleDead,this.OnRoleDead)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.BuffStart,this.OnBuffStar)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RecordTreat,this.OnRecordTreat)
|
||||
end
|
||||
|
||||
function this.ClearEvent()
|
||||
|
@ -31,6 +48,65 @@ function this.ClearEvent()
|
|||
BattleLogic.Event:RemoveEvent(BattleEventName.Seckill,this.OnSeckill)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.BuffRoundChange,this.OnRoundChange)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.RecordBuff,this.OnBuffAdd)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.BattleRoleDead,this.OnRoleDead)
|
||||
BattleLogic.Event:RemoveEvent(BattleEventName.BuffStart,this.OnBuffStar)
|
||||
BattleLogic.Event:AddEvent(BattleEventName.RecordTreat,this.OnRecordTreat)
|
||||
end
|
||||
|
||||
--记录治疗
|
||||
function this.OnRecordTreat(castRole,targetRole,baseTreat)
|
||||
if targetRole.camp~=0 then
|
||||
return
|
||||
end
|
||||
allTreatTime=allTreatTime+1
|
||||
end
|
||||
|
||||
function this.GetAllTreatTime()
|
||||
return allTreatTime
|
||||
end
|
||||
|
||||
|
||||
--buff被添加
|
||||
function this.OnBuffStar(buff)
|
||||
if not buff then
|
||||
return
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--某人死亡
|
||||
function this.OnRoleDead(defRole, atkRole,skill,damageType)
|
||||
if defRole.camp==0 then
|
||||
return
|
||||
end
|
||||
table.insert(deadSortList,defRole.position)
|
||||
--追击击杀敌方数据
|
||||
if skill and skill.isAdd then
|
||||
table.insert(addSkillDieList,defRole.position)
|
||||
end
|
||||
|
||||
if defRole.camp==1 and damageType and damageType~=0 then
|
||||
if damageType==1 then
|
||||
firingDieNum=firingDieNum+1
|
||||
elseif damageType==2 then
|
||||
poisonDieNum=poisonDieNum+1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--获取死亡顺序集合
|
||||
function this.GetDeadSortList()
|
||||
return deadSortList
|
||||
end
|
||||
--获取追加技能击杀的敌方集合
|
||||
function this.GetAddSkillDieList()
|
||||
return addSkillDieList
|
||||
end
|
||||
|
||||
--获取持续伤害死亡的人数
|
||||
function this.GetDotDieNum()
|
||||
return firingDieNum,poisonDieNum
|
||||
end
|
||||
|
||||
--buff添加成功
|
||||
|
|
|
@ -592,9 +592,9 @@ function BattleUtil.ApplyDamage(skill, atkRole, defRole, damage, bCrit, damageTy
|
|||
local damagingFunc = function(dmgDeduction)
|
||||
damage = damage - dmgDeduction
|
||||
end
|
||||
atkRole.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, defRole, damage, skill, dotType, bCrit)
|
||||
atkRole.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect)
|
||||
defRole.Event:DispatchEvent(BattleEventName.PassiveBeDamaging, damagingFunc, atkRole, damage, skill, dotType, bCrit)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect)
|
||||
|
||||
-- 计算护盾减伤
|
||||
|
||||
|
@ -627,6 +627,7 @@ function BattleUtil.CalRage(caster, target, value, countType)
|
|||
|
||||
-- 操作怒气
|
||||
local deltaRage = target:AddRage(value, countType)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.RecordRageChange, caster, target, deltaRage,countType,value)
|
||||
-- 用于记录统计
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.RecordRage, caster, target, deltaRage)
|
||||
end
|
||||
|
@ -681,7 +682,7 @@ function BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageTy
|
|||
defRole:SetDead()
|
||||
defRole.Event:DispatchEvent(BattleEventName.RoleDead, atkRole)
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleKill, defRole,skill)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BattleRoleDead, defRole, atkRole,skill)
|
||||
BattleLogic.Event:DispatchEvent(BattleEventName.BattleRoleDead, defRole, atkRole,skill,dotType)
|
||||
end
|
||||
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleDamage, defRole, damage, bCrit, finalDmg, damageType, dotType, skill)
|
||||
|
@ -933,6 +934,9 @@ end
|
|||
|
||||
--获取table的长度
|
||||
function BattleUtil.LengthOfTable(table)
|
||||
if not table then
|
||||
return 0
|
||||
end
|
||||
local length = 0
|
||||
for i, v in pairs(table) do
|
||||
length = length + 1
|
||||
|
|
|
@ -305,9 +305,9 @@ function this.RefreshFightData(type)
|
|||
data.element = roleData.PropertyName
|
||||
data.professionId = roleData.Profession
|
||||
data.quality = roleData.Quality
|
||||
data.star = 10
|
||||
data.star = role.star
|
||||
data.skinId=role.skinId
|
||||
LogError("skinId==="..role.skinId)
|
||||
--LogError("skinId==="..role.skinId)
|
||||
data.type = 1
|
||||
data.job=roleData.Job
|
||||
local paskill = string.split(role.passivity, "#")
|
||||
|
|
|
@ -13,7 +13,8 @@ function RoleSetView:Init(root)
|
|||
self.skin = Util.GetGameObject(root, "skin/input"):GetComponent("InputField")
|
||||
self.skin.text="0"
|
||||
self.superSkill = Util.GetGameObject(root, "superSkill/input"):GetComponent("InputField")
|
||||
|
||||
self.star = Util.GetGameObject(root, "star/input"):GetComponent("InputField")
|
||||
self.star.text="0"
|
||||
self.props = Util.GetGameObject(root, "props")
|
||||
self.propList = {}
|
||||
for i = 1, self.props.transform.childCount do
|
||||
|
@ -56,6 +57,7 @@ function RoleSetView:LoadFromConfig()
|
|||
local skill = config.SkillList[1] or ""
|
||||
local superSkill = config.SkillList[2] or ""
|
||||
local skinId=tonumber(self.skin.text)
|
||||
local star = tonumber(self.star.text)
|
||||
self.localData = {
|
||||
monsterId,
|
||||
config.MonsterId, -- roleId
|
||||
|
@ -78,6 +80,7 @@ function RoleSetView:LoadFromConfig()
|
|||
config.AntiCritDamageFactor,
|
||||
config.TreatFacter,
|
||||
config.CureFacter,
|
||||
star,
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,6 +90,7 @@ function RoleSetView:LoadFromConfig()
|
|||
self.skill.text = self:GetLocalData(4)
|
||||
self.superSkill.text = self:GetLocalData(5)
|
||||
self.skin.text = self:GetLocalData(6)
|
||||
self.star.text = self:GetLocalData(23)
|
||||
for propIndex, prop in ipairs(self.propList) do
|
||||
prop.text = self:GetLocalData(propIndex + 6)
|
||||
end
|
||||
|
@ -139,6 +143,7 @@ function RoleSetView:GetLocalData(index)
|
|||
0, -- 抗暴率
|
||||
1, -- 治疗系数
|
||||
1, -- 治愈系数
|
||||
10,
|
||||
}
|
||||
if not self.localData[index] or self.localData[index] == "" then
|
||||
return (defaultData[index] or 0)
|
||||
|
@ -162,6 +167,7 @@ function RoleSetView:Show(camp, pos, data, func)
|
|||
self.skill.text = data.skill or self:GetLocalData(4)
|
||||
self.superSkill.text = data.superSkill or self:GetLocalData(5)
|
||||
self.skin.text = data.skinId or self:GetLocalData(6)
|
||||
self.star.text = data.star or self:GetLocalData(23)
|
||||
for propIndex, prop in ipairs(self.propList) do
|
||||
prop.text = data.props[propIndex] or self:GetLocalData(propIndex + 6)
|
||||
end
|
||||
|
@ -175,6 +181,8 @@ function RoleSetView:ApplyData()
|
|||
self.data.skill = tonumber(self.skill.text)
|
||||
self.data.superSkill = tonumber(self.superSkill.text)
|
||||
self.data.skinId=tonumber(self.skin.text)
|
||||
LogError("star text:"..self.star.text)
|
||||
self.data.star = tonumber(self.star.text)
|
||||
for propIndex, prop in ipairs(self.propList) do
|
||||
local value = prop.text == "" and 0 or tonumber(prop.text)
|
||||
self.data.props[propIndex] = tonumber(value)
|
||||
|
|
Loading…
Reference in New Issue