miduo_client/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Monster/Monster.lua

79 lines
1.9 KiB
Lua

require("Modules.Battle.Logic.Monster.MonsterSkill.MSkillManager")
Monster = {}
function Monster:New()
local o = {
data=RoleData.New(),
buffFilter=BattleList.New(),
Event = BattleEvent:New()
}
setmetatable(o, self)
self.__index = self
return o
end
-- 初始化
function Monster:Init(data)
self.type = BattleUnitType.Monster
self.camp = data.camp
self.position = data.position
self.star = data.star
self.uid= data.id
self.roleData = data
self.data:Init(self, data.property)
self.buffFilter:Clear() --buff屏蔽列表
self.Event:ClearEvent()
self.exileTargets={}--已经被放逐过的目标
self.skillGroup = MSkillManager.CreateMSkillGroup(self, data.skill)
end
function Monster:AddBuff(buff)
-- buff的miss率
local missF = 0
-- 检测被动对miss概率的影响
local cl = {}
local function _CallBack(v, ct)
if v then
table.insert(cl, {v, ct})
end
end
BattleLogic.Event:DispatchEvent(BattleEventName.RoleAddBuffMiss, _CallBack, self, buff)
missF = BattleUtil.CountChangeList(missF, cl)
-- 如果概率为0 或者没有miss
if missF == 0 or not BattleUtil.RandomAction(missF, function() BattleLogic.BuffMgr:PutBuff(buff) end) then
for i=1, self.buffFilter.size do
if self.buffFilter.buffer[i](buff) then
BattleLogic.BuffMgr:PutBuff(buff)
return
end
end
BattleLogic.BuffMgr:AddBuff(self, buff)
end
end
function Monster:GetRoleData(property)
local tarPro = self.data:GetData(property)
return tarPro
end
function Monster:GetCamp()
return self.camp
end
function Monster:GetPosition()
return self.position
end
function Monster:GetStar()
return self.star
end
-- 数据回收
function Monster:Dispose()
end
return Monster