Commit b07d54c24068e6e0dc22c3919296efe936d3c1fd

Authored by liuzujun
2 parents e0ad10e9 9c8e9482

Merge branch 'develop' of 120.26.43.151:wasteland/server into develop

src/adv/AdvBuff.lua
... ... @@ -434,6 +434,9 @@ function Buff:initNew(release, data)
434 434 if self.buffData.effectTime > 0 then
435 435 self.count = self.buffData.effectTime
436 436 end
  437 + if self.buffData.mapLock == 1 then
  438 + self.mapId = self.owner.battle.adv:getCurMap().mapId
  439 + end
437 440 end
438 441  
439 442 function Buff:createAfter()
... ... @@ -456,6 +459,9 @@ function Buff:initByDB(data)
456 459 if data.count then
457 460 self.count = data.count
458 461 end
  462 + if data.mapId then
  463 + self.mapId = data.mapId
  464 + end
459 465 self.layer = data.layer or 1
460 466 if self._initDB then
461 467 self:_initDB(data)
... ... @@ -464,7 +470,7 @@ end
464 470  
465 471  
466 472 function Buff:afterRound()
467   - if self.isDel or self.owner.isDead then return end
  473 + if self.owner.isDead or self:isHide() then return end
468 474  
469 475 -- keepTerm 检查
470 476 if not self:checkKeep() then
... ... @@ -533,7 +539,7 @@ function Buff:checkKeep()
533 539 end
534 540 checkFunc[5] = function(_, buffId)
535 541 local buff = self.owner:getBuffById(buffId)
536   - if buff and not buff.isDel then
  542 + if buff then
537 543 return true
538 544 end
539 545 return false
... ... @@ -574,6 +580,18 @@ function Buff:effect()
574 580 return self:_effectValue()
575 581 end
576 582 end
  583 +
  584 +-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
  585 +function Buff:isHide()
  586 + if self.isDel then
  587 + return false
  588 + end
  589 + if self.buffData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
  590 + return false
  591 + end
  592 + return true
  593 +end
  594 +
577 595 --删除buff 时调用
578 596 function Buff:endBuff()
579 597 if self._endBuff then
... ... @@ -678,6 +696,9 @@ function Buff:getDB()
678 696 if self.count ~= -1 then
679 697 db.count = self.count
680 698 end
  699 + if self.mapId then
  700 + db.mapId = self.mapId
  701 + end
681 702 db.layer = self.layer
682 703 if self.buffData.keepTerm:toArray(true, "=")[1] == 1 then
683 704 db.releId = self.releaseId
... ...
src/adv/AdvPassive.lua
... ... @@ -265,6 +265,9 @@ function Passive:ctor(owner, data)
265 265 self.round = data.round or 0 --触发剩余回合数
266 266 self.count = data.count or self.passiveData.count --触发剩余次数
267 267 self.delay = data.delay or self.passiveData.delayRound --触发延迟回合数
  268 + if self.passiveData.mapLock == 1 and not self.mapId then
  269 + self.mapId = self.owner.battle.adv:getCurMap().mapId
  270 + end
268 271  
269 272 self.effects = self.passiveData.effect:toTableArray(true)
270 273 self.filters = {}
... ... @@ -331,7 +334,7 @@ function Passive:effect(triggerPms)
331 334 end
332 335  
333 336 function Passive:afterRound()
334   - if self.isDel or self.owner.isDead or self.owner.lock then return end
  337 + if self.isDel or self.owner.isDead or self.owner.lock or self:isHide() then return end
335 338 if self.round > 0 then --回合触发的
336 339 self.round = self.round - 1
337 340 end
... ... @@ -349,9 +352,20 @@ function Passive:afterLayer()
349 352 end
350 353 end
351 354  
  355 +-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
  356 +function Passive:isHide()
  357 + if self.isDel then
  358 + return false
  359 + end
  360 + if self.passiveData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
  361 + return false
  362 + end
  363 + return true
  364 +end
  365 +
352 366 -- 可以触发
353 367 function Passive:canTrigger( )
354   - return self.count > 0 and self.delay <= 0
  368 + return self.count > 0 and self.delay <= 0 and not self:isHide()
355 369 end
356 370  
357 371 function Passive:trigger(condType, params) --触发检查
... ... @@ -393,6 +407,9 @@ function Passive:getDB()
393 407 db.round = self.round
394 408 db.count = self.count
395 409 db.delay = self.delay
  410 + if self.mapId then
  411 + db.mapId = self.mapId
  412 + end
396 413 return db
397 414 end
398 415  
... ...
src/adv/AdvPlayer.lua
... ... @@ -124,7 +124,7 @@ end
124 124 function BaseObject:getDisablePassiveCount()
125 125 local count
126 126 for _, buff in ipairs(self.buffs) do
127   - if not buff.isDel and buff:getType() == Buff.DISABLE_BUFF then
  127 + if not buff:isHide() and buff:getType() == Buff.DISABLE_BUFF then
128 128 if buff:effect() == 0 then
129 129 return 0
130 130 end
... ... @@ -138,7 +138,7 @@ function BaseObject:addBuff(buffId, releaser)
138 138 local buffData = csvdb["adv_map_buffCsv"][buffId]
139 139 if not buffData then return end
140 140 for _, buff in ipairs(self.buffs) do
141   - if not buff.isDel and (buff:getType() == Buff.CLEAR_BUFF or buff:getType() == Buff.IMMNUE_BUFF) then
  141 + if not buff:isHide() and (buff:getType() == Buff.CLEAR_BUFF or buff:getType() == Buff.IMMNUE_BUFF) then
142 142 if buff:canEffect(buffId) then
143 143 buff:effect()
144 144 return
... ... @@ -166,7 +166,7 @@ end
166 166  
167 167 function BaseObject:getBuffById(bId)
168 168 for idx, buff in ipairs(self.buffs) do
169   - if buff.id == bId then
  169 + if buff.id == bId and not buff:isHide() then
170 170 return buff
171 171 end
172 172 end
... ... @@ -196,7 +196,7 @@ end
196 196  
197 197 function BaseObject:hadBuff(bType)
198 198 for _, buff in ipairs(self.buffs) do
199   - if not buff.isDel and buff:getType() == bType then
  199 + if not buff:isHide() and buff:getType() == bType then
200 200 return buff
201 201 end
202 202 end
... ... @@ -204,7 +204,7 @@ end
204 204  
205 205 function BaseObject:hadBuffById(bId)
206 206 for _, buff in ipairs(self.buffs) do
207   - if not buff.isDel and buff.id == bId then
  207 + if not buff:isHide() and buff.id == bId then
208 208 return buff
209 209 end
210 210 end
... ... @@ -218,7 +218,7 @@ end
218 218 function BaseObject:getCommonBuffEffect(bType, otherCond)
219 219 local effect, count = {[0] = 0, [1] = 0}, 0
220 220 for _, buff in ipairs(self.buffs) do
221   - if not buff.isDel and buff:getType() == bType then
  221 + if not buff:isHide() and buff:getType() == bType then
222 222 local cType, value, cond = buff:effect()
223 223 if cType and (not otherCond or otherCond == cond) then
224 224 effect[cType] = effect[cType] + value
... ... @@ -233,7 +233,7 @@ end
233 233 function BaseObject:getBackHurtBuff()
234 234 local effect = {[0] = 0, [1] = 0}
235 235 for _, buff in ipairs(self.buffs) do
236   - if not buff.isDel and buff:getType() == Buff.BACK_HURT then
  236 + if not buff:isHide() and buff:getType() == Buff.BACK_HURT then
237 237 local cType, value = buff:effect() -- aType 0 全部 1 普通攻击
238 238 if cType then
239 239 effect[cType] = effect[cType] + value
... ... @@ -268,7 +268,7 @@ function BaseObject:getBuffEffectChange(classify)
268 268 end
269 269 local effect = 0
270 270 for _, buff in ipairs(self.buffs) do
271   - if not buff.isDel and buff:getType() == Buff.Buff_EFFECT_CHANGE then
  271 + if not buff:isHide() and buff:getType() == Buff.Buff_EFFECT_CHANGE then
272 272 local cType, value = buff:effect()
273 273 if cType and had[cType] then
274 274 effect = effect + value
... ... @@ -286,7 +286,7 @@ function BaseObject:getAttrBuffChange(attr)
286 286 }
287 287 local effect, count = {[0] = 0, [1] = 0}, 0
288 288 for _, buff in ipairs(self.buffs) do
289   - if not buff.isDel and AttrBuff[buff:getType()] then
  289 + if not buff:isHide() and AttrBuff[buff:getType()] then
290 290 local cType, value, attrName = buff:effect()
291 291 if cType and attr == attrName then
292 292 effect[cType] = effect[cType] + value
... ... @@ -310,7 +310,7 @@ end
310 310 function BaseObject:reSetHpMax()
311 311 self.hpMax = self._hpMax
312 312 for _, buff in ipairs(self.buffs) do
313   - if not buff.isDel and buff:getType() == Buff.HP_MAX_CHANGE then
  313 + if not buff:isHide() and buff:getType() == Buff.HP_MAX_CHANGE then
314 314 local cv = buff:effect()
315 315 if cv then
316 316 self.hpMax = self.hpMax + cv
... ... @@ -665,7 +665,7 @@ end
665 665 --战斗结束了扣战斗buff次数
666 666 function Player:effectBattleBuff()
667 667 for _, buff in ipairs(self.buffs) do
668   - if not buff.isDel and (buff:getType() == Buff.BATTLE_BUFF or buff:getType() == Buff.BATTLE_PASSIVE) then
  668 + if not buff:isHide() and (buff:getType() == Buff.BATTLE_BUFF or buff:getType() == Buff.BATTLE_PASSIVE) then
669 669 buff:effect()
670 670 end
671 671 end
... ... @@ -699,7 +699,7 @@ end
699 699 function Player:attrChangeCondBuffCheck(etype, cond)
700 700 local effect = {}
701 701 for _, buff in ipairs(self.buffs) do
702   - if not buff.isDel and (buff:getType() == Buff.ATTR_CHANGE_COND) then
  702 + if not buff:isHide() and (buff:getType() == Buff.ATTR_CHANGE_COND) then
703 703 local _et, _attr, _co = buff:getEffectBy()
704 704 if etype == _et and (not _co or _co == cond) then
705 705 effect[_attr] = 1
... ...