战斗逻辑
parent
f1cbb7b63e
commit
2f9fb3c349
|
|
@ -1,5 +1,4 @@
|
||||||
Buff = {}
|
Buff = {}
|
||||||
|
|
||||||
local floor = math.floor
|
local floor = math.floor
|
||||||
local buffPoolList = {}
|
local buffPoolList = {}
|
||||||
|
|
||||||
|
|
@ -50,7 +49,7 @@ BuffManager = {}
|
||||||
BuffManager.__index = BuffManager
|
BuffManager.__index = BuffManager
|
||||||
|
|
||||||
function BuffManager.New()
|
function BuffManager.New()
|
||||||
local instance = {owner=0, buffQueue = BattleQueue.New(), buffList = BattleDictionary.New()}
|
local instance = {owner=0, buffQueue = BattleQueue.New(), buffDic = BattleDictionary.New()}
|
||||||
setmetatable(instance, BuffManager)
|
setmetatable(instance, BuffManager)
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
|
|
@ -59,15 +58,15 @@ function BuffManager:Init()
|
||||||
while self.buffQueue.size > 0 do
|
while self.buffQueue.size > 0 do
|
||||||
putBuff(self.buffQueue:Dequeue())
|
putBuff(self.buffQueue:Dequeue())
|
||||||
end
|
end
|
||||||
for i = 1, self.buffList.size do
|
for i = 1, self.buffDic.size do
|
||||||
local list = self.buffList.vList[i]
|
local list = self.buffDic.vList[i]
|
||||||
for j=1, list.size do
|
for j=1, list.size do
|
||||||
putBuff(list.buffer[j])
|
putBuff(list.buffer[j])
|
||||||
end
|
end
|
||||||
list:Clear()
|
list:Clear()
|
||||||
buffListPool:Put(list)
|
buffListPool:Put(list)
|
||||||
end
|
end
|
||||||
self.buffList:Clear()
|
self.buffDic:Clear()
|
||||||
end
|
end
|
||||||
|
|
||||||
function BuffManager:AddBuff(target, buff)
|
function BuffManager:AddBuff(target, buff)
|
||||||
|
|
@ -89,8 +88,8 @@ function BuffManager:AddBuff(target, buff)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BuffManager:QueryBuff(target, checkFunc)
|
function BuffManager:QueryBuff(target, checkFunc)
|
||||||
for i=1, self.buffList.size do
|
for i=1, self.buffDic.size do
|
||||||
local list = self.buffList.vList[i]
|
local list = self.buffDic.vList[i]
|
||||||
for j=1, list.size do
|
for j=1, list.size do
|
||||||
local buff = list.buffer[j]
|
local buff = list.buffer[j]
|
||||||
if buff.target == target then
|
if buff.target == target then
|
||||||
|
|
@ -103,8 +102,8 @@ function BuffManager:QueryBuff(target, checkFunc)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BuffManager:HasBuff(target, type, checkFunc)
|
function BuffManager:HasBuff(target, type, checkFunc)
|
||||||
if self.buffList.kvList[type] then
|
if self.buffDic.kvList[type] then
|
||||||
local buffList = self.buffList.kvList[type]
|
local buffList = self.buffDic.kvList[type]
|
||||||
for i=1, buffList.size do
|
for i=1, buffList.size do
|
||||||
local v = buffList.buffer[i]
|
local v = buffList.buffer[i]
|
||||||
if v.target == target then
|
if v.target == target then
|
||||||
|
|
@ -119,8 +118,8 @@ end
|
||||||
|
|
||||||
--func为nil时无条件清除,否则判定clear值,执行func
|
--func为nil时无条件清除,否则判定clear值,执行func
|
||||||
function BuffManager:ClearBuff(target, func)
|
function BuffManager:ClearBuff(target, func)
|
||||||
for i = 1, self.buffList.size do
|
for i = 1, self.buffDic.size do
|
||||||
local list = self.buffList.vList[i]
|
local list = self.buffDic.vList[i]
|
||||||
if list.size > 0 then
|
if list.size > 0 then
|
||||||
local idx = 1
|
local idx = 1
|
||||||
while idx <= list.size do
|
while idx <= list.size do
|
||||||
|
|
@ -143,8 +142,8 @@ function BuffManager:PutBuff(buff)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BuffManager:GetBuffCount(type)
|
function BuffManager:GetBuffCount(type)
|
||||||
if self.buffList[type] then
|
if self.buffDic[type] then
|
||||||
return self.buffList[type].size
|
return self.buffDic[type].size
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
@ -153,11 +152,11 @@ function BuffManager:Update()
|
||||||
while self.buffQueue.size > 0 do
|
while self.buffQueue.size > 0 do
|
||||||
local buff = self.buffQueue:Dequeue()
|
local buff = self.buffQueue:Dequeue()
|
||||||
local buffList
|
local buffList
|
||||||
if not self.buffList.kvList[buff.type] then
|
if not self.buffDic.kvList[buff.type] then
|
||||||
buffList = buffListPool:Get()
|
buffList = buffListPool:Get()
|
||||||
self.buffList:Add(buff.type, buffList)
|
self.buffDic:Add(buff.type, buffList)
|
||||||
else
|
else
|
||||||
buffList = self.buffList.kvList[buff.type]
|
buffList = self.buffDic.kvList[buff.type]
|
||||||
end
|
end
|
||||||
if buff.cover and buffList.size > 0 then
|
if buff.cover and buffList.size > 0 then
|
||||||
local isCovered = false
|
local isCovered = false
|
||||||
|
|
@ -186,8 +185,8 @@ function BuffManager:Update()
|
||||||
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i=1, self.buffList.size do
|
for i=1, self.buffDic.size do
|
||||||
local buffList = self.buffList.vList[i]
|
local buffList = self.buffDic.vList[i]
|
||||||
if buffList.size > 0 then
|
if buffList.size > 0 then
|
||||||
local index = 1
|
local index = 1
|
||||||
while index <= buffList.size do
|
while index <= buffList.size do
|
||||||
|
|
|
||||||
|
|
@ -1505,11 +1505,17 @@ local effectList = {
|
||||||
local f1 = args[1]
|
local f1 = args[1]
|
||||||
local f2 = args[2]
|
local f2 = args[2]
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
|
local lastTrigger = 0
|
||||||
local OnPassiveDamaging = function(damagingFunc, atkRole, damage)
|
local OnPassiveDamaging = function(damagingFunc, atkRole, damage)
|
||||||
|
lastTrigger = lastTrigger + 1
|
||||||
|
if lastTrigger > 1 then --加入限定避免循环触发
|
||||||
|
return
|
||||||
|
end
|
||||||
if not target.isDead then
|
if not target.isDead then
|
||||||
damagingFunc(floor(damage * f1))
|
damagingFunc(floor(damage * f1))
|
||||||
BattleUtil.ApplyDamage(atkRole, target, BattleUtil.CalShield(atkRole, target, floor(damage * f1)))
|
BattleUtil.ApplyDamage(atkRole, target, BattleUtil.CalShield(atkRole, target, floor(damage * f1)))
|
||||||
end
|
end
|
||||||
|
lastTrigger = 0
|
||||||
end
|
end
|
||||||
local list = BattleLogic.GetNeighbor(target, 1)
|
local list = BattleLogic.GetNeighbor(target, 1)
|
||||||
for i=1, #list do
|
for i=1, #list do
|
||||||
|
|
|
||||||
|
|
@ -1188,7 +1188,7 @@ local passivityList = {
|
||||||
if BattleLogic.BuffMgr:HasBuff(role, BuffName.Shield, function (buff) return true end) then
|
if BattleLogic.BuffMgr:HasBuff(role, BuffName.Shield, function (buff) return true end) then
|
||||||
BattleUtil.RandomAction(f1, function ()
|
BattleUtil.RandomAction(f1, function ()
|
||||||
local val = floor(BattleUtil.FP_Mul(role:GetRoleData(propertyList[pro1]), f2))
|
local val = floor(BattleUtil.FP_Mul(role:GetRoleData(propertyList[pro1]), f2))
|
||||||
BattleUtil.CalTreat(skill.owner, skill.owner, val)
|
BattleUtil.CalTreat(role, skill.owner, val)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -1212,7 +1212,7 @@ local passivityList = {
|
||||||
local f2 = args[3]
|
local f2 = args[3]
|
||||||
|
|
||||||
BattleLogic.Event:AddEvent(BattleEventName.BattleRoleDead, function (defRole, atkRole)
|
BattleLogic.Event:AddEvent(BattleEventName.BattleRoleDead, function (defRole, atkRole)
|
||||||
if atkRole.isTeam then
|
if role.isDead or atkRole.isTeam then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if defRole.camp == role.camp then
|
if defRole.camp == role.camp then
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ local curFrame
|
||||||
local playerSkillUsable
|
local playerSkillUsable
|
||||||
local enemySkillUsable
|
local enemySkillUsable
|
||||||
|
|
||||||
BattleLogic.Type = 0 --1 故事副本 2 地图探索 3 竞技场 4 秘境boss 5 解锁秘境 6 公会战 7 血战 8 兽潮
|
BattleLogic.Type = 0 --1 故事副本 2 地图探索 3 竞技场 4 秘境boss 5 解锁秘境 6 公会战 7 血战 8 兽潮 9巅峰战
|
||||||
BattleLogic.IsEnd = false
|
BattleLogic.IsEnd = false
|
||||||
BattleLogic.Result = -1
|
BattleLogic.Result = -1
|
||||||
BattleLogic.Event = BattleEvent.New()
|
BattleLogic.Event = BattleEvent.New()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
Aura = Buff:New()
|
Aura = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
Brand = Buff:New()
|
Brand = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
Control = Buff:New()
|
Control = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
DOT = Buff:New()
|
DOT = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
HOT = Buff:New()
|
HOT = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
Immune = Buff:New()
|
Immune = Buff:New()
|
||||||
|
|
||||||
local immune1 = function(buff)
|
local immune1 = function(buff)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
PropertyChange = Buff:New()
|
PropertyChange = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
require("Modules/Battle/Logic/Base/Buff")
|
|
||||||
Shield = Buff:New()
|
Shield = Buff:New()
|
||||||
|
|
||||||
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
||||||
|
|
|
||||||
|
|
@ -206,10 +206,12 @@ end
|
||||||
|
|
||||||
function RoleLogic:AddBuff(buff)
|
function RoleLogic:AddBuff(buff)
|
||||||
if self.isDead then
|
if self.isDead then
|
||||||
|
BattleLogic.BuffMgr:PutBuff(buff)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
for i=1, self.buffFilter.size do
|
for i=1, self.buffFilter.size do
|
||||||
if self.buffFilter.buffer[i](buff) then
|
if self.buffFilter.buffer[i](buff) then
|
||||||
|
BattleLogic.BuffMgr:PutBuff(buff)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue