Commit a84ce8f9d3fcdfa4296deba8e8a9c296bdb55f22

Authored by zhouhaihai
2 parents 09edeae6 e0c0365a

Merge branch 'develop' into qa

* develop:
  反的判断
  返利邮件拼接充值档位
  bug
  buff  被动 限定地图
src/adv/AdvBuff.lua
@@ -434,6 +434,9 @@ function Buff:initNew(release, data) @@ -434,6 +434,9 @@ function Buff:initNew(release, data)
434 if self.buffData.effectTime > 0 then 434 if self.buffData.effectTime > 0 then
435 self.count = self.buffData.effectTime 435 self.count = self.buffData.effectTime
436 end 436 end
  437 + if self.buffData.mapLock == 1 then
  438 + self.mapId = self.owner.battle.adv:getCurMap().mapId
  439 + end
437 end 440 end
438 441
439 function Buff:createAfter() 442 function Buff:createAfter()
@@ -456,6 +459,9 @@ function Buff:initByDB(data) @@ -456,6 +459,9 @@ function Buff:initByDB(data)
456 if data.count then 459 if data.count then
457 self.count = data.count 460 self.count = data.count
458 end 461 end
  462 + if data.mapId then
  463 + self.mapId = data.mapId
  464 + end
459 self.layer = data.layer or 1 465 self.layer = data.layer or 1
460 if self._initDB then 466 if self._initDB then
461 self:_initDB(data) 467 self:_initDB(data)
@@ -464,7 +470,7 @@ end @@ -464,7 +470,7 @@ end
464 470
465 471
466 function Buff:afterRound() 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 -- keepTerm 检查 475 -- keepTerm 检查
470 if not self:checkKeep() then 476 if not self:checkKeep() then
@@ -533,7 +539,7 @@ function Buff:checkKeep() @@ -533,7 +539,7 @@ function Buff:checkKeep()
533 end 539 end
534 checkFunc[5] = function(_, buffId) 540 checkFunc[5] = function(_, buffId)
535 local buff = self.owner:getBuffById(buffId) 541 local buff = self.owner:getBuffById(buffId)
536 - if buff and not buff.isDel then 542 + if buff then
537 return true 543 return true
538 end 544 end
539 return false 545 return false
@@ -574,6 +580,18 @@ function Buff:effect() @@ -574,6 +580,18 @@ function Buff:effect()
574 return self:_effectValue() 580 return self:_effectValue()
575 end 581 end
576 end 582 end
  583 +
  584 +-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
  585 +function Buff:isHide()
  586 + if self.isDel then
  587 + return true
  588 + end
  589 + if self.buffData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
  590 + return true
  591 + end
  592 + return false
  593 +end
  594 +
577 --删除buff 时调用 595 --删除buff 时调用
578 function Buff:endBuff() 596 function Buff:endBuff()
579 if self._endBuff then 597 if self._endBuff then
@@ -678,6 +696,9 @@ function Buff:getDB() @@ -678,6 +696,9 @@ function Buff:getDB()
678 if self.count ~= -1 then 696 if self.count ~= -1 then
679 db.count = self.count 697 db.count = self.count
680 end 698 end
  699 + if self.mapId then
  700 + db.mapId = self.mapId
  701 + end
681 db.layer = self.layer 702 db.layer = self.layer
682 if self.buffData.keepTerm:toArray(true, "=")[1] == 1 then 703 if self.buffData.keepTerm:toArray(true, "=")[1] == 1 then
683 db.releId = self.releaseId 704 db.releId = self.releaseId
src/adv/AdvPassive.lua
@@ -265,6 +265,9 @@ function Passive:ctor(owner, data) @@ -265,6 +265,9 @@ function Passive:ctor(owner, data)
265 self.round = data.round or 0 --触发剩余回合数 265 self.round = data.round or 0 --触发剩余回合数
266 self.count = data.count or self.passiveData.count --触发剩余次数 266 self.count = data.count or self.passiveData.count --触发剩余次数
267 self.delay = data.delay or self.passiveData.delayRound --触发延迟回合数 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 self.effects = self.passiveData.effect:toTableArray(true) 272 self.effects = self.passiveData.effect:toTableArray(true)
270 self.filters = {} 273 self.filters = {}
@@ -331,7 +334,7 @@ function Passive:effect(triggerPms) @@ -331,7 +334,7 @@ function Passive:effect(triggerPms)
331 end 334 end
332 335
333 function Passive:afterRound() 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 if self.round > 0 then --回合触发的 338 if self.round > 0 then --回合触发的
336 self.round = self.round - 1 339 self.round = self.round - 1
337 end 340 end
@@ -349,9 +352,20 @@ function Passive:afterLayer() @@ -349,9 +352,20 @@ function Passive:afterLayer()
349 end 352 end
350 end 353 end
351 354
  355 +-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
  356 +function Passive:isHide()
  357 + if self.isDel then
  358 + return true
  359 + end
  360 + if self.passiveData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
  361 + return true
  362 + end
  363 + return false
  364 +end
  365 +
352 -- 可以触发 366 -- 可以触发
353 function Passive:canTrigger( ) 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 end 369 end
356 370
357 function Passive:trigger(condType, params) --触发检查 371 function Passive:trigger(condType, params) --触发检查
@@ -393,6 +407,9 @@ function Passive:getDB() @@ -393,6 +407,9 @@ function Passive:getDB()
393 db.round = self.round 407 db.round = self.round
394 db.count = self.count 408 db.count = self.count
395 db.delay = self.delay 409 db.delay = self.delay
  410 + if self.mapId then
  411 + db.mapId = self.mapId
  412 + end
396 return db 413 return db
397 end 414 end
398 415
src/adv/AdvPlayer.lua
@@ -124,7 +124,7 @@ end @@ -124,7 +124,7 @@ end
124 function BaseObject:getDisablePassiveCount() 124 function BaseObject:getDisablePassiveCount()
125 local count 125 local count
126 for _, buff in ipairs(self.buffs) do 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 if buff:effect() == 0 then 128 if buff:effect() == 0 then
129 return 0 129 return 0
130 end 130 end
@@ -138,7 +138,7 @@ function BaseObject:addBuff(buffId, releaser) @@ -138,7 +138,7 @@ function BaseObject:addBuff(buffId, releaser)
138 local buffData = csvdb["adv_map_buffCsv"][buffId] 138 local buffData = csvdb["adv_map_buffCsv"][buffId]
139 if not buffData then return end 139 if not buffData then return end
140 for _, buff in ipairs(self.buffs) do 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 if buff:canEffect(buffId) then 142 if buff:canEffect(buffId) then
143 buff:effect() 143 buff:effect()
144 return 144 return
@@ -166,7 +166,7 @@ end @@ -166,7 +166,7 @@ end
166 166
167 function BaseObject:getBuffById(bId) 167 function BaseObject:getBuffById(bId)
168 for idx, buff in ipairs(self.buffs) do 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 return buff 170 return buff
171 end 171 end
172 end 172 end
@@ -196,7 +196,7 @@ end @@ -196,7 +196,7 @@ end
196 196
197 function BaseObject:hadBuff(bType) 197 function BaseObject:hadBuff(bType)
198 for _, buff in ipairs(self.buffs) do 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 return buff 200 return buff
201 end 201 end
202 end 202 end
@@ -204,7 +204,7 @@ end @@ -204,7 +204,7 @@ end
204 204
205 function BaseObject:hadBuffById(bId) 205 function BaseObject:hadBuffById(bId)
206 for _, buff in ipairs(self.buffs) do 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 return buff 208 return buff
209 end 209 end
210 end 210 end
@@ -218,7 +218,7 @@ end @@ -218,7 +218,7 @@ end
218 function BaseObject:getCommonBuffEffect(bType, otherCond) 218 function BaseObject:getCommonBuffEffect(bType, otherCond)
219 local effect, count = {[0] = 0, [1] = 0}, 0 219 local effect, count = {[0] = 0, [1] = 0}, 0
220 for _, buff in ipairs(self.buffs) do 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 local cType, value, cond = buff:effect() 222 local cType, value, cond = buff:effect()
223 if cType and (not otherCond or otherCond == cond) then 223 if cType and (not otherCond or otherCond == cond) then
224 effect[cType] = effect[cType] + value 224 effect[cType] = effect[cType] + value
@@ -233,7 +233,7 @@ end @@ -233,7 +233,7 @@ end
233 function BaseObject:getBackHurtBuff() 233 function BaseObject:getBackHurtBuff()
234 local effect = {[0] = 0, [1] = 0} 234 local effect = {[0] = 0, [1] = 0}
235 for _, buff in ipairs(self.buffs) do 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 local cType, value = buff:effect() -- aType 0 全部 1 普通攻击 237 local cType, value = buff:effect() -- aType 0 全部 1 普通攻击
238 if cType then 238 if cType then
239 effect[cType] = effect[cType] + value 239 effect[cType] = effect[cType] + value
@@ -268,7 +268,7 @@ function BaseObject:getBuffEffectChange(classify) @@ -268,7 +268,7 @@ function BaseObject:getBuffEffectChange(classify)
268 end 268 end
269 local effect = 0 269 local effect = 0
270 for _, buff in ipairs(self.buffs) do 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 local cType, value = buff:effect() 272 local cType, value = buff:effect()
273 if cType and had[cType] then 273 if cType and had[cType] then
274 effect = effect + value 274 effect = effect + value
@@ -286,7 +286,7 @@ function BaseObject:getAttrBuffChange(attr) @@ -286,7 +286,7 @@ function BaseObject:getAttrBuffChange(attr)
286 } 286 }
287 local effect, count = {[0] = 0, [1] = 0}, 0 287 local effect, count = {[0] = 0, [1] = 0}, 0
288 for _, buff in ipairs(self.buffs) do 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 local cType, value, attrName = buff:effect() 290 local cType, value, attrName = buff:effect()
291 if cType and attr == attrName then 291 if cType and attr == attrName then
292 effect[cType] = effect[cType] + value 292 effect[cType] = effect[cType] + value
@@ -310,7 +310,7 @@ end @@ -310,7 +310,7 @@ end
310 function BaseObject:reSetHpMax() 310 function BaseObject:reSetHpMax()
311 self.hpMax = self._hpMax 311 self.hpMax = self._hpMax
312 for _, buff in ipairs(self.buffs) do 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 local cv = buff:effect() 314 local cv = buff:effect()
315 if cv then 315 if cv then
316 self.hpMax = self.hpMax + cv 316 self.hpMax = self.hpMax + cv
@@ -665,7 +665,7 @@ end @@ -665,7 +665,7 @@ end
665 --战斗结束了扣战斗buff次数 665 --战斗结束了扣战斗buff次数
666 function Player:effectBattleBuff() 666 function Player:effectBattleBuff()
667 for _, buff in ipairs(self.buffs) do 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 buff:effect() 669 buff:effect()
670 end 670 end
671 end 671 end
@@ -699,7 +699,7 @@ end @@ -699,7 +699,7 @@ end
699 function Player:attrChangeCondBuffCheck(etype, cond) 699 function Player:attrChangeCondBuffCheck(etype, cond)
700 local effect = {} 700 local effect = {}
701 for _, buff in ipairs(self.buffs) do 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 local _et, _attr, _co = buff:getEffectBy() 703 local _et, _attr, _co = buff:getEffectBy()
704 if etype == _et and (not _co or _co == cond) then 704 if etype == _et and (not _co or _co == cond) then
705 effect[_attr] = 1 705 effect[_attr] = 1
src/models/Activity.lua
@@ -348,9 +348,10 @@ activityFunc[Activity.ActivityType.PayBack] = { @@ -348,9 +348,10 @@ activityFunc[Activity.ActivityType.PayBack] = {
348 ["check"] = function(self, actType, notify, twd) -- 检查 348 ["check"] = function(self, actType, notify, twd) -- 检查
349 local oldVal = self:getActData(actType) or 0 349 local oldVal = self:getActData(actType) or 0
350 local newVal = oldVal + twd 350 local newVal = oldVal + twd
351 - local gift = self.owner:getPaybackReward(oldVal, newVal) 351 + local gift, checkPoint = self.owner:getPaybackReward(oldVal, newVal)
352 if gift ~= "" then 352 if gift ~= "" then
353 - self.owner:sendMail(MailId.PayBackAward, nil, gift, {newVal}) 353 + local strCp = table.concat(checkPoint ,"/")
  354 + self.owner:sendMail(MailId.PayBackAward, nil, gift, {newVal, strCp})
354 end 355 end
355 self:updateActData(actType, newVal, not notify) 356 self:updateActData(actType, newVal, not notify)
356 end, 357 end,
src/models/RolePlugin.lua
@@ -1704,6 +1704,7 @@ function RolePlugin.bind(Role) @@ -1704,6 +1704,7 @@ function RolePlugin.bind(Role)
1704 function Role:getPaybackReward(oldVal, newVal) 1704 function Role:getPaybackReward(oldVal, newVal)
1705 local maxVal, diff, extraReward = 0, 0, "" 1705 local maxVal, diff, extraReward = 0, 0, ""
1706 local gift = "" 1706 local gift = ""
  1707 + local checkPoint = {}
1707 for k, v in pairs(csvdb["rebateCsv"]) do 1708 for k, v in pairs(csvdb["rebateCsv"]) do
1708 if k > maxVal then 1709 if k > maxVal then
1709 maxVal = k 1710 maxVal = k
@@ -1714,21 +1715,27 @@ function RolePlugin.bind(Role) @@ -1714,21 +1715,27 @@ function RolePlugin.bind(Role)
1714 end 1715 end
1715 if oldVal < k and newVal > k then 1716 if oldVal < k and newVal > k then
1716 gift = gift .. v.reward .. " " 1717 gift = gift .. v.reward .. " "
  1718 +
  1719 + table.insert(checkPoint, k)
1717 end 1720 end
1718 end 1721 end
1719 if newVal > maxVal then 1722 if newVal > maxVal then
1720 local cnt = 0 1723 local cnt = 0
  1724 + local oldCheckPoint = 0
1721 if oldVal < maxVal then 1725 if oldVal < maxVal then
1722 cnt = math.floor((newVal - maxVal) / diff) 1726 cnt = math.floor((newVal - maxVal) / diff)
  1727 + oldCheckPoint = maxVal
1723 else 1728 else
1724 cnt = math.floor((newVal - maxVal) / diff) - math.floor((oldVal - maxVal) / diff) 1729 cnt = math.floor((newVal - maxVal) / diff) - math.floor((oldVal - maxVal) / diff)
  1730 + oldCheckPoint = maxVal + math.floor((oldVal - maxVal) / diff) * diff
1725 end 1731 end
1726 for i = 1, cnt do 1732 for i = 1, cnt do
1727 gift = gift .. extraReward .. " " 1733 gift = gift .. extraReward .. " "
  1734 +
  1735 + table.insert(checkPoint, oldCheckPoint + i * diff)
1728 end 1736 end
1729 end 1737 end
1730 -  
1731 - return gift 1738 + return gift, checkPoint
1732 end 1739 end
1733 1740
1734 end 1741 end