Merge branch 'master' of 60.1.1.230:backend/jieling_server
commit
4339867329
|
@ -162,7 +162,7 @@ function BuffManager:Update()
|
||||||
local isCovered = false
|
local isCovered = false
|
||||||
for i=1, buffList.size do
|
for i=1, buffList.size do
|
||||||
local oldBuff = buffList.buffer[i]
|
local oldBuff = buffList.buffer[i]
|
||||||
if oldBuff.cover and oldBuff.target == buff.target and oldBuff:OnCover(buff) then --判定该效果能否被覆盖
|
if oldBuff.cover and oldBuff.target == buff.target and oldBuff.clear == buff.clear and oldBuff:OnCover(buff) then --判定该效果能否被覆盖
|
||||||
oldBuff:OnEnd()
|
oldBuff:OnEnd()
|
||||||
oldBuff.target.Event:DispatchEvent(BattleEventName.BuffEnd, oldBuff)
|
oldBuff.target.Event:DispatchEvent(BattleEventName.BuffEnd, oldBuff)
|
||||||
putBuff(oldBuff)
|
putBuff(oldBuff)
|
||||||
|
|
|
@ -431,17 +431,17 @@ local effectList = {
|
||||||
local f2 = args[3]
|
local f2 = args[3]
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
local trigger = function(defRole, damageFunc, damage)
|
local trigger = function(defRole, damageFunc, damage)
|
||||||
if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function (buff)
|
if BattleLogic.BuffMgr:HasBuff(target, BuffName.DOT, function (buff)
|
||||||
return dot == 0 or buff.damageType == dot
|
return dot == 0 or buff.damageType == dot
|
||||||
end) then
|
end) then
|
||||||
damage = damage + floor(damage * f1)
|
damage = damage + floor(damage * f1)
|
||||||
end
|
end
|
||||||
damageFunc(damage)
|
damageFunc(damage)
|
||||||
end
|
end
|
||||||
caster.Event:AddEvent(BattleEventName.RoleDamageAfter, trigger)
|
target.Event:AddEvent(BattleEventName.RoleBeDamagedAfter, trigger)
|
||||||
if f2 > 0 then
|
if f2 > 0 then
|
||||||
BattleLogic.WaitForTrigger(f2, function ()
|
BattleLogic.WaitForTrigger(f2, function ()
|
||||||
caster.Event:RemoveEvent(BattleEventName.RoleDamageAfter, trigger)
|
target.Event:RemoveEvent(BattleEventName.RoleBeDamagedAfter, trigger)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
@ -843,13 +843,12 @@ local effectList = {
|
||||||
caster.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast)
|
caster.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
--造成[a]%的[b]伤害,如果目标受到此次伤害前,生命低于最大生命[c]%,则直接击杀(击杀值不超过攻击者10倍攻击)。
|
--造成[a]%的[b]伤害【AOE】,如果目标受到此次伤害前,生命低于最大生命[c]%,则直接击杀(击杀值不超过攻击者10倍攻击)。
|
||||||
--a[float],b[伤害类型],c[float]
|
--a[float],b[伤害类型],c[float]
|
||||||
[50] = function(caster, target, args, interval)
|
[50] = function(caster, target, args, interval)
|
||||||
local f1 = args[1]
|
local f1 = args[1]
|
||||||
local dt = args[2]
|
local dt = args[2]
|
||||||
local f2 = args[3]
|
local f2 = args[3]
|
||||||
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, interval, target)
|
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
if BattleUtil.GetHPPencent(target) < f2 then
|
if BattleUtil.GetHPPencent(target) < f2 then
|
||||||
BattleUtil.ApplyDamage(caster, target, min(target:GetRoleData(RoleDataName.Hp), caster:GetRoleData(RoleDataName.Attack)*10))
|
BattleUtil.ApplyDamage(caster, target, min(target:GetRoleData(RoleDataName.Hp), caster:GetRoleData(RoleDataName.Attack)*10))
|
||||||
|
@ -1140,7 +1139,7 @@ local effectList = {
|
||||||
caster.Event:RemoveEvent(BattleEventName.PassiveDamaging, OnPassiveDamaging)
|
caster.Event:RemoveEvent(BattleEventName.PassiveDamaging, OnPassiveDamaging)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
--造成[a]%的[b]伤害,[c]的概率造成眩晕,持续[d]秒。若未造成眩晕,则为随机1名敌人施加增伤印记。最大[e]层(减益印记,不可驱散)
|
--造成[a]%的[b]伤害,[c]的概率造成眩晕,持续[d]秒。若未造成眩晕,则为目标施加增伤印记。最大[e]层(减益印记,不可驱散)
|
||||||
--a[float],b[伤害类型],c[float],d[int],e[int]
|
--a[float],b[伤害类型],c[float],d[int],e[int]
|
||||||
[65] = function(caster, target, args, interval)
|
[65] = function(caster, target, args, interval)
|
||||||
local f1 = args[1]
|
local f1 = args[1]
|
||||||
|
@ -1154,14 +1153,11 @@ local effectList = {
|
||||||
if Random.Range01() <= f2 then
|
if Random.Range01() <= f2 then
|
||||||
target:AddBuff(Buff.Create(caster, BuffName.Control, f3, 1))
|
target:AddBuff(Buff.Create(caster, BuffName.Control, f3, 1))
|
||||||
else
|
else
|
||||||
local arr = BattleUtil.ChooseTarget(caster, 20001)
|
local brand = Buff.Create(caster, BuffName.Brand, 0, "zengshang")
|
||||||
if arr[1] then
|
brand.maxLayer = i1
|
||||||
local brand = Buff.Create(caster, BuffName.Brand, 0, "zengshang")
|
brand.clear = false
|
||||||
brand.maxLayer = i1
|
brand.isDeBuff = true
|
||||||
brand.clear = false
|
target:AddBuff(brand)
|
||||||
brand.isDeBuff = true
|
|
||||||
arr[1]:AddBuff(brand)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
|
@ -1556,7 +1552,7 @@ local effectList = {
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
--施加[a]的[b]%护盾,持续[c]秒。护盾被击破时,对击破者造成自身最大生命值[d]%的伤害。
|
--施加[a]的[b]%护盾,持续[c]秒。护盾被击破时,对击破者造成施法者最大生命值[d]%的伤害。
|
||||||
--a[属性],b[float],c[int],d[float]
|
--a[属性],b[float],c[int],d[float]
|
||||||
[84] = function(caster, target, args, interval)
|
[84] = function(caster, target, args, interval)
|
||||||
local pro1 = args[1]
|
local pro1 = args[1]
|
||||||
|
@ -1569,7 +1565,7 @@ local effectList = {
|
||||||
local OnBuffEnd = function(buff)
|
local OnBuffEnd = function(buff)
|
||||||
if buff == shield and buff.framePass < buff.frameDuration then --护盾被击破
|
if buff == shield and buff.framePass < buff.frameDuration then --护盾被击破
|
||||||
if buff.atk and not buff.atk.isTeam then
|
if buff.atk and not buff.atk.isTeam then
|
||||||
BattleUtil.ApplyDamage(target, buff.atk, floor(BattleUtil.FP_Mul(target:GetRoleData(RoleDataName.MaxHp), f3)))
|
BattleUtil.ApplyDamage(target, buff.atk, floor(BattleUtil.FP_Mul(caster:GetRoleData(RoleDataName.MaxHp), f3)))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1849,6 +1845,35 @@ local effectList = {
|
||||||
buffRandomAction(f4, target, HOT)
|
buffRandomAction(f4, target, HOT)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
|
--造成[a]到[b]段[c]%的[d]伤害【AOE】,每段伤害有[e]的概率造成[f],持续[g]秒。若目标处于[h]状态,则必定暴击。
|
||||||
|
--a[int],b[int],c[float],d[伤害类型],e[float],f[控制状态],g[int],h[控制状态]
|
||||||
|
[98] = function(caster, target, args, interval)
|
||||||
|
local i1 = args[1]
|
||||||
|
local i2 = args[2]
|
||||||
|
local f1 = args[3]
|
||||||
|
local dt = args[4]
|
||||||
|
local f2 = args[5]
|
||||||
|
local c1 = args[6]
|
||||||
|
local f4 = args[7]
|
||||||
|
local c2 = args[8]
|
||||||
|
|
||||||
|
local count = Random.RangeInt(i1, i2)
|
||||||
|
local d = interval / count
|
||||||
|
for i=1, count do
|
||||||
|
BattleLogic.WaitForTrigger(d * (i-1), function ()
|
||||||
|
BattleLogic.WaitForTrigger(d, function ()
|
||||||
|
if BattleLogic.BuffMgr:HasBuff(target, BuffName.Control, function (buff) return c2 == 0 or buff.ctrlType == c2 end) then
|
||||||
|
target.isFlagCrit = true
|
||||||
|
BattleUtil.CalDamage(caster, target, dt, f1)
|
||||||
|
target.isFlagCrit = false
|
||||||
|
else
|
||||||
|
BattleUtil.CalDamage(caster, target, dt, f1)
|
||||||
|
end
|
||||||
|
buffRandomAction(f2, target, Buff.Create(caster, BuffName.Control, f4, c1))
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
return effectList
|
return effectList
|
|
@ -1392,5 +1392,47 @@ local passivityList = {
|
||||||
end
|
end
|
||||||
role.Event:AddEvent(BattleEventName.RoleDead, OnDead)
|
role.Event:AddEvent(BattleEventName.RoleDead, OnDead)
|
||||||
end,
|
end,
|
||||||
|
--boss每受到([a]*印记层数)点伤害,为自身永久增加一层印记,每层印记为自身增加[b]点攻击,[c]点护甲和[d]点魔抗。【不可驱散】
|
||||||
|
--a[int],b[int],c[int],d[int]
|
||||||
|
[75] = function(role, args)
|
||||||
|
local i1 = args[1]
|
||||||
|
local i2 = args[2]
|
||||||
|
local i3 = args[3]
|
||||||
|
local i4 = args[4]
|
||||||
|
|
||||||
|
if i1 <= 0 then return end --防止死循环
|
||||||
|
local total = 0
|
||||||
|
local layer = 0
|
||||||
|
local OnBeDamaged = function(atkRole, damage, bCrit, finalDmg, damageType)
|
||||||
|
total = total + damage
|
||||||
|
local count = 0
|
||||||
|
while total >= i1 * layer do
|
||||||
|
total = total - i1 * layer
|
||||||
|
layer = layer + 1
|
||||||
|
count = count + 1
|
||||||
|
end
|
||||||
|
if count > 0 then
|
||||||
|
local buff1 = Buff.Create(role, BuffName.PropertyChange, 0, propertyList[1], i2 * count, 1)
|
||||||
|
buff1.cover = true
|
||||||
|
buff1.layer = count
|
||||||
|
buff1.clear = false
|
||||||
|
|
||||||
|
local buff2 = Buff.Create(role, BuffName.PropertyChange, 0, propertyList[2], i3 * count, 1)
|
||||||
|
buff2.cover = true
|
||||||
|
buff2.layer = count
|
||||||
|
buff2.clear = false
|
||||||
|
|
||||||
|
local buff3 = Buff.Create(role, BuffName.PropertyChange, 0, propertyList[3], i4 * count, 1)
|
||||||
|
buff3.cover = true
|
||||||
|
buff3.layer = count
|
||||||
|
buff3.clear = false
|
||||||
|
|
||||||
|
role:AddBuff(buff1)
|
||||||
|
role:AddBuff(buff2)
|
||||||
|
role:AddBuff(buff3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnBeDamaged)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
return passivityList
|
return passivityList
|
|
@ -36,9 +36,9 @@ function Brand:OnCover(newBuff)
|
||||||
local b = newBuff.flag == self.flag
|
local b = newBuff.flag == self.flag
|
||||||
if b then
|
if b then
|
||||||
if newBuff.maxLayer == 0 then
|
if newBuff.maxLayer == 0 then
|
||||||
newBuff.layer = self.layer + 1
|
newBuff.layer = newBuff.layer + self.layer
|
||||||
else
|
else
|
||||||
newBuff.layer = math.min(self.layer + 1, newBuff.maxLayer)
|
newBuff.layer = math.min(newBuff.layer + self.layer, newBuff.maxLayer)
|
||||||
end
|
end
|
||||||
if newBuff.coverFunc then
|
if newBuff.coverFunc then
|
||||||
newBuff.coverFunc(self)
|
newBuff.coverFunc(self)
|
||||||
|
|
|
@ -57,7 +57,7 @@ function PropertyChange:OnCover(newBuff)
|
||||||
local b = self.propertyName == newBuff.propertyName and self.changeType == newBuff.changeType
|
local b = self.propertyName == newBuff.propertyName and self.changeType == newBuff.changeType
|
||||||
if b then
|
if b then
|
||||||
if newBuff.maxLayer == 0 then
|
if newBuff.maxLayer == 0 then
|
||||||
newBuff.layer = self.layer + 1
|
newBuff.layer = newBuff.layer + self.layer
|
||||||
newBuff.Value = newBuff.Value + self.Value
|
newBuff.Value = newBuff.Value + self.Value
|
||||||
else
|
else
|
||||||
if self.layer < newBuff.maxLayer then
|
if self.layer < newBuff.maxLayer then
|
||||||
|
@ -65,7 +65,7 @@ function PropertyChange:OnCover(newBuff)
|
||||||
else
|
else
|
||||||
newBuff.Value = self.Value
|
newBuff.Value = self.Value
|
||||||
end
|
end
|
||||||
newBuff.layer = math.min(self.layer + 1, newBuff.maxLayer)
|
newBuff.layer = math.min(newBuff.layer + self.layer, newBuff.maxLayer)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return b
|
return b
|
||||||
|
|
Loading…
Reference in New Issue