diff --git a/luafight/Modules/Battle/Logic/Base/Effect.lua b/luafight/Modules/Battle/Logic/Base/Effect.lua index 98ea73a41..c98569777 100644 --- a/luafight/Modules/Battle/Logic/Base/Effect.lua +++ b/luafight/Modules/Battle/Logic/Base/Effect.lua @@ -581,6 +581,52 @@ local effectList = { end) end) end, + --造成[a]%的[b]伤害,[c]%概率添加[d]的印记,该角色在攻击拥有印记的目标时,额外获得(印记层数*[e])的暴击伤害,印记最多叠加[f]层。 + --a[folat],b[伤害类型],c[float],d[角色id],e[float],f[float] + [33] = function(caster, target, args, interval) + local f1 = args[1] + local dt = args[2] + local f2 = args[3] * (1 + caster:GetRoleData(RoleDataName.Hit) / (1 + target:GetRoleData(RoleDataName.Dodge))) + local rid = args[4] + local f3 = args[5] + local i1 = args[6] + caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, interval, target) + BattleLogic.WaitForTrigger(interval, function () + local layer + if BattleLogic.BuffMgr:HasBuff(target, BuffName.Brand, function (buff) + local b = buff.flag == rid + if b then + layer = buff.layer + end + return b + end) then + local OnPassiveCriting = function(crit) + crit(min(layer, i1) * f3) + end + caster.Event:AddEvent(BattleEventName.PassiveCriting, OnPassiveCriting) + BattleUtil.CalDamage(caster, target, dt, f1) + caster.Event:RemoveEvent(BattleEventName.PassiveCriting, OnPassiveCriting) + else + BattleUtil.CalDamage(caster, target, dt, f1) + end + buffRandomAction(f2, caster, target, BuffName.Brand, 0, rid) + end) + end, + --对[a]职业,[e]改变目标的[b]属性[c]%,持续[d]秒 + --a[职业],b[属性],c[float],d[int],e[改变类型] + [34] = function(caster, target, args, interval) + local pt = args[1] + local pro1 = args[2] + local f1 = args[3] + local f2 = args[4] + local ct = args[5] + + BattleLogic.WaitForTrigger(interval, function () + if target.professionId == pt then + target:AddBuff(Buff.Create(caster, BuffName.PropertyChange, f2, propertyList[pro1], f1, ct)) + end + end) + end, } return effectList \ No newline at end of file