From aff13f89046915f53ad28c24f6fad8af145c8e3b Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Thu, 25 Nov 2021 15:07:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=88=98=E6=96=97=E3=80=91=3D=3D=3D?= =?UTF-8?q?=3D=3D=3D=E6=8A=80=E8=83=BD132-140=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Battle/Logic/Base/Effect.lua | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua index e59d75d048..1378fdd0e4 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua @@ -2517,6 +2517,217 @@ local effectList = { target:AddBuff(buff) end) end, + --造成主角[a]*[b]攻击伤害 + --a[int 1:等级 2.战斗力],b[int] + [132] = function(caster, target, args, interval, skill) + local type = args[1] + local pro = args[2] + + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*pro) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + end) + end, + --对目标造成玩家[a]*[b]的伤害,伤害的[c]%转化为生命,治疗生命百分比最[d]的英雄 + --a[int 1:等级 2.战斗力],b[int],c[float],d[int 1:低 0:高] + [133] = function(caster, target, args, interval, skill) + local type=args[1] + local f1 = args[2] + local f2 = args[3] + local sort = args[4] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*f1) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + local hp=floor(damage*f2) + local arr = RoleManager.NoOrder(function (r) return r.camp == caster.camp end,false,true) + BattleUtil.SortByHpFactor(arr,sort) + BattleUtil.CalTreat(caster, arr[1],hp,1,skill) + + end) + end, + --对目标造成主角[a]*[b]的伤害,并有[c]%概率给目标上[d]类型[e]效果buff持续[f]回合,buff具体参数1 [g] + --a[int 1:等级 2.战斗力],b[int],c[float],d[int],e[int],f[int],g[int] + [134] = function(caster, target, args, interval, skill) + local type=args[1] + local v1 = args[2] + local p1 = args[3] + local t1 = args[4] + local t2 = args[5] + local r1 = args[6] + local v2 = args[7] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*v1) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + if t1==BuffName.Control then + BattleUtil.RandomControl(p1,t2,caster,target,r1,skill) + elseif t1==BuffName.DOT then + BattleUtil.RandomDot(p1,t2,caster,target,r1,1,value*v2,skill) + end + end) + end, + --对目标造成主角[a]*[b]的伤害,如果目标处于[c]类型[d]效果,则[e]%概率给目标添加[f]类型[g]效果,持续[h]回合 + --a[int 1:等级 2.战斗力],b[int],c[int],d[int],e[float],f[int],g[int],h[int] + [135] = function(caster, target, args, interval, skill) + local type=args[1] + local v1 = args[2] + local t1 = args[3] + local t2 = args[4] + local pro = args[5] + local t3 = args[6] + local t4 = args[7] + local r1 =args[8] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*v1) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + if BattleLogic.BuffMgr:HasBuff(target, t1, function (buff) + if t1==BuffName.DOT then + return buff.damageType==t2 + end + end) then + if t3==BuffName.Control then + BattleUtil.RandomControl(pro,t4,caster,target,r1,skill) + end + end + end) + end, + --对目标造成主角[a]*[b]攻击伤害,目标每减少[c]个伤害增加[d]% + --a[int 1:等级 2.战斗力],b[int],c[int],d[float] + [136] = function(caster, target, args, interval, skill) + local type = args[1] + local pro = args[2] + local i1 = args[3] + local v1 = args[4] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + -- 改变值 = 技能最大目标数 - 当前目标数 + local maxNum = skill:GetMaxTargetNum() + local curNum = #skill:GetDirectTargets() + local lessNum = max(maxNum - curNum, 0) + local level = math.floor(lessNum/i1) + local extra = BattleUtil.ErrorCorrection(level * i1) + local damage=floor(value*pro*(1+extra)) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + end) + end, + --对目标造成主角[a]*[b]攻击伤害,如果击杀目标,随机减少敌方[c]个神将[d]点怒气 + --a[int 1:等级 2.战斗力],b[int],c[int],d[float] + [137] = function(caster, target, args, interval, skill) + local type = args[1] + local pro = args[2] + local i1 = args[3] + local v1 = args[4] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*pro) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + if target.isDead then + local arr = RoleManager.Query(function (r) return r.camp == target.camp end) + for i = 1, i1 do + local count = Random.RangeInt(1,#arr) + BattleUtil.CalRage(caster,arr[count],v1,CountTypeName.Sub) + end + end + end) + end, + --技能目标如果大于[a],改变[b]目标[c]点怒气 + --a[int],b[int],c[int] + [138] = function(caster, target, args, interval, skill) + local num = args[1] + local ct = args[2] + local v1 = args[3] + BattleLogic.WaitForTrigger(interval, function () + local curNum = #skill:GetDirectTargets() + if curNum>num then + BattleUtil.CalRage(caster,target,v1,ct) + end + end) + end, + --对目标造成主角[a]*[b]的伤害,如果目标处于[c]类型[d]效果,则伤害改变[e][f]% + --a[int 1:等级 2.战斗力],b[int],c[int],d[int],e[int],f[float] + [139] = function(caster, target, args, interval, skill) + local type=args[1] + local v1 = args[2] + local t1 = args[3] + local t2 = args[4] + local ct = args[5] + local v2 = args[6] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local add=0 + if BattleLogic.BuffMgr:HasBuff(target, t1, function (buff) + if t1==BuffName.DOT then + return buff.damageType==t2 + end + end) then + add=v2 + end + local damage=floor(value*v1) + damage=floor(BattleUtil.CountValue(damage,add,ct)) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + end) + end, + --造成主角[a]*[b]攻击伤害,概率[c]改变[d]目标[e]点怒气 + --a[int 1:等级 2.战斗力],b[int],c[float],d[int],e[int] + [140] = function(caster, target, args, interval, skill) + local type = args[1] + local pro = args[2] + local p1 = args[3] + local ct = args[4] + local v1 = args[5] + BattleLogic.WaitForTrigger(interval, function () + local value=0 + if type==1 then + value=caster.star + elseif type==2 then + value=caster.teamDamage + end + local damage=floor(value*pro) + BattleUtil.FinalDamageCountShield(nil,caster, target,damage) + BattleUtil.RandomAction(p1, function () + BattleUtil.CalRage(caster,target,v1,ct) + end) + end) + end, + } return effectList \ No newline at end of file