From af20b1f45f657db043365c71d175f867ec06434a Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Wed, 19 May 2021 14:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=B1=E6=B2=B3=E7=A4=BE=E7=A8=B7=E5=9B=BE?= =?UTF-8?q?=E6=88=98=E6=96=97=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Battle/Logic/Base/Passivity.lua | 25 +++++--- .../Battle/Logic/HardStageCondition.lua | 34 +++++++++-- .../Battle/Logic/HardStageEventManager.lua | 60 +++++++++++++++++++ luafight/Modules/Battle/Readme.txt | 4 ++ 4 files changed, 109 insertions(+), 14 deletions(-) diff --git a/luafight/Modules/Battle/Logic/Base/Passivity.lua b/luafight/Modules/Battle/Logic/Base/Passivity.lua index 93c0c0af2..377cc03b5 100644 --- a/luafight/Modules/Battle/Logic/Base/Passivity.lua +++ b/luafight/Modules/Battle/Logic/Base/Passivity.lua @@ -1917,17 +1917,23 @@ local passivityList = { role.Event:AddEvent(BattleEventName.RoleBeHit, onBeHit,nil,nil,role) end, - -- 释放技能后自身回[a]点怒气 - -- a[int] + -- 释放技能后自身回[a]点怒气,回怒概率[b]%(不填为100%) + -- a[int],b[float] [107] = function(role, args,id,judge) local i1 = args[1] + local p1 = args[2] + if not p1 then + p1=1 + end -- 释放技能后 local onSkillEnd = function(skill) if skill and not skill.isTriggerJudge and judge==1 then return end if skill.type == BattleSkillType.Special then + BattleUtil.RandomAction(p1, function () BattleUtil.CalRage(role, role, i1, CountTypeName.Add) + end) end end role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role) @@ -7008,24 +7014,25 @@ local passivityList = { end role.Event:AddEvent(BattleEventName.RoleRageGrow, OnRageGrow,nil,nil,role) end, - --[a]%概率受到的直接伤害变成[b],每回合最多触发[c]次 - --a[float],b[int],c[int] + --[a]%概率受到的直接伤害变成[b],每回合最多触发[c]次,同一回合内每失败一次概率增加[d]% + --a[float],b[int],c[int],d[float] [321] = function(role, args,id,judge) local p1 = args[1] local damage1=args[2] local v1 =args[3] + local p2 = args[4] local curRound=1 local time=0 local curDamage = 0 local function onRoundChange(round) if round==curRound+1 then + p1=args[1] time=0 end curRound=round end BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, onRoundChange,nil,nil,role) - local function onFinalBeDamage(damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType,isDirect) -- 非直接伤害不免除 if not skill and not isDirect then @@ -7037,13 +7044,15 @@ local passivityList = { if time>=v1 then return end - BattleUtil.RandomAction(p1, function () + local isTrigger=BattleUtil.RandomAction(p1, function () curDamage=floor(damage-damage1) if damagingFunc then damagingFunc(curDamage) end time=time+1 + p1=args[1] end) - - + if not isTrigger then + p1=p1+p2 + end end role.Event:AddEvent(BattleEventName.FinalBeDamageEnd, onFinalBeDamage,nil,nil,role) end, diff --git a/luafight/Modules/Battle/Logic/HardStageCondition.lua b/luafight/Modules/Battle/Logic/HardStageCondition.lua index 0d9d606db..0a50d89f8 100644 --- a/luafight/Modules/Battle/Logic/HardStageCondition.lua +++ b/luafight/Modules/Battle/Logic/HardStageCondition.lua @@ -21,7 +21,7 @@ local _ConditionConfig = { --上阵[a]个神将通过关卡 [3]=function(condition) local v1 = condition[1] - local list = RoleManager.Query(function(v) return v.camp == 0 end) + local list = RoleManager.Query(function(v) return v.camp == 0 end,true) if BattleUtil.LengthOfTable(list)<=v1 then return 1 end @@ -45,7 +45,7 @@ local _ConditionConfig = { [5]=function(condition) local v1 = condition[1] local v2 = condition[2] - local list = RoleManager.Query(function(v) return v.camp == 0 and v.element==v1 end) + local list = RoleManager.Query(function(v) return v.camp == 0 and v.element==v1 end,true) if BattleUtil.LengthOfTable(list)>=v2 then return 1 end @@ -63,7 +63,7 @@ local _ConditionConfig = { --不上阵[a]职能神将通过关卡 [7]=function(condition) local v1 = condition[1] - local list = RoleManager.Query(function(v) return v.camp == 0 and v.professionId==v1 end) + local list = RoleManager.Query(function(v) return v.camp == 0 and v.professionId==v1 end,true) if BattleUtil.LengthOfTable(list)==0 then return 1 end @@ -72,7 +72,7 @@ local _ConditionConfig = { --不上阵[a]阵营神将通过关卡 [8]=function(condition) local v1 = condition[1] - local list = RoleManager.Query(function(v) return v.camp == 0 and v.element==v1 end) + local list = RoleManager.Query(function(v) return v.camp == 0 and v.element==v1 end,true) if BattleUtil.LengthOfTable(list)==0 then return 1 end @@ -81,7 +81,7 @@ local _ConditionConfig = { --佩戴xxxid被动通过关卡 [9]=function(condition) local v1 = condition[1] - local list = RoleManager.Query(function(v) return v.camp == 0 end) + local list = RoleManager.Query(function(v) return v.camp == 0 end,true) if not list or #list==0 then return 0 end @@ -105,12 +105,34 @@ local _ConditionConfig = { --全部上阵[a]职业神将通过关卡 [11]=function(condition) local v1 = condition[1] - local list = RoleManager.Query(function(v) return v.camp == 0 and v.professionId~=v1 end) + local list = RoleManager.Query(function(v) return v.camp == 0 and v.professionId~=v1 end,true) if BattleUtil.LengthOfTable(list)==0 then return 1 end return 0 end, + --达成[a]次斩杀 + [12]=function(condition) + local v1 = condition[1] + local num=HardStageEventManager.GetSeckKillNum() + if v1 and num>=v1 then + return 1 + end + return 0 + end, + --控制[a]类型 [b]次 + [13]=function(condition) + local v1 = condition[1] + local v2 = condition[2] + local list=HardStageEventManager.GetCtrlNumList() + if list and list[v1] then + if list[v1]>=v2 then + return 1 + end + end + return 0 + end, + } diff --git a/luafight/Modules/Battle/Logic/HardStageEventManager.lua b/luafight/Modules/Battle/Logic/HardStageEventManager.lua index 67d334e69..ee1657c80 100644 --- a/luafight/Modules/Battle/Logic/HardStageEventManager.lua +++ b/luafight/Modules/Battle/Logic/HardStageEventManager.lua @@ -6,16 +6,76 @@ local recordRound=1 local roundDamage=0 --记录的回合伤害 local recordRoundDamage +--记录追击击杀单位 +local recordAddKill +--斩杀次数 +local seckKillNum=0 +--控制次数集合 +local ctrlNumList function this.Init() recordRound=1 roundDamage=0 + seckKillNum=0 + CurRound=0 recordRoundDamage={} + recordAddKill={} + ctrlNumList={} 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) end function this.ClearEvent() BattleLogic.Event:RemoveEvent(BattleEventName.RecordDamage,this.OnRecordDamage) + BattleLogic.Event:RemoveEvent(BattleEventName.Seckill,this.OnSeckill) + BattleLogic.Event:RemoveEvent(BattleEventName.BuffRoundChange,this.OnRoundChange) + BattleLogic.Event:RemoveEvent(BattleEventName.RecordBuff,this.OnBuffAdd) end + +--buff添加成功 +function this.OnBuffAdd(caster,target,buff) + if caster and target and buff then + if caster.camp==0 and buff.type==BuffName.Control then + local type=buff.ctrlType + LogError("ctrltype=="..type) + if ctrlNumList[type] then + ctrlNumList[type]=ctrlNumList[type]+1 + else + table.insert(ctrlNumList,type) + ctrlNumList[type]=1 + end + end + end + +end + +--获取控制集合 +function this.GetCtrlNumList() + return ctrlNumList +end + + +--回合数据改变 +function this.OnRoundChange(round) + CurRound=round +end + + +function this.OnSeckill(atkRole,defRole) + if not atkRole and not defRole then + if atkRole.camp==0 and defRole.camp==1 and not BattleUtil.CheckIsNoDead(defRole) then + seckKillNum=seckKillNum+1 + end + end +end + +--获取斩杀次数 +function this.GetSeckKillNum() + return seckKillNum +end + + --记录伤害 function this.OnRecordDamage(atkRole,defRole,damage) if not atkRole or atkRole.camp==1 then diff --git a/luafight/Modules/Battle/Readme.txt b/luafight/Modules/Battle/Readme.txt index 80799c256..923ec8145 100644 --- a/luafight/Modules/Battle/Readme.txt +++ b/luafight/Modules/Battle/Readme.txt @@ -1,3 +1,7 @@ +v1.0.33 + 1. 同步被动逻辑 +v1.0.32 + 1. 精英副本星级判断逻辑修改 v1.0.31 1. 添加精英副本相关战斗逻辑 v1.0.30