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/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index e221e0ff88..83d6c74db8 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -11735,7 +11735,7 @@ local passivityList = { if arr==nil or len==0 then return end - if numlen then num=len end BattleUtil.SortByHpFactor(arr, 1) 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/Logic/Role/RoleLogic.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleLogic.lua index 8f6daefb7e..debe497548 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleLogic.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleLogic.lua @@ -434,7 +434,8 @@ function RoleLogic:IsAvailable(skill) return false end --角色没有真正死亡 在 被眩晕/沉默的 情况下 任然能释放死亡技能 - if (self.ctrl_dizzy or self.ctrl_slient) and self:IsDead() and skill and skill.type==BattleSkillType.DeadSkill then + --(self.ctrl_dizzy or self.ctrl_slient) and + if self:IsDead() and skill and skill.type==BattleSkillType.DeadSkill then return true end -- 眩晕 -- 死亡 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