Commit 42dcb7da068acd98806c651965e7c663fffa3fc0
merge code
Showing
13 changed files
with
273 additions
and
120 deletions
Show diff stats
src/actions/GmAction.lua
... | ... | @@ -419,7 +419,6 @@ end |
419 | 419 | |
420 | 420 | table.insert(helpDes, {"挂机清除" , "idlec"}) |
421 | 421 | function _M.idlec(role, pms) |
422 | - role:updateProperty({field = "hangTeam", value = {}}) | |
423 | 422 | role:updateProperty({field = "hangInfo", value = {}}) |
424 | 423 | role:updateProperty({field = "hangBag", value = {}}) |
425 | 424 | role:mylog("gm_action", {desc = "idlec", key1 = pms.sender}) | ... | ... |
src/actions/HangAction.lua
... | ... | @@ -347,7 +347,9 @@ function _M.roleFormatRpc(agent , data) |
347 | 347 | team.leader = msg.leader |
348 | 348 | team.supports = supports |
349 | 349 | team.title = title |
350 | - team.tactics = tactics | |
350 | + if msg.tactics and globalCsv.tactics_skill_passive_cell[msg.tactics] then | |
351 | + team.tactics = msg.tactics | |
352 | + end | |
351 | 353 | |
352 | 354 | role:setTeamFormat(index, team) |
353 | 355 | |
... | ... | @@ -461,36 +463,6 @@ function _M.quickRpc(agent , data) |
461 | 463 | return true |
462 | 464 | end |
463 | 465 | |
464 | -function _M.bonusFormatRpc(agent , data) | |
465 | - local role = agent.role | |
466 | - local msg = MsgPack.unpack(data) | |
467 | - local bTeam = role:getProperty("bTeam") | |
468 | - for slot, heroId in pairs(msg.heros) do | |
469 | - if not role.heros[heroId] then | |
470 | - return | |
471 | - end | |
472 | - end | |
473 | - local supports = {} | |
474 | - for slot, support in pairs(msg.supports) do | |
475 | - if slot ~= 1 and slot ~= 2 then return end | |
476 | - local level = role.dinerData:getProperty("dishTree"):getv(support, 0) | |
477 | - if level <= 0 then return end | |
478 | - supports[slot] = support | |
479 | - end | |
480 | - if not checkLeader(msg.heros, msg.leader) then return end | |
481 | - | |
482 | - table.clear(bTeam) | |
483 | - bTeam.heros = {} | |
484 | - for slot, heroId in pairs(msg.heros) do | |
485 | - bTeam.heros[slot] = heroId | |
486 | - end | |
487 | - bTeam.leader = msg.leader | |
488 | - bTeam.supports = supports | |
489 | - | |
490 | - role:updateProperty({field = "bTeam", value = bTeam}) | |
491 | - SendPacket(actionCodes.Hang_bonusFormatRpc, '') | |
492 | - return true | |
493 | -end | |
494 | 466 | |
495 | 467 | function _M.buyBonusCountRpc(agent, data) |
496 | 468 | local role = agent.role |
... | ... | @@ -713,4 +685,4 @@ function _M.selectTeamRpc(agent, data) |
713 | 685 | return true |
714 | 686 | end |
715 | 687 | |
716 | -return _M | |
717 | 688 | \ No newline at end of file |
689 | +return _M | ... | ... |
src/actions/PvpAction.lua
... | ... | @@ -50,6 +50,9 @@ function _M.formatCommonRpc(agent , data) |
50 | 50 | end |
51 | 51 | pvpTC.leader = msg.leader |
52 | 52 | pvpTC.supports = supports |
53 | + if msg.tactics and globalCsv.tactics_skill_passive_cell[msg.tactics] then | |
54 | + pvpTC.tactics = msg.tactics | |
55 | + end | |
53 | 56 | |
54 | 57 | role:savePvpCTeam(pvpTC) |
55 | 58 | SendPacket(actionCodes.Pvp_formatCommonRpc, '') |
... | ... | @@ -92,6 +95,9 @@ function _M.formatHighRpc(agent , data) |
92 | 95 | curTeam.heros = team.heros |
93 | 96 | curTeam.leader = team.leader |
94 | 97 | curTeam.supports = supports |
98 | + if team.tactics and globalCsv.tactics_skill_passive_cell[team.tactics] then | |
99 | + curTeam.tactics = team.tactics | |
100 | + end | |
95 | 101 | |
96 | 102 | table.insert(pvpTH, curTeam) |
97 | 103 | end |
... | ... | @@ -462,6 +468,10 @@ function _M.startBattleHRpc(agent, data) |
462 | 468 | curTeam.heros = team.heros |
463 | 469 | curTeam.leader = team.leader |
464 | 470 | curTeam.supports = supports |
471 | + if team.tactics and globalCsv.tactics_skill_passive_cell[team.tactics] then | |
472 | + curTeam.tactics = team.tactics | |
473 | + end | |
474 | + | |
465 | 475 | |
466 | 476 | table.insert(pvpTH, curTeam) |
467 | 477 | end | ... | ... |
src/actions/RoleAction.lua
src/actions/TowerAction.lua
... | ... | @@ -8,36 +8,6 @@ local MsgPack = MsgPack |
8 | 8 | local _M = {} |
9 | 9 | |
10 | 10 | |
11 | -function _M.roleFormatRpc(agent , data) | |
12 | - local role = agent.role | |
13 | - local msg = MsgPack.unpack(data) | |
14 | - local towerTeam = role:getProperty("towerF") | |
15 | - for slot, heroId in pairs(msg.heros) do | |
16 | - if not role.heros[heroId] then | |
17 | - return | |
18 | - end | |
19 | - end | |
20 | - local supports = {} | |
21 | - for slot, support in pairs(msg.supports) do | |
22 | - if slot ~= 1 and slot ~= 2 then return end | |
23 | - local level = role.dinerData:getProperty("dishTree"):getv(support, 0) | |
24 | - if level <= 0 then return end | |
25 | - supports[slot] = support | |
26 | - end | |
27 | - table.clear(towerTeam) | |
28 | - towerTeam.heros = {} | |
29 | - for slot, heroId in pairs(msg.heros) do | |
30 | - towerTeam.heros[slot] = heroId | |
31 | - end | |
32 | - towerTeam.leader = msg.leader | |
33 | - towerTeam.supports = supports | |
34 | - | |
35 | - | |
36 | - role:updateProperty({field = "towerF", value = towerTeam}) | |
37 | - SendPacket(actionCodes.Tower_roleFormatRpc, '') | |
38 | - return true | |
39 | -end | |
40 | - | |
41 | 11 | |
42 | 12 | local function getUpdateTime(lastCount, lastTime) |
43 | 13 | local nextCount, nextTime = lastCount, skynet.timex() | ... | ... |
src/adv/Adv.lua
... | ... | @@ -102,6 +102,9 @@ function Adv:initByChapter(params) |
102 | 102 | self.cacheUnlock = self.cacheUnlock or {} |
103 | 103 | self.shopStatus = self.shopStatus or {} |
104 | 104 | self.support = self.support or {} |
105 | + if self.battle then | |
106 | + self.battle:overBattle() | |
107 | + end | |
105 | 108 | self.battle = nil -- 清掉 老的 battle |
106 | 109 | self.logid = self.owner:getActionUcode() |
107 | 110 | |
... | ... | @@ -211,7 +214,7 @@ function Adv:saveDB(notNotify) |
211 | 214 | advInfo.logid = self.logid |
212 | 215 | advInfo.maps = {} |
213 | 216 | |
214 | - self.battle:saveDB() | |
217 | + self.battle:saveDB(advInfo) | |
215 | 218 | |
216 | 219 | for id , map in ipairs(self.maps) do |
217 | 220 | advInfo.maps[id] = map:getDB() |
... | ... | @@ -468,6 +471,11 @@ function Adv:initBattle(notDb) |
468 | 471 | if notDb and self.level ~= 1 then |
469 | 472 | self.battle.player:attrChangeCondBuffCheck(1) |
470 | 473 | end |
474 | + | |
475 | + -- 初始化 | |
476 | + if notDb then | |
477 | + self.battle:newBattle() | |
478 | + end | |
471 | 479 | end |
472 | 480 | |
473 | 481 | function Adv:triggerPassive(condType, params) |
... | ... | @@ -1029,7 +1037,7 @@ function Adv:useItem(itemId, count, target) |
1029 | 1037 | if itemData["function"] == 0 or itemData["function"] == 2 then count = 1 end |
1030 | 1038 | |
1031 | 1039 | if itemId == 5020 then |
1032 | - role:finishGuide(53) | |
1040 | + self.owner:finishGuide(53) | |
1033 | 1041 | end |
1034 | 1042 | |
1035 | 1043 | self:checkAchievement(self.AchievType.UseItem, count, itemId) |
... | ... | @@ -1084,7 +1092,9 @@ local function clickOut(self, room, block, params, isExit) |
1084 | 1092 | end |
1085 | 1093 | |
1086 | 1094 | if #self.mapStack > 1 then -- 处于夹层中 |
1095 | + local oldMapIdx = self:getCurMapIdx() | |
1087 | 1096 | table.remove(self.mapStack) --退出夹层 |
1097 | + self.battle:iLayerChange(oldMapIdx) | |
1088 | 1098 | self:backLayer(-1) |
1089 | 1099 | else --处于底层 |
1090 | 1100 | |
... | ... | @@ -1119,7 +1129,6 @@ local function clickOut(self, room, block, params, isExit) |
1119 | 1129 | end |
1120 | 1130 | local isHaveRelay = self:isHaveRelay(self.level) |
1121 | 1131 | |
1122 | - self.owner:getProperty("advTeam").player = self.battle.player:getDB() -- 临时缓存住 battle 的player | |
1123 | 1132 | if isHaveRelay and not self.isRelay then |
1124 | 1133 | self:initByChapter({ |
1125 | 1134 | chapterId = self.chapterId, |
... | ... | @@ -1562,6 +1571,7 @@ local function clickClick(self, room, block, params) |
1562 | 1571 | end |
1563 | 1572 | |
1564 | 1573 | local function clickLayer(self, room, block, params) |
1574 | + local oldMapIdx = self:getCurMapIdx() | |
1565 | 1575 | if block.event.mapIdx then |
1566 | 1576 | table.insert(self.mapStack, block.event.mapIdx) --进入夹层 |
1567 | 1577 | else |
... | ... | @@ -1577,6 +1587,7 @@ local function clickLayer(self, room, block, params) |
1577 | 1587 | self.maps[mapIdx]:initBattleAfter() |
1578 | 1588 | self:checkAchievement(Adv.AchievType.EnterILayer, 1, mapId) |
1579 | 1589 | end |
1590 | + self.battle:iLayerChange(oldMapIdx) | |
1580 | 1591 | self:backLayer(1) |
1581 | 1592 | return true |
1582 | 1593 | end |
... | ... | @@ -2101,21 +2112,11 @@ function Adv:scoreChange(scoreType, score) |
2101 | 2112 | end |
2102 | 2113 | |
2103 | 2114 | function Adv:getScore() |
2104 | - self.score[AdvScoreType.Level] = math.floor(self.score[AdvScoreType.Level] or 0) | |
2105 | - self.score[AdvScoreType.Task] = math.floor(self.score[AdvScoreType.Task] or 0) | |
2106 | - self.score[AdvScoreType.Kill] = math.floor(self.score[AdvScoreType.Kill] or 0) | |
2107 | - self.score[AdvScoreType.KillBoss] = math.floor(self.score[AdvScoreType.KillBoss] or 0) | |
2108 | - self.score[AdvScoreType.ItemBack] = math.floor(self.score[AdvScoreType.ItemBack] or 0) | |
2109 | - self.score[AdvScoreType.Event] = math.floor(self.score[AdvScoreType.Event] or 0) | |
2110 | - self.score[AdvScoreType.Story] = math.floor(self.score[AdvScoreType.Story] or 0) | |
2111 | - | |
2112 | - return self.score[AdvScoreType.Level] | |
2113 | - + self.score[AdvScoreType.Task] | |
2114 | - + self.score[AdvScoreType.Kill] | |
2115 | - + self.score[AdvScoreType.KillBoss] | |
2116 | - + self.score[AdvScoreType.ItemBack] | |
2117 | - + self.score[AdvScoreType.Event] | |
2118 | - + self.score[AdvScoreType.Story] | |
2115 | + local allScore = 0 | |
2116 | + for _, score in pairs(self.score) do | |
2117 | + allScore = allScore + math.floor(score) | |
2118 | + end | |
2119 | + return allScore | |
2119 | 2120 | end |
2120 | 2121 | |
2121 | 2122 | function Adv:popBackEvents() | ... | ... |
src/adv/AdvBattle.lua
... | ... | @@ -8,6 +8,7 @@ function Battle:ctor(adv) |
8 | 8 | self.isNewPlayer = false |
9 | 9 | self.enemys = {} --怪 |
10 | 10 | self.builds = {} -- 建筑 |
11 | + self.auras = {} -- 光环 | |
11 | 12 | self.cachePassiveEvent = {} |
12 | 13 | self:initPlayer() |
13 | 14 | self:initEnemys() |
... | ... | @@ -198,8 +199,10 @@ function Battle:addEnemy(room, block, mapIdx, init) |
198 | 199 | end |
199 | 200 | |
200 | 201 | for _, buff in ipairs(buffs) do |
201 | - enemy:addBuff(buff) | |
202 | + player:addBuff(buff) | |
202 | 203 | end |
204 | + -- 新生成的怪 加上 已有的光环buff | |
205 | + player:checkAuraBuff(self:checkDiffAuraBuff({}, self:getAurasByMap())) | |
203 | 206 | end |
204 | 207 | end |
205 | 208 | return player |
... | ... | @@ -347,6 +350,8 @@ function Battle:afterRound() |
347 | 350 | |
348 | 351 | self.player:triggerPassive(Passive.AFTER_ROUND) |
349 | 352 | |
353 | + self:checkAura() | |
354 | + | |
350 | 355 | if self.player.isDead then |
351 | 356 | self.adv:over(false, nil, -2) |
352 | 357 | end |
... | ... | @@ -435,8 +440,116 @@ function Battle:initMapEffect(ilayer) |
435 | 440 | end |
436 | 441 | |
437 | 442 | |
443 | +-- 夹层 进入退出 接口 清理玩家身上的老光环 添加新的光环 | |
444 | +function Battle:iLayerChange(oldMapIdx) | |
445 | + local auras = self:getActiveAuras() | |
446 | + local playerBuffs = self:checkDiffAuraBuff(self:getAurasByMap(oldMapIdx), auras) | |
447 | + local enemyBuffs = self:checkDiffAuraBuff(self:getAurasByMap(), auras) | |
448 | + self.player:checkAuraBuff(playerBuffs) | |
449 | + for _, enemy in pairs(self.player:getTeam(2)) do | |
450 | + enemy:checkAuraBuff(enemyBuffs) | |
451 | + end | |
452 | + self:setMapAuras(auras) | |
453 | +end | |
454 | + | |
455 | +-- 新的 关卡 关闭旧的战斗模块 清理 玩家身上的光环效果 | |
456 | +function Battle:overBattle() | |
457 | + local buffs = self:checkDiffAuraBuff(self:getAurasByMap(), {}) | |
458 | + self.player:checkAuraBuff(buffs) | |
459 | + self.adv.owner:getProperty("advTeam").player = self.player:getDB() -- 临时缓存住 battle 的player | |
460 | +end | |
461 | + | |
462 | +-- 初始化 新的 关卡 | |
463 | +function Battle:newBattle() | |
464 | + local auras = self:getActiveAuras() | |
465 | + local buffs = self:checkDiffAuraBuff({}, auras) | |
466 | + self:setMapAuras(auras) | |
467 | +end | |
468 | + | |
469 | +-- 过了回合 检查光环 | |
470 | +function Battle:checkAura() | |
471 | + local auras = self:getActiveAuras() | |
472 | + local buffs = self:checkDiffAuraBuff(self:getAurasByMap(), auras) | |
473 | + self.player:checkAuraBuff(buffs) | |
474 | + for _, enemy in pairs(self.player:getTeam(2)) do | |
475 | + enemy:checkAuraBuff(buffs) | |
476 | + end | |
477 | + self:setMapAuras(auras) | |
478 | +end | |
479 | + | |
480 | +-- 查找差异buff | |
481 | +function Battle:checkDiffAuraBuff(oldAuras, newAuras) | |
482 | + local auras = {} | |
483 | + for aurasId , count in pairs(oldAuras) do | |
484 | + auras[aurasId] = -count | |
485 | + end | |
486 | + for aurasId , count in pairs(newAuras) do | |
487 | + auras[aurasId] = (auras[aurasId] or 0) + count | |
488 | + end | |
489 | + | |
490 | + local buffs = {} | |
491 | + for aurasId , count in pairs(auras) do | |
492 | + local auraData = csvdb["adv_map_haloCsv"][aurasId] | |
493 | + if auraData then | |
494 | + for _, effect in ipairs(auraData.effect:toTableArray(true)) do | |
495 | + temp = buffs | |
496 | + for i = 1, #effect do | |
497 | + temp[effect[i]] = temp[effect[i]] or {} | |
498 | + temp = temp[effect[i]] | |
499 | + end | |
500 | + temp.count = (temp.count or 0) + count | |
501 | + if newAuras[aurasId] then | |
502 | + -- 加上 未消失标记 | |
503 | + temp.exist = true | |
504 | + end | |
505 | + end | |
506 | + end | |
507 | + end | |
508 | + return buffs | |
509 | +end | |
510 | + | |
511 | +-- 获取所有生效的 光环 | |
512 | +function Battle:getActiveAuras() | |
513 | + local auras = {} | |
514 | + for _, one in pairs(self.player:getAuras()) do | |
515 | + auras[one] = (auras[one] or 0) + 1 | |
516 | + end | |
517 | + for _, enemy in pairs(self.player:getTeam(2)) do | |
518 | + for _, one in pairs(enemy:getAuras()) do | |
519 | + auras[one] = (auras[one] or 0) + 1 | |
520 | + end | |
521 | + end | |
522 | + for _, build in pairs(self:getBuilds()) do | |
523 | + for _, one in pairs(build:getAuras()) do | |
524 | + auras[one] = (auras[one] or 0) + 1 | |
525 | + end | |
526 | + end | |
527 | + return auras | |
528 | +end | |
529 | + | |
530 | +function Battle:setMapAuras(auras) | |
531 | + self.auras[self.adv:getCurMapIdx()] = auras | |
532 | +end | |
533 | + | |
534 | +function Battle:getAurasByMap(mapIdx) | |
535 | + mapIdx = mapIdx or self.adv:getCurMapIdx() | |
536 | + local auras = self.auras[mapIdx] or {} | |
537 | + return auras | |
538 | +end | |
539 | + | |
540 | +function Battle:getBuilds() | |
541 | + local team = {} | |
542 | + for _, build in pairs(self.builds[self.adv:getCurMapIdx()]) do | |
543 | + if not build.isDead and not build.lock then -- 已经翻开的 | |
544 | + table.insert(team, build) | |
545 | + end | |
546 | + end | |
547 | + return team | |
548 | +end | |
549 | + | |
550 | + | |
438 | 551 | --写入数据 |
439 | -function Battle:saveDB() | |
552 | +function Battle:saveDB(advInfo) | |
440 | 553 | for idx, mapEnemys in pairs(self.enemys) do |
441 | 554 | for _, enemy in ipairs(mapEnemys) do |
442 | 555 | local block = self.adv:getBlock(enemy.roomId, enemy.blockId, idx) |
... | ... | @@ -453,6 +566,7 @@ function Battle:saveDB() |
453 | 566 | end |
454 | 567 | end |
455 | 568 | end |
569 | + advInfo.auras = self.auras | |
456 | 570 | end |
457 | 571 | |
458 | 572 | return Battle |
459 | 573 | \ No newline at end of file | ... | ... |
src/adv/AdvBlock.lua
src/adv/AdvBuff.lua
... | ... | @@ -460,7 +460,18 @@ function Buff:initNew(release, data) |
460 | 460 | end |
461 | 461 | end |
462 | 462 | |
463 | -function Buff:createAfter() | |
463 | +function Buff:createAfter(layer) | |
464 | + layer = layer or 1 | |
465 | + local otype, maxLayer = self:getOverlay() | |
466 | + if otype then | |
467 | + self.layer = layer | |
468 | + if maxLayer ~= 0 then | |
469 | + self.layer = math.min(maxLayer, self.layer) | |
470 | + end | |
471 | + else | |
472 | + self.layer = 1 | |
473 | + end | |
474 | + | |
464 | 475 | if self._init then |
465 | 476 | self:_init() |
466 | 477 | end |
... | ... | @@ -647,12 +658,13 @@ function Buff:getOverlay() |
647 | 658 | end |
648 | 659 | |
649 | 660 | -- 叠加 |
650 | -function Buff:overlay(releaser, data) | |
661 | +function Buff:overlay(releaser, data, layer) | |
651 | 662 | local otype, maxLayer = self:getOverlay() |
652 | 663 | if self.isDel or not otype then -- 新获得的 (不可叠加相当于新获得的) |
653 | - self.isDel = false | |
654 | 664 | self:endBuff() |
665 | + self.isDel = false | |
655 | 666 | self:initNew(releaser, data) |
667 | + self:createAfter(layer) | |
656 | 668 | else |
657 | 669 | -- 重置回合 次数 |
658 | 670 | self.roundSpace = 0 |
... | ... | @@ -665,7 +677,7 @@ function Buff:overlay(releaser, data) |
665 | 677 | |
666 | 678 | self.release = releaser or self.release |
667 | 679 | -- 叠加层数 |
668 | - self.layer = self.layer + 1 | |
680 | + self.layer = self.layer + layer | |
669 | 681 | if maxLayer ~= 0 then |
670 | 682 | self.layer = math.min(maxLayer, self.layer) |
671 | 683 | end |
... | ... | @@ -676,14 +688,32 @@ function Buff:overlay(releaser, data) |
676 | 688 | end |
677 | 689 | |
678 | 690 | -- 扣减层数 |
679 | -function Buff:uncover() | |
680 | - if self.layer <= 1 then | |
691 | +function Buff:uncover(layer, isAura) | |
692 | + layer = layer or 1 | |
693 | + local oldLayer = self.layer | |
694 | + | |
695 | + self.layer = self.layer - layer | |
696 | + | |
697 | + if self.layer <= 0 then | |
681 | 698 | self.isDel = true |
682 | 699 | end |
683 | 700 | |
684 | - self.layer = self.layer - 1 | |
685 | - if self._uncover then | |
686 | - self:_uncover() | |
701 | + if isAura then | |
702 | + if layer == -1 then | |
703 | + self.layer = 0 | |
704 | + self.isDel = true | |
705 | + else | |
706 | + self.layer = math.max(1, self.layer) | |
707 | + self.isDel = false | |
708 | + end | |
709 | + end | |
710 | + | |
711 | + if self.isDel then return end | |
712 | + | |
713 | + if oldLayer ~= self.layer then | |
714 | + if self._uncover then | |
715 | + self:_uncover() | |
716 | + end | |
687 | 717 | end |
688 | 718 | end |
689 | 719 | ... | ... |
src/adv/AdvPlayer.lua
... | ... | @@ -143,7 +143,8 @@ function BaseObject:getDisablePassiveCount() |
143 | 143 | return count |
144 | 144 | end |
145 | 145 | |
146 | -function BaseObject:addBuff(buffId, releaser) | |
146 | +function BaseObject:addBuff(buffId, releaser, layer) | |
147 | + layer = layer or 1 | |
147 | 148 | local buffData = csvdb["adv_map_buffCsv"][buffId] |
148 | 149 | if not buffData then return end |
149 | 150 | for _, buff in ipairs(self.buffs) do |
... | ... | @@ -157,7 +158,7 @@ function BaseObject:addBuff(buffId, releaser) |
157 | 158 | local oldBuff = self:getBuffById(buffId) |
158 | 159 | if oldBuff then |
159 | 160 | if not oldBuff:checkKeep() then return end |
160 | - oldBuff:overlay(releaser, {}) -- 叠加 | |
161 | + oldBuff:overlay(releaser, {}, layer) -- 叠加 | |
161 | 162 | else |
162 | 163 | -- 不能保持的buff 也加不上去 |
163 | 164 | if not Buff.checkKeep({ |
... | ... | @@ -167,7 +168,7 @@ function BaseObject:addBuff(buffId, releaser) |
167 | 168 | }) then return end |
168 | 169 | local buff = Buff.create(self, releaser, {id = buffId}) |
169 | 170 | table.insert(self.buffs, buff) |
170 | - buff:createAfter() | |
171 | + buff:createAfter(layer) | |
171 | 172 | end |
172 | 173 | self:triggerPassive(Passive.GET_BUFF, {trigger = releaser, buffId = buffId}) |
173 | 174 | self:triggerPassive(Passive.PLAYER_BUFF_CLASSIFY, {trigger = releaser, classify = buffData.classify}) |
... | ... | @@ -224,6 +225,30 @@ end |
224 | 225 | function BaseObject:reSetSpMax() |
225 | 226 | end |
226 | 227 | |
228 | +function BaseObject:checkAuraBuff(buffs) | |
229 | +end | |
230 | + | |
231 | +function BaseObject:getAuras() | |
232 | + local auras = {} | |
233 | + if self:is("Enemy") then | |
234 | + local halo = csvdb["event_monsterCsv"][self.monsterId].halo | |
235 | + if halo then | |
236 | + for _, one in ipairs(halo:toArray(true, "=")) do | |
237 | + table.insert(auras, one) | |
238 | + end | |
239 | + end | |
240 | + elseif self:is("Build") then | |
241 | + local halo = csvdb["event_buildingCsv"][self.id].halo | |
242 | + if halo then | |
243 | + for _, one in ipairs(halo:toArray(true, "=")) do | |
244 | + table.insert(auras, one) | |
245 | + end | |
246 | + end | |
247 | + end | |
248 | + | |
249 | + return auras | |
250 | +end | |
251 | + | |
227 | 252 | |
228 | 253 | -- 通用的buff 效果汇总 -- 0 固定 1百分比 两种分类 |
229 | 254 | function BaseObject:getCommonBuffEffect(bType, otherCond) |
... | ... | @@ -625,6 +650,33 @@ function Enemy:getClassify() |
625 | 650 | return csvdb["event_monsterCsv"][self.monsterId].classify |
626 | 651 | end |
627 | 652 | |
653 | +-- 0=所有 1=怪物 2=玩家 | |
654 | +function Enemy:checkAuraBuff(buffs) | |
655 | + local needBuffs = {} | |
656 | + | |
657 | + for buffId, info in pairs(buffs[0] or {}) do | |
658 | + needBuffs[buffId] = needBuffs[buffId] or {} | |
659 | + needBuffs[buffId].count = (needBuffs[buffId].count or 0) + info.count | |
660 | + needBuffs[buffId].exist = info.exist | |
661 | + end | |
662 | + | |
663 | + for buffId, info in pairs(buffs[1] or {}) do | |
664 | + needBuffs[buffId] = needBuffs[buffId] or {} | |
665 | + needBuffs[buffId].count = (needBuffs[buffId].count or 0) + info.count | |
666 | + needBuffs[buffId].exist = info.exist | |
667 | + end | |
668 | + | |
669 | + for buffId, info in pairs(needBuffs) do | |
670 | + if info.count < 0 then | |
671 | + local buff = self:getBuffById(buffId) | |
672 | + if buff then | |
673 | + buff:uncover(info.exist and -info.count or -1, true) | |
674 | + end | |
675 | + elseif count > 0 then | |
676 | + self:addBuff(buffId, nil, info.count) | |
677 | + end | |
678 | + end | |
679 | +end | |
628 | 680 | |
629 | 681 | function Enemy:kill() |
630 | 682 | self:hurt(self.hp, self.battle.player, {hurtType = 5}) |
... | ... | @@ -775,6 +827,33 @@ function Player:addBuff(buffId, releaser) |
775 | 827 | end |
776 | 828 | return status |
777 | 829 | end |
830 | +-- 0=所有 1=怪物 2=玩家 | |
831 | +function Player:checkAuraBuff(buffs) | |
832 | + local needBuffs = {} | |
833 | + | |
834 | + for buffId, info in pairs(buffs[0] or {}) do | |
835 | + needBuffs[buffId] = needBuffs[buffId] or {} | |
836 | + needBuffs[buffId].count = (needBuffs[buffId].count or 0) + info.count | |
837 | + needBuffs[buffId].exist = info.exist | |
838 | + end | |
839 | + | |
840 | + for buffId, info in pairs(buffs[2] or {}) do | |
841 | + needBuffs[buffId] = needBuffs[buffId] or {} | |
842 | + needBuffs[buffId].count = (needBuffs[buffId].count or 0) + info.count | |
843 | + needBuffs[buffId].exist = info.exist | |
844 | + end | |
845 | + | |
846 | + for buffId, info in pairs(needBuffs) do | |
847 | + if info.count < 0 then | |
848 | + local buff = self:getBuffById(buffId) | |
849 | + if buff then | |
850 | + buff:uncover(info.exist and -info.count or -1, true) | |
851 | + end | |
852 | + elseif info.count > 0 then | |
853 | + self:addBuff(buffId, nil, info.count) | |
854 | + end | |
855 | + end | |
856 | +end | |
778 | 857 | |
779 | 858 | function Player:isPlayer() |
780 | 859 | return true | ... | ... |
src/models/Role.lua
... | ... | @@ -103,7 +103,6 @@ Role.schema = { |
103 | 103 | --挂机相关 |
104 | 104 | hangPass = {"table", {}}, -- 挂机通过的最大关卡 |
105 | 105 | hangGift = {"table", {}}, -- 挂机奖励 {id = 1} |
106 | - hangTeam = {"table", {}}, -- 挂机队伍 | |
107 | 106 | hangTS = {"table", {}}, -- 挂机队伍他人可读的队伍信息 |
108 | 107 | hangTB = {"table", {}}, -- 挂机队伍他人可用的战斗信息mao |
109 | 108 | hangTBV = {"number", 0}, -- 挂机队伍他人可用的战斗力 |
... | ... | @@ -111,7 +110,6 @@ Role.schema = { |
111 | 110 | hangInfo = {"table", {}}, -- 当前挂机信息 |
112 | 111 | hangBag = {"table", {}}, -- 背包 |
113 | 112 | hangBagLimit = {"number", globalCsv.idle_field_origin}, --背包上限 |
114 | - bTeam = {"table", {}}, -- 奖励副本队伍 | |
115 | 113 | hangTeams = {"table", {}}, -- pve自选编队 |
116 | 114 | teamIndex = {"table", {}}, -- 各个系统使用的编队索引 type->index 见TeamSystemType |
117 | 115 | advTeams = {"table", {}}, -- 拾荒自选编队 |
... | ... | @@ -145,7 +143,6 @@ Role.schema = { |
145 | 143 | boxL = {"table", {}}, -- boxList 正开启的箱子 -- {[1] = {id = 1010, gem = 101, time = 1313}} |
146 | 144 | |
147 | 145 | towerInfo = {"table", {c = globalCsv.tower_count_limit, l = 1}}, -- 当天爬塔消耗的次数 -- {t = time, c = count, l = layer, k = battleKey} |
148 | - towerF = {"table", {}}, -- 爬塔阵容 | |
149 | 146 | |
150 | 147 | spTask = {"table", {}}, -- 特殊任务 -- {id = status} |
151 | 148 | |
... | ... | @@ -357,11 +354,9 @@ function Role:data() |
357 | 354 | |
358 | 355 | hangPass = self:getProperty("hangPass"), |
359 | 356 | hangGift = self:getProperty("hangGift"), |
360 | - hangTeam = self:getProperty("hangTeam"), | |
361 | 357 | hangInfo = self:getProperty("hangInfo"), |
362 | 358 | hangBag = self:getProperty("hangBag"), |
363 | 359 | hangBagLimit = self:getProperty("hangBagLimit"), |
364 | - bTeam = self:getProperty("bTeam"), | |
365 | 360 | hangTeams = self:getProperty("hangTeams"), |
366 | 361 | teamIndex = self:getProperty("teamIndex"), |
367 | 362 | advTeams = self:getProperty("advTeams"), |
... | ... | @@ -380,7 +375,6 @@ function Role:data() |
380 | 375 | equips = self:getProperty("equips"), |
381 | 376 | boxL = self:getProperty("boxL"), |
382 | 377 | towerInfo = self:getProperty("towerInfo"), |
383 | - towerF = self:getProperty("towerF"), | |
384 | 378 | spTask = self:getProperty("spTask"), |
385 | 379 | dTask = self:getProperty("dTask"), |
386 | 380 | wTask = self:getProperty("wTask"), | ... | ... |
src/models/RoleBattle.lua
... | ... | @@ -57,7 +57,6 @@ function Role:checkBattle(battleType, params) |
57 | 57 | end |
58 | 58 | end, |
59 | 59 | tower = function() |
60 | - --local towerF = self:getProperty("towerF") | |
61 | 60 | local towerF = self:getTeamFormatByType(TeamSystemType.Tower) |
62 | 61 | for slot, hero in pairs(self:getTeamHerosInfo(towerF.heros)) do |
63 | 62 | selflist[slot] = hero.type |
... | ... | @@ -73,7 +72,6 @@ function Role:checkBattle(battleType, params) |
73 | 72 | end |
74 | 73 | end, |
75 | 74 | bonus = function() |
76 | - --local bTeam = self:getProperty("bTeam") | |
77 | 75 | local bTeam = self:getTeamFormatByType(TeamSystemType.BonusBattle) |
78 | 76 | for slot, hero in pairs(self:getTeamHerosInfo(bTeam.heros)) do |
79 | 77 | selflist[slot] = hero.type | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -1135,7 +1135,6 @@ function RolePlugin.bind(Role) |
1135 | 1135 | local now = skynet.timex() |
1136 | 1136 | local ct = math.ceil((now - StdTowerRankTime) / 86400) --按天计算 365 * 27 < 10000 可以维持 27 年 |
1137 | 1137 | local ct = 10000 - ct -- 越早的排名越靠前 |
1138 | - --local towerTeam = self:getProperty("towerF") | |
1139 | 1138 | local towerTeam = self:getTeamFormatByType(TeamSystemType.Tower) |
1140 | 1139 | local battleV = self:getTeamBattleValue(towerTeam.heros) |
1141 | 1140 | local score = (level * 10000 + ct) * 10000000 + battleV |
... | ... | @@ -1289,6 +1288,7 @@ function RolePlugin.bind(Role) |
1289 | 1288 | for slot, id in pairs(team.supports or {}) do |
1290 | 1289 | teamInfo.supports[slot] = {id, self.dinerData:getProperty("dishTree"):getv(id, 0)} |
1291 | 1290 | end |
1291 | + teamInfo.tactics = globalCsv.tactics_skill_passive_cell[team.tactics] and team.tactics or nil | |
1292 | 1292 | return teamInfo |
1293 | 1293 | end |
1294 | 1294 | |
... | ... | @@ -1315,20 +1315,6 @@ function RolePlugin.bind(Role) |
1315 | 1315 | return self:getRealBattleValue(heros) |
1316 | 1316 | end |
1317 | 1317 | |
1318 | - -- 不传参数 只修改保存的阵容信息 | |
1319 | - function Role:saveHangTeam(team) | |
1320 | - if not team then | |
1321 | - team = self:getProperty("hangTeam") | |
1322 | - else | |
1323 | - self:updateProperty({field = "hangTeam", value = team}) | |
1324 | - end | |
1325 | - self:setProperties({ | |
1326 | - hangTS = self:getTeamHerosInfo(team.heros), | |
1327 | - hangTB = self:getTeamBattleInfo(team), | |
1328 | - hangTBV = self:getTeamBattleValue(team.heros), | |
1329 | - }) | |
1330 | - end | |
1331 | - | |
1332 | 1318 | function Role:updateHangTeamInfo() |
1333 | 1319 | local team = self:getTeamFormatByType(TeamSystemType.Hang) |
1334 | 1320 | if not team then return end | ... | ... |