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.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