lua fight
parent
7c537afd21
commit
2d3d1115a6
|
@ -237,12 +237,12 @@ local passivityList = {
|
|||
local pro = args[2]
|
||||
local f2 = args[3]
|
||||
|
||||
local OnRoleBeDamaged = function(treatingFunc)
|
||||
local OnBeHit = function(treatingFunc)
|
||||
BattleUtil.RandomAction(f1, function ()
|
||||
BattleUtil.CalTreat(role, role, floor(role:GetRoleData(propertyList[pro]) * f2))
|
||||
end)
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnRoleBeDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--受击后,[a]对攻击者造成的攻击*[c]的持续伤害,持续[d]秒。
|
||||
|
@ -253,7 +253,7 @@ local passivityList = {
|
|||
local f3 = args[3]
|
||||
|
||||
local triggerUid = {}
|
||||
local OnRoleBeDamaged = function(atkRole)
|
||||
local OnBeHit = function(atkRole)
|
||||
if atkRole.isTeam then
|
||||
return
|
||||
end
|
||||
|
@ -268,7 +268,7 @@ local passivityList = {
|
|||
end)
|
||||
end)
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnRoleBeDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--受击时[e],[a]的概率将[b]*[c]算作[d]计算
|
||||
|
@ -287,7 +287,7 @@ local passivityList = {
|
|||
end)
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamagedBefore, OnRoleBeDamagedBefore)
|
||||
role.Event:AddEvent(BattleEventName.OnRoleBeDamagedBefore, OnRoleBeDamagedBefore)
|
||||
end,
|
||||
|
||||
--受击时,有[a]的概率抵消[b]*[c]的攻击。
|
||||
|
@ -313,7 +313,7 @@ local passivityList = {
|
|||
local dt = args[3]
|
||||
|
||||
local lastTrigger = 0
|
||||
local OnRoleBeDamaged = function(atkRole)
|
||||
local OnBeHit = function(atkRole)
|
||||
if atkRole.isTeam then
|
||||
return
|
||||
end
|
||||
|
@ -329,7 +329,7 @@ local passivityList = {
|
|||
end)
|
||||
lastTrigger = 0
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnRoleBeDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--受击后,有[a]的概率对随机1人造成[b]*[c]的真实伤害。
|
||||
|
@ -340,7 +340,7 @@ local passivityList = {
|
|||
local f2 = args[3]
|
||||
|
||||
local lastTrigger = 0
|
||||
local OnRoleBeDamaged = function(atkRole)
|
||||
local OnBeHit = function(atkRole)
|
||||
if atkRole.isTeam then
|
||||
return
|
||||
end
|
||||
|
@ -356,7 +356,7 @@ local passivityList = {
|
|||
end)
|
||||
lastTrigger = 0
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnRoleBeDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--受击后[f],[a]的概率将[b]*[c]算作[d]计算,持续[e]秒。
|
||||
|
@ -369,14 +369,14 @@ local passivityList = {
|
|||
local f3 = args[5]
|
||||
local dt = args[6]
|
||||
|
||||
local OnRoleBeDamaged = function(atkRole, damage, bCrit, finalDmg, damageType)
|
||||
local OnBeHit = function(atkRole, damage, bCrit, finalDmg, damageType)
|
||||
if damageType == dt then
|
||||
BattleUtil.RandomAction(f1, function ()
|
||||
role:AddPropertyTransfer(propertyList[pro1], f2, propertyList[pro2], f3)
|
||||
end)
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnRoleBeDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--免疫[a]属性伤害。
|
||||
|
@ -524,7 +524,7 @@ local passivityList = {
|
|||
local f3 = args[3]
|
||||
|
||||
local triggerCount = 0
|
||||
local OnDamaged = function(atkRole)
|
||||
local OnBeHit = function(atkRole)
|
||||
if BattleUtil.GetHPPencent(role) < f1 then
|
||||
if triggerCount < 1 then
|
||||
BattleUtil.RandomAction(f2, function ()
|
||||
|
@ -534,7 +534,7 @@ local passivityList = {
|
|||
end
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--死亡时,立即回复己方全体[a]*[b]的血量。
|
||||
|
@ -812,12 +812,12 @@ local passivityList = {
|
|||
local i1 = args[1]
|
||||
local f1 = args[2]
|
||||
|
||||
local OnDamaged = function(atkRole)
|
||||
local OnBeHit = function(atkRole)
|
||||
if atkRole.professionId == i1 then
|
||||
BattleUtil.CalTreat(role, role, f1)
|
||||
end
|
||||
end
|
||||
role.Event:AddEvent(BattleEventName.RoleBeDamaged, OnDamaged)
|
||||
role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit)
|
||||
end,
|
||||
|
||||
--造成伤害时,将伤害的[a]%转化为自身生命
|
||||
|
|
|
@ -27,7 +27,7 @@ end
|
|||
--间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd
|
||||
function DOT:OnTrigger()
|
||||
--log("DOT:OnTrigger")
|
||||
BattleUtil.CalDamage(self.caster, self.target, self.damagePro, self.damageFactor)
|
||||
BattleUtil.CalDamage(self.caster, self.target, self.damagePro, self.damageFactor,0, true)
|
||||
return true
|
||||
end
|
||||
|
||||
|
|
|
@ -17,15 +17,17 @@ BattleEventName = {
|
|||
|
||||
RoleBeDamaged = indexAdd(),
|
||||
RoleDamage = indexAdd(),
|
||||
RoleDamageBefore = indexAdd(),
|
||||
RoleBeDamagedBefore = indexAdd(),
|
||||
RoleDamageBefore = indexAdd(),
|
||||
RoleBeTreated = indexAdd(),
|
||||
RoleTreat = indexAdd(),
|
||||
RoleBeHealed = indexAdd(),
|
||||
RoleBeCrit = indexAdd(),
|
||||
RoleCrit = indexAdd(),
|
||||
RoleDodge = indexAdd(),
|
||||
RoleBeHit = indexAdd(),
|
||||
RoleHit = indexAdd(), --造成伤害,dot情况排除
|
||||
RoleBeDodge = indexAdd(),
|
||||
RoleDodge = indexAdd(),
|
||||
RoleDead = indexAdd(),
|
||||
RoleRevive = indexAdd(),
|
||||
RolePropertyChanged = indexAdd(),
|
||||
|
|
|
@ -59,9 +59,10 @@ function BattleUtil.CalShield(atkRole, defRole, damage)
|
|||
return damage
|
||||
end
|
||||
|
||||
function BattleUtil.ApplyDamage(atkRole, defRole, damage, bCrit, damageType)
|
||||
function BattleUtil.ApplyDamage(atkRole, defRole, damage, bCrit, damageType, isDot)
|
||||
bCrit = bCrit or false
|
||||
damageType = damageType or 0
|
||||
isDot = isDot or false
|
||||
|
||||
if atkRole.isTeam then
|
||||
--max(技能基础伤害*(1+已方异妖伤害加成-目标异妖伤害减免),30%×技能基础伤害)
|
||||
|
@ -93,14 +94,16 @@ function BattleUtil.ApplyDamage(atkRole, defRole, damage, bCrit, damageType)
|
|||
end
|
||||
end
|
||||
|
||||
if atkRole then
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleDamage, defRole, damage, bCrit, finalDmg, damageType)
|
||||
end
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleDamage, defRole, damage, bCrit, finalDmg, damageType)
|
||||
defRole.Event:DispatchEvent(BattleEventName.RoleBeDamaged, atkRole, damage, bCrit, finalDmg, damageType)
|
||||
if bCrit then
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleCrit, defRole)
|
||||
defRole.Event:DispatchEvent(BattleEventName.RoleBeCrit, atkRole)
|
||||
end
|
||||
if not isDot then
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleHit, defRole)
|
||||
defRole.Event:DispatchEvent(BattleEventName.RoleBeHit, atkRole)
|
||||
end
|
||||
end
|
||||
return finalDmg
|
||||
else
|
||||
|
@ -109,8 +112,9 @@ function BattleUtil.ApplyDamage(atkRole, defRole, damage, bCrit, damageType)
|
|||
end
|
||||
|
||||
--执行完整的命中,伤害,暴击计算,返回命中,暴击
|
||||
function BattleUtil.CalDamage(atkRole, defRole, damageType, baseFactor, ignoreDef)
|
||||
if atkRole.isTeam and not defRole.isDead then --如果计算真实伤害,则damageType为伤害值
|
||||
--atkRole攻击者 defRole受击者 damageType伤害类型 baseFactor伤害系数 ignoreDef无视防御参数 isDot是否是dot
|
||||
function BattleUtil.CalDamage(atkRole, defRole, damageType, baseFactor, ignoreDef, isDot)
|
||||
if atkRole.isTeam and not defRole.isDead then --如果是队伍技能,计算真实伤害,则damageType为伤害值
|
||||
return BattleUtil.ApplyDamage(atkRole, defRole, damageType), false
|
||||
end
|
||||
baseFactor = baseFactor or 1
|
||||
|
@ -174,7 +178,7 @@ function BattleUtil.CalDamage(atkRole, defRole, damageType, baseFactor, ignoreDe
|
|||
baseDamage = BattleUtil.CalShield(atkRole, defRole, baseDamage)
|
||||
local finalDmg = 0 --计算实际造成的扣血
|
||||
if not defRole.isDead then
|
||||
finalDmg = BattleUtil.ApplyDamage(atkRole, defRole, baseDamage, bCrit, damageType)
|
||||
finalDmg = BattleUtil.ApplyDamage(atkRole, defRole, baseDamage, bCrit, damageType, isDot)
|
||||
end
|
||||
return finalDmg, bCrit
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue