From 74ebe19f74aecc82d57f4f017ffc7a04c2aa0610 Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Fri, 5 Mar 2021 16:26:50 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[=E6=88=98=E6=96=97]=3D=3D=3D=3D=3D=3D=3D?= =?UTF-8?q?=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=E5=A4=A7=E9=97=B9?= =?UTF-8?q?=E5=A4=A9=E5=AE=AB=E5=9C=A3=E7=89=A9=E4=BF=AE=E6=94=B9=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Battle/Logic/Base/Passivity.lua | 124 ++++++++++++++---- 1 file changed, 97 insertions(+), 27 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index ff1c6374c7..e2bc234648 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -1839,27 +1839,34 @@ local passivityList = { - -- 释放技能后给除自己外己方生命最少的武将附加无敌盾持续[b]回合(只剩自己则不加) - --b[属性] + -- 释放技能后给除自己外己方生命最少的[a]名武将附加无敌盾持续[b]回合(只剩自己则不加) + -- a[int] b[int] [104] = function(role, args,id,judge) local i1 = args[1] + local num = args[2] -- 释放技能后 local onSkillEnd = function(skill) if skill and not skill.isTriggerJudge and judge==1 then return end + local heros={} if skill.type == BattleSkillType.Special then local list = RoleManager.Query(function(v) return v.camp == role.camp end) BattleUtil.SortByHpFactor(list, 1) local target = nil for i = 1, #list do if not list[i]:IsRealDead() and list[i] ~= role then - target = list[i] - break + -- target = list[i] + table.insert(heros,list[i]) + -- break end end - if target then - target:AddBuff(Buff.Create(role, BuffName.Shield, i1, ShieldTypeName.AllReduce, 0, 0)) + if heros then + for i = 1, i1 do + if heros[i] then + heros[i]:AddBuff(Buff.Create(role, BuffName.Shield, num, ShieldTypeName.AllReduce, 0, 0)) + end + end end end end @@ -2733,15 +2740,15 @@ local passivityList = { end, - -- 战斗第[a]回合无敌 + -- 战斗第开始无敌[a]回合 -- a[int] [141] = function(role, args) local i1 = args[1] local buff BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, function(curRound) -- 第i1回合开始 - if curRound == i1 then - buff = Buff.Create(role, BuffName.Shield, 0, ShieldTypeName.AllReduce, 0, 0) + if curRound == 1 then + buff = Buff.Create(role, BuffName.Shield, i1, ShieldTypeName.AllReduce, 0, 0) buff.clear = false role:AddBuff(buff) end @@ -3115,7 +3122,7 @@ local passivityList = { role.Event:AddEvent(BattleEventName.RoleHit, onHit) end, - -- 复活友方第[a]位阵亡的英雄并回复其[b]%的生命每场战斗触发[c]次;复活的如果是[d]阵营,回复[e]% + -- 复活友方[a]位阵亡的英雄并回复其[b]%的生命每场战斗触发[c]次;复活的如果是[d]阵营,回复[e]% -- a[int]b[float]c[int] d[int] e[float] (d,e不配就不会额外回复) [154] = function(role, args) local i1 = args[1] @@ -3134,7 +3141,7 @@ local passivityList = { f1=v1 end counter = counter + 1 - if counter == i1 then + if counter <= i1 then deadRole:SetRelive(f1) end end @@ -3188,10 +3195,11 @@ local passivityList = { role.Event:AddEvent(BattleEventName.BuffCaster, OnBuffCaster) end, - -- 释放技能后回复当前本方阵容最靠前武将[a]点怒气 - -- a[int] + -- 释放技能后回复当前本方阵容最靠前[a]名武将[b]点怒气 + -- a[int] b[int] [158] = function(role, args,id,judge) local i1 = args[1] + local num = args[2] local onSkillCastEnd = function(skill) if skill and not skill.isTriggerJudge and judge==1 then return @@ -3201,10 +3209,14 @@ local passivityList = { table.sort(list, function(a, b) return a.position < b.position end) + local aaa = 0 for i= 1, #list do if list[i] and not list[i]:IsRealDead() then - BattleUtil.CalRage(role, list[i], i1, CountTypeName.Add) - break + BattleUtil.CalRage(role, list[i], num, CountTypeName.Add) + aaa=aaa+1 + if aaa==i1 then + break + end end end end @@ -4759,16 +4771,19 @@ local passivityList = { end, -- 大闹天宫胜利次数 - [225] = function(role, args) + [225] = function(role, args,id,judge) --王振兴添加 local f1 = args[1] local pro1 = args[2] local ct1 = args[3] local maxNum = args[4] -- 紫+橙 - local num = OutDataManager.GetOutData(role.camp, OutDataName.WinTimes) - + local num = OutDataManager.GetOutData(role.camp,id) + -- LogError("id: "..id.." 胜利次数:"..num) num = min(maxNum, num) + if num==0 then + return + end BattleUtil.AddProp(role, pro1, f1 * num, ct1) end, @@ -4962,7 +4977,7 @@ local passivityList = { -- 猎妖之路专属 -- 根据同时拥有夜明珠的数量获得效果:2个:[c]改变[a]的[b];3个:[f]改变[d]的[e];4个:[i]改变[g]的[h] -- a[float],b[属性],c[改变类型],d[float],e[属性],f[改变类型],g[float],h[属性],i[改变类型] - [237] = function(role, args) + [237] = function(role, args,id,judge) local f1 = args[1] local pro1 = args[2] local ct1 = args[3] @@ -4974,7 +4989,8 @@ local passivityList = { local ct3 = args[9] - local num = OutDataManager.GetOutData(role.camp, OutDataName.DarkGlowBallNum) + local num = OutDataManager.GetOutData(role.camp,id) + LogError("舍利子数量 "..num) if num >= 2 then BattleUtil.AddProp(role, pro1, f1, ct1) end @@ -4988,7 +5004,7 @@ local passivityList = { -- 猎妖之路专属 -- 在大闹天空的第[a]层中,我方武将[d]改变[b]的[c],[g改变[e]的[f] -- a[位置],b[float],c[属性],d[改变类型],e[float],f[属性],g[改变类型] - [238] = function(role, args) + [238] = function(role, args,id,judge) local flr = args[1] local f1 = args[2] local pro1 = args[3] @@ -4997,7 +5013,7 @@ local passivityList = { local pro2 = args[6] local ct2 = args[7] - if OutDataManager.GetOutData(role.camp, OutDataName.DaNaoTianGongFloor) == flr then + if OutDataManager.GetOutData(role.camp,id) == flr then BattleUtil.AddProp(role, pro1, f1, ct1) BattleUtil.AddProp(role, pro2, f2, ct2) end @@ -5005,7 +5021,7 @@ local passivityList = { -- 猎妖之路专属 -- 每有一件紫色品质以上的战利品,我方武将[d]改变[b]的[c],[g改变[e]的[f],最多[h]层 -- b[float],c[属性],d[改变类型],e[float],f[属性],g[改变类型],h[int] - [239] = function(role, args) + [239] = function(role, args,id,judge) local f1 = args[1] local pro1 = args[2] local ct1 = args[3] @@ -5015,7 +5031,7 @@ local passivityList = { local maxNum = args[7] -- 紫+橙 - local num = OutDataManager.GetOutData(role.camp, OutDataName.OrangeGloryItemNum) + OutDataManager.GetOutData(role.camp, OutDataName.RedGloryItemNum) + local num = OutDataManager.GetOutData(role.camp, id) num = min(maxNum, num) BattleUtil.AddProp(role, pro1, f1 * num, ct1) BattleUtil.AddProp(role, pro2, f2 * num, ct2) @@ -5023,15 +5039,15 @@ local passivityList = { -- 猎妖之路专属 -- 每使用一次神秘药水,我方武将[c]改变[a]的[b],最多[d]层 -- a[float],b[属性],c[改变类型],d[int] - [240] = function(role, args) + [240] = function(role, args,id,judge) local f1 = args[1] local pro1 = args[2] local ct1 = args[3] local maxNum = args[4] -- 紫+橙 - local num = OutDataManager.GetOutData(role.camp, OutDataName.MisteryLiquidUsedTimes) - + local num = OutDataManager.GetOutData(role.camp, id) + LogError("笔使用次数:"..num) num = min(maxNum, num) BattleUtil.AddProp(role, pro1, f1 * num, ct1) end, @@ -6683,5 +6699,59 @@ local passivityList = { end BattleLogic.Event:AddEvent(BattleEventName.RoleRealDead, onRoleHit) end, + --英雄[a],附加的[b]种类[c]类型buff,持续时间改变[d][e]回合 + --a[int],b[int buff类型],c[int type类型],d[int 改变类型],e[int] + [306] = function(role, args) + local id = args[1] + local tp1 = args[2] + local tp2 = args[3] + local ct = args[4] + local round = args[5] + local OnBuffCaster = function(buff) + if not buff then + return + end + if buff.type~=tp1 then + return + end + if role.roleId~=id then + return + end + if buff.type == BuffName.PropertyChange then + if buff.changeType~=tp2 then + return + end + elseif buff.type==BuffName.Control then + if buff.ctrlType~=tp2 then + return + end + elseif buff.type== BuffName.DOT then + if buff.damageType~=tp2 then + return + end + elseif buff.type== BuffName.HOT then + + elseif buff.type== BuffName.Shield then + if buff.shieldType~=tp2 then + return + end + elseif buff.type== BuffName.Immune then + if buff.immuneType~=tp2 then + return + end + end + + if ct == 1 then --加算 + buff.duration = buff.duration + round + elseif ct == 2 then --乘加算(百分比属性加算) + buff.duration = buff.duration * (1 + round) + elseif ct == 3 then --减算 + buff.duration = buff.duration - round + elseif ct == 4 then --乘减算(百分比属性减算) + buff.duration = buff.duration * (1 - round) + end + end + role.Event:AddEvent(BattleEventName.BuffCaster, OnBuffCaster) + end, } return passivityList \ No newline at end of file From 130a7d654898d83c088cadec07c456f37a1c07dd Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Fri, 5 Mar 2021 18:02:31 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[=E6=88=98=E6=96=97]=3D=3D=3D=3D=3D=3D=3D?= =?UTF-8?q?=3D=3D=3D=3D=3D=3D272=E8=A2=AB=E5=8A=A8=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=85=8D=E7=BD=AE=E5=9B=9E=E5=90=88=E6=95=B0?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E8=AE=A1=E7=AE=97=E6=A6=82=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Battle/Logic/Base/Passivity.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index e2bc234648..7264ee7db4 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -5844,16 +5844,19 @@ local passivityList = { end role.Event:AddEvent(BattleEventName.PassiveBeDamaging, onPassiveBeDamaging) end, - -- 战斗第回合概率无敌,回合数每增加1,概率是之前的[a] - -- a[float] + -- 战斗第[a]回合开始概率无敌,回合数每增加1,概率是之前的[b] + -- a[int] b[float] [272] = function(role, args) local i1 = args[1] + local p1 =args[2] local buff=nil local isTrigger=true BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, function(curRound) local pro=0 - if curRound>0 then - pro=i1^(curRound-1) + if curRound>i1 then + pro=p1^(curRound-i1) + else + pro=1 end if isTrigger then local isAdd=BattleUtil.RandomAction(pro, function () From b67d6485c9e74d8ea2051093202c063397766f0a Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Mon, 8 Mar 2021 18:07:13 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[=E6=88=98=E6=96=97]=3D=3D=3D=3D=3D=3D=3D?= =?UTF-8?q?=3D=3D=3D=3D=3D=3D=3D249=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Battle/Logic/Base/Passivity.lua | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index 7264ee7db4..1727c8cbe5 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -5225,6 +5225,7 @@ local passivityList = { [249] = function(role, args,id,judge) local f1 = args[1] local round = 0 + local isKill =false -- 释放技能后 local onRoleHit = function(target,damage, bCrit, finalDmg, damageType, skill) if skill and not skill.isTriggerJudge and judge==1 then @@ -5234,16 +5235,11 @@ local passivityList = { if skill and BattleUtil.ChecklistIsContainValue(skill.triggerPassivityId,id) then return end - local curRound=BattleLogic.GetCurRound() - --每个回合只会生效一次 - if curRound>round then - round=curRound - else - return - end + if target:IsDead() and not BattleUtil.CheckIsNoDead(target) then - local buff = Buff.Create(role, BuffName.PropertyChange, 1, RoleDataName.Crit, f1, CountTypeName.Add) - role:AddBuff(buff) + -- local buff = Buff.Create(role, BuffName.PropertyChange, 1, RoleDataName.Crit, f1, CountTypeName.Add) + -- role:AddBuff(buff) + isKill = true if skill then --skill.isTriggePassivity=true table.insert(skill.triggerPassivityId,id) @@ -5251,6 +5247,26 @@ local passivityList = { end end role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit) + + local onRoundChange=function(round2) + if round2==round+1 and isKill then + role.mustCrit=true + else + role.mustCrit=false + isKill=false + end + round=round2 + end + + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, onRoundChange) + + + local onRoundStart=function(round2) + isKill=false + end + + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart, onRoundStart) + end, -- 直接伤害每次击杀目标增加自身伤害[a]%,[b]改变,可叠加持续至战斗结束 重写132 一次技能只触发一次被动