From de591330245fcd5897acbcff66ec4e9fac950c9b Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Wed, 15 Feb 2023 18:48:53 +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=3D=3D=3D=3D=3D=E6=B7=BB=E5=8A=A0=20buff=E9=87=91?= =?UTF-8?q?=E5=88=9A=E5=8D=B0=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Battle/Logic/Base/Buff.lua | 1 + .../Modules/Battle/Logic/Buff/BuDongSign.lua | 75 +++++++++++++++++++ .../Battle/Logic/Buff/BuDongSign.lua.meta | 7 ++ .../Battle/Logic/Misc/BattleDefine.lua | 1 + .../Modules/Battle/View/Unit/BuffCtrl.lua | 3 + 5 files changed, 87 insertions(+) create mode 100644 Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua create mode 100644 Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua.meta diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua index 0adb7c9354..ac9684ecd1 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua @@ -22,6 +22,7 @@ local BuffRegister = { [BuffName.BreakArmor] = "BreakArmor", [BuffName.AddAttack] = "AddAttack", [BuffName.Suppress] = "Suppress", + [BuffName.BuDongSign] = "BuDongSign", } diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua new file mode 100644 index 0000000000..daba55b7d2 --- /dev/null +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua @@ -0,0 +1,75 @@ +--不动明王印记 +BuDongSign = Buff:New() --压制 +--初始化Buff,通过传入一些自定义参数控制成长相关的数值 +function BuDongSign:SetData(...) + -- self.atkType, --1 物理 2.魔法 + -- self.ct, + -- self.value1=... + self.f1=... + self.maxPro=0 + -- 刷新排序等级 + self.curDamage=0 + self.sort = 4 +end + + +--初始化后调用一次 +function BuDongSign:OnStart() + + + self.curDamage = 0 + --本回合最多能扣到多少比例的血条 + self.maxPro=(self.target:GetRoleData(RoleDataName.Hp)/self.target:GetRoleData(RoleDataName.MaxHp))-self.f1 + if self.maxPro<0 then + self.maxPro=0 + end + + local function onFinalBeDamage(damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType,isDirect) + -- 非直接伤害不免除 + if not skill and not isDirect then + return + end + --判断伤害是否能超出能扣除的最大伤害 + local maxDamage =math.floor(self.target:GetRoleData(RoleDataName.Hp)-(self.target:GetRoleData(RoleDataName.MaxHp) * self.maxPro)) + self.curDamage=damage + if self.curDamage > maxDamage then + -- 计算免除的伤害值 + local md = self.curDamage - maxDamage + if md > damage then + md = damage + end + if damagingFunc then damagingFunc(md) end + end + + end + self.target.Event:AddEvent(BattleEventName.CheckLiZhanZhiQu, onFinalBeDamage,nil,nil,self.target) + + local function onRoundChange() + self.curDamage = 0 + --本回合最多能扣到多少比例的血条 + self.maxPro=(self.target:GetRoleData(RoleDataName.Hp)/self.target:GetRoleData(RoleDataName.MaxHp))-self.f1 + if self.maxPro<0 then + self.maxPro=0 + end + --LogError("本回合最多能扣到的比例=="..maxPro) + + end + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, onRoundChange,nil,nil,self.target) +end + +--间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd +function BuDongSign:OnTrigger() + return true +end + +--效果结束时调用一次 +function BuDongSign:OnEnd() + +end + +--只有当cover字段为true时触发,返回true则被新效果覆盖 +function BuDongSign:OnCover(newBuff) + return true +end + +return BuDongSign \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua.meta b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua.meta new file mode 100644 index 0000000000..83a3e701df --- /dev/null +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/BuDongSign.lua.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8756085ac5b303d4b8efeb775f208bf9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua index e01dede8f7..9da6fc0978 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua @@ -287,6 +287,7 @@ BuffName = { BreakArmor = 17, AddAttack = 18, Suppress = 19, + BuDongSign = 20, } DotType = { diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/BuffCtrl.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/BuffCtrl.lua index 9dfcca8b70..1b29005a5b 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/BuffCtrl.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/BuffCtrl.lua @@ -17,6 +17,7 @@ local BuffTypeToConfigType = { [BuffName.BreakArmor] = 14, [BuffName.AddAttack] = 15, [BuffName.Suppress] = 16, + [BuffName.BuDongSign] = 17, } local function _GetPropChangeBuffCType(pName) for cType, pn in ipairs(BattlePropList) do @@ -58,6 +59,8 @@ local function _GetBuffEffectConfig(buff) elseif bType==BuffName.BanBlood then cType = 1 elseif bType==BuffName.SigilSign then + cType = 1 + elseif bType==BuffName.BuDongSign then cType = 1 elseif bType==BuffName.CommonSign then cType = 1