Commit bbf64622d27f654e6503de9b1111aea0bf4cb1dc

Authored by zhouhaihai
1 parent f02087ed

冒险

@@ -165,9 +165,11 @@ AdvBackEventType = { @@ -165,9 +165,11 @@ AdvBackEventType = {
165 AdvScoreType = { 165 AdvScoreType = {
166 Level = 1, 166 Level = 1,
167 Kill = 2, 167 Kill = 2,
168 - Item = 3,  
169 - Hurt = 4,  
170 - Block = 5, 168 + KillBoss = 3,
  169 + ItemBack = 4,
  170 + Event = 5,
  171 + Story = 6,
  172 + Task = 7,
171 } 173 }
172 174
173 DinerTask = { 175 DinerTask = {
src/ProtocolCode.lua
@@ -153,6 +153,10 @@ actionCodes = { @@ -153,6 +153,10 @@ actionCodes = {
153 Pvp_endBattleRpc = 505, 153 Pvp_endBattleRpc = 505,
154 Pvp_rankListRpc = 506, 154 Pvp_rankListRpc = 506,
155 Pvp_recordListRpc = 507, 155 Pvp_recordListRpc = 507,
  156 + Pvp_formatHighRpc = 508,
  157 + Pvp_refreshMatchHRpc = 509,
  158 + Pvp_startBattleHRpc = 510,
  159 + Pvp_endBattleHRpc = 511,
156 160
157 161
158 Store_rechargeRpc = 550, 162 Store_rechargeRpc = 550,
@@ -126,7 +126,6 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt @@ -126,7 +126,6 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt
126 self:checkAdvUnlock(1, self.level) 126 self:checkAdvUnlock(1, self.level)
127 if isToNext then 127 if isToNext then
128 self.battle.player:afterLayer() -- 玩家的buff 清理一下 128 self.battle.player:afterLayer() -- 玩家的buff 清理一下
129 - self:scoreChange(AdvScoreType.Level) --增加层级加分  
130 end 129 end
131 if not notNotify then 130 if not notNotify then
132 self:saveDB(notNotify) 131 self:saveDB(notNotify)
@@ -617,34 +616,47 @@ function Adv:isEndless() @@ -617,34 +616,47 @@ function Adv:isEndless()
617 end 616 end
618 617
619 function Adv:getCurFloorData() 618 function Adv:getCurFloorData()
620 - if not self.chapterId then return end  
621 local chapter = self.chapterId % 100 619 local chapter = self.chapterId % 100
622 - return (csvdb["adv_chapter_floorCsv"][chapter] or {})[self.level] 620 + return (csvdb["adv_chapter_floorCsv"][self.chapterId] or {})[self.level]
623 end 621 end
624 622
625 --关卡结束 623 --关卡结束
626 -function Adv:over(success, rewardRatio) 624 +function Adv:over(success, rewardRatio, overType)
627 if success then 625 if success then
628 rewardRatio = rewardRatio or 100 626 rewardRatio = rewardRatio or 100
  627 + overType = overType or 0
629 else 628 else
630 rewardRatio = rewardRatio or globalCsv.adv_fail_reward_ratio 629 rewardRatio = rewardRatio or globalCsv.adv_fail_reward_ratio
  630 + overType = overType or -1
631 end 631 end
632 - local score = self:getScore()  
633 - local scoreInfo = self.score  
634 -  
635 - self.battle.player:triggerPassive(Passive.ADV_OVER, {score = score, level = self.level})  
636 -  
637 - 632 + local chapterData = csvdb["adv_chapterCsv"][self.chapterId]
  633 + -- 扣除的东西给积分
638 local reward = self.owner:getProperty("advItems"):toNumMap() 634 local reward = self.owner:getProperty("advItems"):toNumMap()
  635 + local addScore = 0
639 for itemId, count in pairs(reward) do 636 for itemId, count in pairs(reward) do
640 - reward[itemId] = math.ceil(count * rewardRatio / 100) 637 + local itemCsv = csvdb["itemCsv"][itemId]
  638 + if itemCsv.type == ItemType.AdvItem then
  639 + addScore = addScore + count * itemCsv.advScore
  640 + else
  641 + reward[itemId] = math.ceil(count * rewardRatio / 100)
  642 + end
641 end 643 end
  644 + self:scoreChange(AdvScoreType.ItemBack, addScore)
  645 +
  646 + local score = self.owner:fixAdvScoreChange(self:getScore())
  647 + local scoreInfo = self.score
  648 +
  649 + local scoreReward = math.floor(score / chapterData.scoreAward)
  650 + self.owner:award({[ItemId.OldCoin] = scoreReward})
  651 +
642 reward = self.owner:award(reward) 652 reward = self.owner:award(reward)
643 653
  654 + self.battle.player:triggerPassive(Passive.ADV_OVER, {score = score, level = self.level})
  655 +
644 if success then 656 if success then
645 self.owner:checkTaskEnter("AdvPass", {id = self.chapterId, level = self.level, score = score}) 657 self.owner:checkTaskEnter("AdvPass", {id = self.chapterId, level = self.level, score = score})
646 - local chapterData = csvdb["adv_chapterCsv"][self.chapterId].limitlevel  
647 - if not self:isEndless() and self.level >= chapterData then 658 +
  659 + if not self:isEndless() and self.level >= chapterData.limitlevel then
648 self.owner:checkTaskEnter("AdvAllPass", {id = self.chapterId}) 660 self.owner:checkTaskEnter("AdvAllPass", {id = self.chapterId})
649 end 661 end
650 662
@@ -675,7 +687,7 @@ function Adv:over(success, rewardRatio) @@ -675,7 +687,7 @@ function Adv:over(success, rewardRatio)
675 advAFGet = {}, 687 advAFGet = {},
676 advAFWear = {}, 688 advAFWear = {},
677 }) 689 })
678 - self:backEnd(success, score, scoreInfo, reward) 690 + self:backEnd(success, score, scoreInfo, reward, overType, scoreReward)
679 end 691 end
680 692
681 function Adv:exit() 693 function Adv:exit()
@@ -740,7 +752,6 @@ function Adv:award(gift, params) @@ -740,7 +752,6 @@ function Adv:award(gift, params)
740 if count > 0 then 752 if count > 0 then
741 local buffAdd = self.battle.player:getRewardChange(itemId) 753 local buffAdd = self.battle.player:getRewardChange(itemId)
742 count = math.floor(math.max(0, (count + buffAdd[0]) * (1 + buffAdd[1]))) --附加 buff 的影响 754 count = math.floor(math.max(0, (count + buffAdd[0]) * (1 + buffAdd[1]))) --附加 buff 的影响
743 - self:scoreChange(AdvScoreType.Item, {itemId, count})  
744 self:checkTask(Adv.TaskType.Item, count, itemId) 755 self:checkTask(Adv.TaskType.Item, count, itemId)
745 self:checkAchievement(Adv.AchievType.GetItem, count, itemId) 756 self:checkAchievement(Adv.AchievType.GetItem, count, itemId)
746 end 757 end
@@ -820,11 +831,16 @@ local function clickOut(self, room, block, params) @@ -820,11 +831,16 @@ local function clickOut(self, room, block, params)
820 self:checkAchievement(Adv.AchievType.OverWin, 1, self.level) 831 self:checkAchievement(Adv.AchievType.OverWin, 1, self.level)
821 self:checkAdvUnlock(2, self.level) 832 self:checkAdvUnlock(2, self.level)
822 833
  834 + local curFloorData = self:getCurFloorData()
  835 + if not self.isRelay then
  836 + self:scoreChange(AdvScoreType.Level, curFloorData.advScore) --增加层级加分
  837 + end
  838 +
823 if not self:isEndless() and (self.level >= csvdb["adv_chapterCsv"][self.chapterId].limitlevel or not self.owner:advChapterIsOpen(self.chapterId, self.level + 1)) then --关卡结束 839 if not self:isEndless() and (self.level >= csvdb["adv_chapterCsv"][self.chapterId].limitlevel or not self.owner:advChapterIsOpen(self.chapterId, self.level + 1)) then --关卡结束
824 self:over(true) 840 self:over(true)
825 else 841 else
826 self.battle.player:triggerPassive(Passive.DOWN_LAYER) 842 self.battle.player:triggerPassive(Passive.DOWN_LAYER)
827 - local curFloorData = self:getCurFloorData() 843 +
828 if curFloorData then 844 if curFloorData then
829 self:backReward(self:award({[ItemId.AdvPoint] = curFloorData.exp})) 845 self:backReward(self:award({[ItemId.AdvPoint] = curFloorData.exp}))
830 end 846 end
@@ -1011,6 +1027,8 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) @@ -1011,6 +1027,8 @@ local function chooseCommon(self, room, block, chooseData, choose, tag)
1011 assert(doEffect[effect[1]], "error effect, event_" .. (tag or "choose") .. "Csv id :" .. block.event.id) 1027 assert(doEffect[effect[1]], "error effect, event_" .. (tag or "choose") .. "Csv id :" .. block.event.id)
1012 doEffect[effect[1]]() 1028 doEffect[effect[1]]()
1013 end 1029 end
  1030 + self:scoreChange(AdvScoreType.Event, chooseData.advScore) --增加加分
  1031 +
1014 return true, clearBlock 1032 return true, clearBlock
1015 end 1033 end
1016 1034
@@ -1048,6 +1066,7 @@ local function clickLinkChoose(self, room, block, params) @@ -1048,6 +1066,7 @@ local function clickLinkChoose(self, room, block, params)
1048 self.owner:setProperty("advStoryB", advStoryB) 1066 self.owner:setProperty("advStoryB", advStoryB)
1049 local storyData = csvdb["event_linkchoose_storyCsv"][chooseData.storyid] 1067 local storyData = csvdb["event_linkchoose_storyCsv"][chooseData.storyid]
1050 self:checkAchievement(Adv.AchievType.StorryDone, 1, storyData[1].chapter) -- 检查故事对应章节 1068 self:checkAchievement(Adv.AchievType.StorryDone, 1, storyData[1].chapter) -- 检查故事对应章节
  1069 + self:scoreChange(AdvScoreType.Story, storyData.advScore) --增加加分
1051 1070
1052 self:checkAdvUnlock(4, startId) 1071 self:checkAdvUnlock(4, startId)
1053 self.lchoose.cur = self.lchoose.cur or {} 1072 self.lchoose.cur = self.lchoose.cur or {}
@@ -1433,7 +1452,7 @@ function Adv:doActive(activeId, target) @@ -1433,7 +1452,7 @@ function Adv:doActive(activeId, target)
1433 1452
1434 --10: 立刻结算 按比例返还 1453 --10: 立刻结算 按比例返还
1435 doActiveEffect[10] = function(_, rewardRatio) 1454 doActiveEffect[10] = function(_, rewardRatio)
1436 - self:over(true, rewardRatio) 1455 + self:over(true, rewardRatio, 1)
1437 return true 1456 return true
1438 end 1457 end
1439 1458
@@ -1507,7 +1526,11 @@ function Adv:enemyDead(enemy, escape) @@ -1507,7 +1526,11 @@ function Adv:enemyDead(enemy, escape)
1507 else 1526 else
1508 local enemyId = block.event.id 1527 local enemyId = block.event.id
1509 local monsterData = csvdb["event_monsterCsv"][enemyId] 1528 local monsterData = csvdb["event_monsterCsv"][enemyId]
1510 - self:scoreChange(AdvScoreType.Kill, monsterData.type) 1529 + if block:isBoss() then
  1530 + self:scoreChange(AdvScoreType.KillBoss, monsterData.advScore)
  1531 + else
  1532 + self:scoreChange(AdvScoreType.Kill, monsterData.advScore)
  1533 + end
1511 local changeV = self.battle.player:addExp(monsterData.exp) 1534 local changeV = self.battle.player:addExp(monsterData.exp)
1512 self:backDead(enemyId, changeV) 1535 self:backDead(enemyId, changeV)
1513 if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click 1536 if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click
@@ -1604,8 +1627,8 @@ function Adv:backNext() @@ -1604,8 +1627,8 @@ function Adv:backNext()
1604 self:pushBackEvent(AdvBackEventType.Next, {}) 1627 self:pushBackEvent(AdvBackEventType.Next, {})
1605 end 1628 end
1606 1629
1607 -function Adv:backEnd(success, score, scoreInfo, reward)  
1608 - self:pushBackEvent(AdvBackEventType.End, {success = success, score = score, scoreInfo = scoreInfo, reward = reward}) 1630 +function Adv:backEnd(success, score, scoreInfo, reward, overType, scoreAward)
  1631 + self:pushBackEvent(AdvBackEventType.End, {success = success, score = score, scoreInfo = scoreInfo, reward = reward, type = overType, scoreAward = scoreAward})
1609 end 1632 end
1610 1633
1611 function Adv:backBlockChange(roomId, blockId) 1634 function Adv:backBlockChange(roomId, blockId)
@@ -1641,43 +1664,27 @@ function Adv:backUse(items) @@ -1641,43 +1664,27 @@ function Adv:backUse(items)
1641 end 1664 end
1642 1665
1643 1666
1644 -function Adv:scoreChange(scoreType, pms)  
1645 - local cutTypes = {}  
1646 - local score = 0  
1647 - cutTypes[AdvScoreType.Level] = function()  
1648 - score = globalCsv.adv_score_floor  
1649 - end  
1650 - cutTypes[AdvScoreType.Kill] = function()  
1651 - local chapterData = csvdb["adv_chapterCsv"][self.chapterId]  
1652 - score = globalCsv.adv_score_monster[pms] * chapterData["reward"]  
1653 - end  
1654 - cutTypes[AdvScoreType.Item] = function()  
1655 - score = csvdb["itemCsv"][pms[1]].adv_score_item * pms[2]  
1656 - end  
1657 - cutTypes[AdvScoreType.Hurt] = function()  
1658 - score = globalCsv.adv_score_hurt * pms  
1659 - end  
1660 - cutTypes[AdvScoreType.Block] = function()  
1661 - score = globalCsv.adv_score_block  
1662 - end  
1663 - if cutTypes[scoreType] then  
1664 - cutTypes[scoreType]()  
1665 - else  
1666 - return  
1667 - end 1667 +function Adv:scoreChange(scoreType, score)
1668 self.score[scoreType] = self.score[scoreType] or 0 1668 self.score[scoreType] = self.score[scoreType] or 0
1669 - self.score[scoreType] = self.score[scoreType] + self.owner:fixAdvScoreChange(score) 1669 + self.score[scoreType] = self.score[scoreType] + score
1670 end 1670 end
1671 1671
1672 function Adv:getScore() 1672 function Adv:getScore()
1673 self.score[AdvScoreType.Level] = math.floor(self.score[AdvScoreType.Level] or 0) 1673 self.score[AdvScoreType.Level] = math.floor(self.score[AdvScoreType.Level] or 0)
1674 - self.score[AdvScoreType.Block] = math.floor(self.score[AdvScoreType.Block] or 0)  
1675 - self.score[AdvScoreType.Hurt] = math.max(math.floor(self.score[AdvScoreType.Hurt] or 0), - (self.score[AdvScoreType.Level] + self.score[AdvScoreType.Block])) 1674 + self.score[AdvScoreType.Task] = math.floor(self.score[AdvScoreType.Task] or 0)
1676 self.score[AdvScoreType.Kill] = math.floor(self.score[AdvScoreType.Kill] or 0) 1675 self.score[AdvScoreType.Kill] = math.floor(self.score[AdvScoreType.Kill] or 0)
1677 - self.score[AdvScoreType.Item] = math.floor(self.score[AdvScoreType.Item] or 0)  
1678 -  
1679 - return self.score[AdvScoreType.Level] + self.score[AdvScoreType.Block] + self.score[AdvScoreType.Hurt]  
1680 - + self.score[AdvScoreType.Kill] + self.score[AdvScoreType.Item] 1676 + self.score[AdvScoreType.KillBoss] = math.floor(self.score[AdvScoreType.KillBoss] or 0)
  1677 + self.score[AdvScoreType.ItemBack] = math.floor(self.score[AdvScoreType.ItemBack] or 0)
  1678 + self.score[AdvScoreType.Event] = math.floor(self.score[AdvScoreType.Event] or 0)
  1679 + self.score[AdvScoreType.Story] = math.floor(self.score[AdvScoreType.Story] or 0)
  1680 +
  1681 + return self.score[AdvScoreType.Level]
  1682 + + self.score[AdvScoreType.Task]
  1683 + + self.score[AdvScoreType.Kill]
  1684 + + self.score[AdvScoreType.KillBoss]
  1685 + + self.score[AdvScoreType.ItemBack]
  1686 + + self.score[AdvScoreType.Event]
  1687 + + self.score[AdvScoreType.Story]
1681 end 1688 end
1682 1689
1683 function Adv:popBackEvents() 1690 function Adv:popBackEvents()
src/adv/AdvMap.lua
@@ -142,7 +142,6 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack) @@ -142,7 +142,6 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack)
142 if status then 142 if status then
143 if isPlayer then 143 if isPlayer then
144 self.adv.battle.player:triggerPassive(Passive.OPEN_BLOCK) 144 self.adv.battle.player:triggerPassive(Passive.OPEN_BLOCK)
145 - self.adv:scoreChange(AdvScoreType.Block)  
146 self.adv.owner:checkTaskEnter("AdvOpenBlock") 145 self.adv.owner:checkTaskEnter("AdvOpenBlock")
147 end 146 end
148 147
src/adv/AdvPlayer.lua
@@ -402,10 +402,6 @@ function BaseObject:hurt(value, releaser, params) @@ -402,10 +402,6 @@ function BaseObject:hurt(value, releaser, params)
402 end 402 end
403 self.hp = math.max(0, self.hp - value) 403 self.hp = math.max(0, self.hp - value)
404 404
405 - if self.cutHp then  
406 - self:cutHp(value)  
407 - end  
408 -  
409 if self.hp == 0 then 405 if self.hp == 0 then
410 self:triggerPassive(Passive.SELF_DEAD) 406 self:triggerPassive(Passive.SELF_DEAD)
411 for _, team in ipairs(self:getTeam(1, true)) do 407 for _, team in ipairs(self:getTeam(1, true)) do
@@ -542,10 +538,6 @@ function Player:ctor(battle, data) @@ -542,10 +538,6 @@ function Player:ctor(battle, data)
542 self:initData(data) 538 self:initData(data)
543 end 539 end
544 540
545 -function Player:cutHp(value)  
546 - self.battle.adv:scoreChange(AdvScoreType.Hurt, value)  
547 -end  
548 -  
549 function Player:initData(data) 541 function Player:initData(data)
550 Player.super.initData(self, data) 542 Player.super.initData(self, data)
551 self.level = data.level or 1 --level 每增加1级 属性增长 growth * baseAttr 543 self.level = data.level or 1 --level 每增加1级 属性增长 growth * baseAttr
src/adv/AdvTask.lua
@@ -139,6 +139,8 @@ function AdvTask.bind(Adv) @@ -139,6 +139,8 @@ function AdvTask.bind(Adv)
139 reward[item[1]] = (reward[item[1]] or 0) + item[2] 139 reward[item[1]] = (reward[item[1]] or 0) + item[2]
140 reward = self:award(reward) 140 reward = self:award(reward)
141 141
  142 + self:scoreChange(AdvScoreType.Task, taskData.advScore) --增加加分
  143 +
142 self.advTask[taskId] = nil 144 self.advTask[taskId] = nil
143 ok = true 145 ok = true
144 advTaskChange.t = true 146 advTaskChange.t = true
src/models/RolePlugin.lua
@@ -994,7 +994,7 @@ function RolePlugin.bind(Role) @@ -994,7 +994,7 @@ function RolePlugin.bind(Role)
994 end 994 end
995 end 995 end
996 end 996 end
997 - return score * (1 + change / 100) 997 + return math.floor(score * (1 + change / 100))
998 end 998 end
999 999
1000 function Role:getAdvLvAddAttrs() 1000 function Role:getAdvLvAddAttrs()