79 lines
1.9 KiB
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 |