Commit 1e6f6a8a474d96325174abc360a30c5c9cfb4625

Authored by zhouhaihai
1 parent 1229c24d

免疫 清除buff 增加新效果

Showing 2 changed files with 29 additions and 9 deletions   Show diff stats
src/adv/AdvBuff.lua
... ... @@ -32,6 +32,7 @@ Buff.ITEM_GET_UP = 29 -- 获得道具数量增加
32 32 Buff.Buff_EFFECT_CHANGE = 30 -- 改变 buff 效果
33 33 Buff.Buff_NO_PASSIVE_MONSTER = 31 -- 地图被动刷新不出来怪物
34 34  
  35 +
35 36 --角色一些属性的变化
36 37 local function commonAttr(_Buff, attrName)
37 38 _Buff._init = function(self, data) --初始化变化值
... ... @@ -238,11 +239,21 @@ local BuffFactory = {
238 239 end,
239 240  
240 241 [Buff.IMMNUE_BUFF] = function(_Buff)
241   - _Buff._canEffect = function(self, buffId, buffGroup)
242   - local cType, aim = self.buffData.effectValue1, self.buffData.effectValue2
243   - if buffData.dispel == 0 and (not cType or (cType == 0 and buffId == aim) or (cType == 1 and buffData.group == aim)) then
244   - return true
  242 + _Buff._canEffect = function(self, buffId)
  243 + local buffData = csvdb["adv_map_buffCsv"][buffId]
  244 + local cType, aim = self.buffData.effectValue1
  245 + if buffData.dispel ~= 0 then return end
  246 +
  247 + local dispel = false
  248 + if self.buffData.effectValue1 == 0 then
  249 + dispel = buffId == self.buffData.effectValue2
  250 + elseif self.buffData.effectValue1 == 1 then
  251 + dispel = buffData.group == self.buffData.effectValue2
  252 + elseif self.buffData.effectValue1 == 2 then
  253 + dispel = buffData.classify:sismember(self.buffData.effectValue2, " ")
245 254 end
  255 +
  256 + return dispel
246 257 end
247 258 end,
248 259  
... ... @@ -259,10 +270,19 @@ local BuffFactory = {
259 270 end
260 271 _Buff._canEffect = function(self, buffId)
261 272 local buffData = csvdb["adv_map_buffCsv"][buffId]
262   - local cType, aim = self.buffData.effectValue1, self.buffData.effectValue2
263   - if buffData.dispel == 0 and (not cType or (cType == 0 and buffId == aim) or (cType == 1 and buffData.group == aim)) then
264   - return true
  273 + local cType, aim = self.buffData.effectValue1
  274 + if buffData.dispel ~= 0 then return end
  275 +
  276 + local dispel = false
  277 + if self.buffData.effectValue1 == 0 then
  278 + dispel = buffId == self.buffData.effectValue2
  279 + elseif self.buffData.effectValue1 == 1 then
  280 + dispel = buffData.group == self.buffData.effectValue2
  281 + elseif self.buffData.effectValue1 == 2 then
  282 + dispel = buffData.classify:sismember(self.buffData.effectValue2, " ")
265 283 end
  284 +
  285 + return dispel
266 286 end
267 287 end,
268 288  
... ... @@ -346,7 +366,7 @@ local BuffFactory = {
346 366 _Buff._init = function(self)
347 367 -- 先给自己的buff 搞一下子
348 368 for _, buff in ipairs(self.owner.buffs) do
349   - if not buff.isDel and (buff.buffData.classify:find(" " .. self.buffData.effectValue1) or buff.buffData.classify:find(self.buffData.effectValue1 .. " ")) then
  369 + if not buff.isDel and buff.buffData.classify:sismember(self.buffData.effectValue1, " ") then
350 370 buff:effectChange()
351 371 end
352 372 end
... ...
src/adv/AdvPassive.lua
... ... @@ -146,7 +146,7 @@ PassiveCondFactory[Passive.SELF_HURT] = function(_Passive)
146 146 _Passive._trigger = function(self, params)
147 147 local buffId = params.buffId
148 148 local data = csvdb["adv_map_buffCsv"][buffId]
149   - if data.classify:find(" " .. self.passiveData.value) or data.classify:find(self.passiveData.value .. " ") then
  149 + if data.classify:sismember(self.passiveData.value, " ") then
150 150 return true
151 151 end
152 152 end
... ...