Commit b07d54c24068e6e0dc22c3919296efe936d3c1fd
Merge branch 'develop' of 120.26.43.151:wasteland/server into develop
Showing
3 changed files
with
54 additions
and
16 deletions
Show diff stats
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 | ... | ... |
-
mentioned in commit 52f8c5f05d0a531232a7dd7887becd2a77986aa1
-
mentioned in commit ba6d85edc65900830c7e168102d70671881b5808