Commit e51ff6d2433dff84bce0c2467168b27ce9be2e15

Authored by zhouhaihai
1 parent e31439db

冒险~

src/actions/AdvAction.lua
@@ -104,21 +104,24 @@ function _M.startAdvRpc( agent, data ) @@ -104,21 +104,24 @@ function _M.startAdvRpc( agent, data )
104 if not role:isFuncOpen(FuncOpenType.AdvEndless) then return 11 end -- 无尽模式 才可以玩儿无尽模式 104 if not role:isFuncOpen(FuncOpenType.AdvEndless) then return 11 end -- 无尽模式 才可以玩儿无尽模式
105 105
106 local advElM = role:getProperty("advElM") --最高通关的层数 106 local advElM = role:getProperty("advElM") --最高通关的层数
  107 + if not role:advChapterIsOpen(chapterId) then return 13 end
107 108
108 - if layer == 1 then  
109 - if not role:advChapterIsOpen(chapterId, layer) then return 13 end  
110 - else 109 + if layer ~= 1 then
111 local relayData = role:getAdvData():isHaveRelay(layer, chapterId) 110 local relayData = role:getAdvData():isHaveRelay(layer, chapterId)
112 - if not relayData then return end -- 不是中继层  
113 - if advElM < relayData.unlockfloor then return end --未解锁 111 + if not relayData then return 14 end -- 不是中继层
  112 + if advElM < relayData.unlockfloor then return 15 end --未解锁
114 end 113 end
115 else -- 普通模式判断 114 else -- 普通模式判断
116 if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return 2 end -- 是否有体力 115 if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return 2 end -- 是否有体力
117 - if layer > chapterData.limitlevel then return 4 end 116 + if layer >= chapterData.limitlevel then return 4 end
118 -- 关卡开放判断 117 -- 关卡开放判断
119 - if not role:advChapterIsOpen(chapterId, layer) then return 5 end  
120 - -- 普通模式没有中继 只能从1 开始 中继开放判断  
121 - if layer ~= 1 then return 6 end 118 + if not role:advChapterIsOpen(chapterId) then return 5 end
  119 +
  120 + if layer ~= 1 then
  121 + local relayData = role:getAdvData():isHaveRelay(layer, chapterId)
  122 + if not relayData then return 6 end -- 不是中继层
  123 + if (advPass[chapterId] or 0) < relayData.floor then return 21 end
  124 + end
122 end 125 end
123 126
124 if not checkFormat(role, format) then return 7 end 127 if not checkFormat(role, format) then return 7 end
@@ -99,9 +99,9 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt @@ -99,9 +99,9 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt
99 end 99 end
100 100
101 -- 随机出地图 101 -- 随机出地图
102 - local mapId 102 + local mapId, relayData
103 if isRelay then 103 if isRelay then
104 - local relayData = self:isHaveRelay(level, chapterId) 104 + relayData = self:isHaveRelay(level, chapterId)
105 if relayData then 105 if relayData then
106 mapId = relayData.map 106 mapId = relayData.map
107 else 107 else
@@ -112,10 +112,6 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt @@ -112,10 +112,6 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt
112 mapId = self:randomMapId(chapterId, level) 112 mapId = self:randomMapId(chapterId, level)
113 end 113 end
114 114
115 - if isEnter and not self.owner:checkOverGuide(GuideStep.AdvGuide) then  
116 - mapId = 101  
117 - end  
118 -  
119 self.isRelay = isRelay 115 self.isRelay = isRelay
120 local isNewRelay = false 116 local isNewRelay = false
121 if self.isRelay then -- 中继层 117 if self.isRelay then -- 中继层
@@ -141,9 +137,16 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt @@ -141,9 +137,16 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt
141 137
142 self:checkTask(Adv.TaskType.Arrive) 138 self:checkTask(Adv.TaskType.Arrive)
143 self:checkAdvUnlock(1, self.level) 139 self:checkAdvUnlock(1, self.level)
  140 +
144 if isToNext then 141 if isToNext then
145 self.battle.player:afterLayer() -- 玩家的buff 清理一下 142 self.battle.player:afterLayer() -- 玩家的buff 清理一下
146 end 143 end
  144 +
  145 + -- 中继进入奖励
  146 + if relayData then
  147 + self:awardRelay(relayData, notNotify)
  148 + end
  149 +
147 if not notNotify then 150 if not notNotify then
148 self:saveDB(notNotify) 151 self:saveDB(notNotify)
149 end 152 end
@@ -201,6 +204,44 @@ function Adv:saveDB(notNotify) @@ -201,6 +204,44 @@ function Adv:saveDB(notNotify)
201 self.owner:updateProperties({advInfo = advInfo, advTeam = advTeam}, notNotify) 204 self.owner:updateProperties({advInfo = advInfo, advTeam = advTeam}, notNotify)
202 end 205 end
203 206
  207 +function Adv:awardRelay(relayData, notNotify)
  208 + local gift = {}
  209 +
  210 + if relayData.artifact > 0 then
  211 + local pool = {}
  212 + for id, temp in pairs(csvdb["adv_artifactCsv"]) do
  213 + if not self:isHaveArtifact(id) and self.owner:isArtifactOpen(id, self:isEndless()) then
  214 + table.insert(pool, id)
  215 + end
  216 + end
  217 + for i = 1, math.min(relayData.artifact, #pool) do
  218 + local idx = math.randomInt(1, #pool)
  219 + gift[pool[idx]] = 1
  220 + table.remove(pool, idx)
  221 + end
  222 + end
  223 +
  224 + if relayData.point > 0 then
  225 + gift[ItemId.AdvPoint] = relayData.point
  226 + end
  227 +
  228 + if relayData.otherAward ~= "" then
  229 + for dropId, count in pairs(relayData.otherAward:toNumMap()) do
  230 + for i = 1, count do
  231 + local dropData = csvdb["event_dropCsv"][dropId]
  232 + if dropData then
  233 + local item = dropData["range"]:randWeight(true)
  234 + gift[item[1]] = (gift[item[1]] or 0) + item[2]
  235 + else
  236 + skynet.error(string.format("[ERROR]: event_dropCsv no id %s, adv_chapter_campsite", dropId))
  237 + end
  238 + end
  239 + end
  240 + end
  241 +
  242 + self:award(gift, {notNotify = notNotify, log = {desc = "relayEnter", int1 = self.chapterId, int2 = self.level}})
  243 +end
  244 +
204 function Adv:initSupport(supports) 245 function Adv:initSupport(supports)
205 self.support = {} 246 self.support = {}
206 247
@@ -921,7 +962,7 @@ local function clickOut(self, room, block, params, isExit) @@ -921,7 +962,7 @@ local function clickOut(self, room, block, params, isExit)
921 self:scoreChange(AdvScoreType.Level, curFloorData.advScore) --增加层级加分 962 self:scoreChange(AdvScoreType.Level, curFloorData.advScore) --增加层级加分
922 end 963 end
923 964
924 - if not self:isEndless() and (self.level >= csvdb["adv_chapterCsv"][self.chapterId].limitlevel or not self.owner:advChapterIsOpen(self.chapterId, self.level + 1)) then --关卡结束 965 + if not self:isEndless() and (self.level >= csvdb["adv_chapterCsv"][self.chapterId].limitlevel) then --关卡结束
925 self:over(true) 966 self:over(true)
926 else 967 else
927 self.battle.player:triggerPassive(Passive.DOWN_LAYER) 968 self.battle.player:triggerPassive(Passive.DOWN_LAYER)
src/adv/AdvMap.lua
@@ -291,15 +291,12 @@ createMap = function(self, mapId, isEnter, isNewRelay) @@ -291,15 +291,12 @@ createMap = function(self, mapId, isEnter, isNewRelay)
291 --入口 291 --入口
292 randomFunc[AdvEventType.In] = function()end 292 randomFunc[AdvEventType.In] = function()end
293 --出口 293 --出口
294 - randomFunc[AdvEventType.Out] = function()  
295 - if not self.adv:isEndless() and self.adv.isRelay and not self.adv.owner:checkOverGuide(GuideStep.AdvRelay) then  
296 - return false  
297 - end  
298 - end  
299 - --中继点出口  
300 - randomFunc[AdvEventType.Exit] = function()  
301 - if not self.adv.isRelay or self.adv.owner:checkOverGuide(GuideStep.AdvRelay) then return false end  
302 - end 294 + randomFunc[AdvEventType.Out] = function()end
  295 + -- --中继点出口
  296 + -- randomFunc[AdvEventType.Exit] = function()
  297 + -- -- if not self.adv.isRelay or self.adv.owner:checkOverGuide(GuideStep.AdvRelay) then return false end
  298 + -- return false
  299 + -- end
303 --开放出口 300 --开放出口
304 randomFunc[AdvEventType.InOut] = function() end 301 randomFunc[AdvEventType.InOut] = function() end
305 302
src/models/Role.lua
@@ -4,7 +4,6 @@ local RoleLog = import(&quot;.RoleLog&quot;) --日志相关 @@ -4,7 +4,6 @@ local RoleLog = import(&quot;.RoleLog&quot;) --日志相关
4 local RolePlugin = import(".RolePlugin") --基础功能 4 local RolePlugin = import(".RolePlugin") --基础功能
5 local RoleTimeReset = import(".RoleTimeReset") --时间重置相关 5 local RoleTimeReset = import(".RoleTimeReset") --时间重置相关
6 local RoleTask = import(".RoleTask") --角色任务 6 local RoleTask = import(".RoleTask") --角色任务
7 -local RoleActivity = import(".RoleActivity") --活动相关  
8 local RoleChangeStruct = import(".RoleChangeStruct") --角色数据额结构更改 7 local RoleChangeStruct = import(".RoleChangeStruct") --角色数据额结构更改
9 local RolePvp = import(".RolePvp") -- pvp 8 local RolePvp = import(".RolePvp") -- pvp
10 local RoleCross = import(".RoleCross") -- 跨服务请求相关 9 local RoleCross = import(".RoleCross") -- 跨服务请求相关
@@ -13,7 +12,6 @@ RoleLog.bind(Role) @@ -13,7 +12,6 @@ RoleLog.bind(Role)
13 RolePlugin.bind(Role) 12 RolePlugin.bind(Role)
14 RoleTimeReset.bind(Role) 13 RoleTimeReset.bind(Role)
15 RoleTask.bind(Role) 14 RoleTask.bind(Role)
16 -RoleActivity.bind(Role)  
17 RoleChangeStruct.bind(Role) 15 RoleChangeStruct.bind(Role)
18 RolePvp.bind(Role) 16 RolePvp.bind(Role)
19 RoleCross.bind(Role) 17 RoleCross.bind(Role)
src/models/RoleActivity.lua
  1 +local Activity = class("Activity", require("shared.ModelBase"))
1 2
2 3
3 -local RoleActivity = {} 4 +Activity.ActivityType = {
4 5
5 -function RoleActivity.bind(Role) 6 +}
6 7
  8 +local function checkActivityType(activityType)
  9 + if type(activityType) == "string" then
  10 + activityType = Activity.ActivityType[activityType]
  11 + end
  12 + return activityType
  13 +end
  14 +
  15 +
  16 +function Activity:ctor(properties)
  17 + Activity.super.ctor(self, properties)
  18 +
  19 + self.open = {}
  20 +
  21 +end
7 22
8 23
  24 +Activity.schema = {
  25 + _1 = {"table", {}},
  26 +}
9 27
  28 +function Activity:data()
  29 + return {
  30 + _1 = self:getProperty("_1"),
  31 + }
10 end 32 end
11 33
12 -return RoleActivity  
13 \ No newline at end of file 34 \ No newline at end of file
  35 +
  36 +
  37 +return Activity
14 \ No newline at end of file 38 \ No newline at end of file
src/models/RolePlugin.lua
@@ -924,22 +924,11 @@ function RolePlugin.bind(Role) @@ -924,22 +924,11 @@ function RolePlugin.bind(Role)
924 end 924 end
925 end 925 end
926 926
927 - function Role:advChapterIsOpen(chapterId, layer)  
928 - layer = layer or 1  
929 - local exlayer = math.floor((layer - 1) / 10) * 10 + 1  
930 - if exlayer == 1 then --第一层判断前置  
931 - local hangPass = self:getProperty("hangPass")  
932 - local chapterData = csvdb["adv_chapterCsv"][chapterId]  
933 - if chapterData.prepose ~= 0 and not hangPass[chapterData.prepose] then return false end  
934 - return true  
935 - end  
936 -  
937 - local unlock = {}  
938 - for func , data in pairs(csvdb["unlockCsv"]) do  
939 - if data.type == 1 and chapterId == data.value1 and exlayer == data.value2 then  
940 - return self:isFuncOpen(func)  
941 - end  
942 - end 927 + function Role:advChapterIsOpen(chapterId)
  928 + local hangPass = self:getProperty("hangPass")
  929 + local chapterData = csvdb["adv_chapterCsv"][chapterId]
  930 + if chapterData.prepose ~= 0 and not hangPass[chapterData.prepose] then return false end
  931 + return true
943 end 932 end
944 933
945 function Role:advEventOpenStatus() 934 function Role:advEventOpenStatus()