23d89d13
zhouahaihai
冒险 结构
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
local ipairs = ipairs
local table = table
local math = math
local next = next
local string = string
local redisproxy = redisproxy
local MsgPack = MsgPack
local getRandomName = getRandomName
local mcast_util = mcast_util
local string_format = string.format
local tonumber = tonumber
local require = require
local table_insert = table.insert
local tconcat = table.concat
local table_unpack = table.unpack
|
8da953a7
zhouhaihai
无尽模式
|
17
18
|
local AdvCommon = require "adv.AdvCommon"
|
23d89d13
zhouahaihai
冒险 结构
|
19
20
|
local _M = {}
|
09be9059
zhouhaihai
冒险接口
|
21
|
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
22
|
local function checkFormat(role, format, checkAdvTeam)
|
09be9059
zhouhaihai
冒险接口
|
23
24
25
26
27
28
29
30
31
32
|
local advHang = role:getProperty("advHang")
local hadHero = {}
for chapterId, info in pairs(advHang) do
if info.format then
for _, heroId in pairs(info.format.heros) do
hadHero[heroId] = true
end
end
end
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
33
|
if checkAdvTeam then
|
09be9059
zhouhaihai
冒险接口
|
34
35
36
37
38
39
|
for _, heroId in pairs(role:getProperty("advTeam").heros or {}) do
hadHero[heroId] = true
end
end
if not format.leader then return end
|
bfd33de5
zhouhaihai
队长技
|
40
|
if format.leader2 == format.leader then return end
|
09be9059
zhouhaihai
冒险接口
|
41
|
local hadLeader = false
|
bfd33de5
zhouhaihai
队长技
|
42
43
|
local hadLeader2 = false
local heroCount = 0
|
09be9059
zhouhaihai
冒险接口
|
44
45
46
47
48
49
50
|
for slot, heroId in pairs(format.heros) do
if not role.heros[heroId] or hadHero[heroId] then
return
end
if heroId == format.leader then
hadLeader = true
end
|
bfd33de5
zhouhaihai
队长技
|
51
52
53
54
55
56
57
|
if heroId == format.leader2 then
hadLeader2 = true
end
heroCount = heroCount + 1
end
if not hadLeader2 and heroCount >= 2 then
return
|
09be9059
zhouhaihai
冒险接口
|
58
59
60
61
62
|
end
if not hadLeader then return end
return true
end
|
46fac6f1
zhouahaihai
酱料
|
63
|
--开始一个新的关卡
|
23d89d13
zhouahaihai
冒险 结构
|
64
65
66
|
function _M.startAdvRpc( agent, data )
local role = agent.role
local msg = MsgPack.unpack(data)
|
09be9059
zhouhaihai
冒险接口
|
67
68
69
|
local chapterId = msg.chapterId --关卡id
local layer = msg.layer or 1 --选择层数
local format = msg.format --编队
|
8da953a7
zhouhaihai
无尽模式
|
70
71
72
73
|
--上一个关卡结束才可以开始新的关卡
if next(role:getProperty("advInfo")) then return 8 end
|
09be9059
zhouhaihai
冒险接口
|
74
|
local chapterData = csvdb["adv_chapterCsv"][chapterId]
|
8da953a7
zhouhaihai
无尽模式
|
75
|
if not chapterData or layer < 1 then return 1 end
|
09be9059
zhouhaihai
冒险接口
|
76
|
|
e38b9c49
zhouhaihai
无尽次数
|
77
|
--是否是中继层
|
4d943586
zhouhaihai
直通 advt gm
|
78
|
if (layer - 1) % globalCsv.adv_can_out_layer_pre ~= 0 then return 3 end
|
47d5d769
zhouhaihai
中继判断 随机任务
|
79
|
|
47d5d769
zhouhaihai
中继判断 随机任务
|
80
|
local advPass = role:getProperty("advPass")
|
8da953a7
zhouhaihai
无尽模式
|
81
|
if AdvCommon.isEndless(chapterId) then
|
e38b9c49
zhouhaihai
无尽次数
|
82
|
if role.dailyData:getProperty("advElC") >= role:getAdvElLimit() then return 2 end -- 是否有体力
|
8da953a7
zhouhaihai
无尽模式
|
83
84
85
86
87
88
89
90
91
92
93
|
if not role:isFuncOpen(FuncOpenType.AdvEndless) or not role:isFuncOpen(FuncOpenType.AdvRelay) then return 11 end -- 开放了中继模式 和 无尽模式 才可以玩儿无尽模式
local maxl = math.floor(role:getProperty("advElM") / 10) * 10
local openLayer = {}
for i = 0, (globalCsv.adv_endless_open_relay - 1) do
local l = maxl - i * globalCsv.adv_can_out_layer_pre
if l < 0 then
break
end
openLayer[l] = 1
end
if not openLayer[layer - 1] then return 10 end
|
e38b9c49
zhouhaihai
无尽次数
|
94
95
96
97
|
if layer == 1 then
if not role:advChapterIsOpen(chapterId, layer) then return 13 end
end
|
8da953a7
zhouhaihai
无尽模式
|
98
|
else
|
e38b9c49
zhouhaihai
无尽次数
|
99
|
if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return 2 end -- 是否有体力
|
8da953a7
zhouhaihai
无尽模式
|
100
101
102
103
104
105
|
if layer > chapterData.limitlevel then return 4 end
-- 关卡开放判断
if not role:advChapterIsOpen(chapterId, layer) then return 5 end
--中继开放判断
if layer ~= 1 and (not role:isFuncOpen(FuncOpenType.AdvRelay) or (advPass[chapterId] or 0) < (layer - 1)) then return 6 end
end
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
106
107
|
if not checkFormat(role, format) then return 7 end
|
46fac6f1
zhouahaihai
酱料
|
108
|
|
09be9059
zhouhaihai
冒险接口
|
109
110
111
112
|
local advTeam = role:getProperty("advTeam")
table.clear(advTeam)
advTeam.heros = {}
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
113
|
for slot, heroId in pairs(format.heros) do
|
09be9059
zhouhaihai
冒险接口
|
114
115
|
advTeam.heros[slot] = heroId
end
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
116
|
advTeam.leader = format.leader
|
bfd33de5
zhouhaihai
队长技
|
117
|
advTeam.leader2 = format.leader2
|
09be9059
zhouhaihai
冒险接口
|
118
|
role:updateProperty({field = "advTeam", value = advTeam})
|
e38b9c49
zhouhaihai
无尽次数
|
119
120
121
122
123
|
if AdvCommon.isEndless(chapterId) then
role.dailyData:updateProperty({field = "advElC", delta = 1})
else
role.dailyData:updateProperty({field = "advC", delta = 1})
end
|
09be9059
zhouhaihai
冒险接口
|
124
125
|
role:getAdvData():initByChapter(chapterId, layer)
|
53e8037e
zhouhaihai
任务
|
126
|
role:checkTaskEnter("AdvStart", {id = chapterId})
|
f60b89b1
zhouhaihai
奖励副本
|
127
|
role:checkTaskEnter("AdvStartSelf", {id = chapterId})
|
23d89d13
zhouahaihai
冒险 结构
|
128
129
130
131
|
SendPacket(actionCodes.Adv_startAdvRpc, '')
return true
end
|
09be9059
zhouhaihai
冒险接口
|
132
133
|
function _M.startHangRpc(agent, data)
|
46fac6f1
zhouahaihai
酱料
|
134
135
|
local role = agent.role
local msg = MsgPack.unpack(data)
|
09be9059
zhouhaihai
冒险接口
|
136
137
138
139
140
141
142
143
144
145
|
local chapterId = msg.chapterId --关卡id
local format = msg.format --编队
local chapterData = csvdb["adv_chapterCsv"][chapterId]
if not chapterData then return end
local advHang = role:getProperty("advHang")
if advHang[chapterId] then return end --正在挂机
local advPass = role:getProperty("advPass")
|
8da953a7
zhouhaihai
无尽模式
|
146
|
if AdvCommon.isEndless(chapterId) or advPass[chapterId] ~= chapterData.limitlevel then return end -- 没有全通关
|
09be9059
zhouhaihai
冒险接口
|
147
148
149
|
if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return end -- 是否有体力
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
150
|
if not checkFormat(role, format, next(role:getProperty("advInfo"))) then return end --编队是否正确
|
09be9059
zhouhaihai
冒险接口
|
151
152
153
154
155
156
157
158
159
160
161
|
local battleV = 0
for _, heroId in pairs(format.heros) do
local hero = role.heros[heroId]
battleV = battleV + hero:getProperty("battleV")
end
if battleV < chapterData.idleValue then return end -- 战斗力是否满足
local info = {}
info.format = {}
info.format.leader = format.leader
|
bfd33de5
zhouhaihai
队长技
|
162
|
info.format.leader2 = format.leader2
|
09be9059
zhouhaihai
冒险接口
|
163
164
165
166
167
168
|
info.format.heros = {}
for slot, heroId in pairs(format.heros) do
info.format.heros[slot] = heroId
end
info.time = skynet.timex() + chapterData.idleTime --挂机时间
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
169
170
171
172
173
|
-- 没有在战斗 用team来挂机了 把team清掉
if not next(role:getProperty("advInfo")) then
role:updateProperty({field = "advTeam", value = {}})
end
|
09be9059
zhouhaihai
冒险接口
|
174
175
176
|
role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
role.dailyData:updateProperty({field = "advC", delta = 1})
|
53e8037e
zhouhaihai
任务
|
177
|
role:checkTaskEnter("AdvStart", {id = chapterId})
|
09be9059
zhouhaihai
冒险接口
|
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
SendPacket(actionCodes.Adv_startHangRpc, '')
return true
end
function _M.endHangRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local chapterId = msg.chapterId --关卡id
local cancel = msg.cancel --是否是取消
local advHang = role:getProperty("advHang")
local info = advHang[chapterId]
if not info then return end
local chapterData = csvdb["adv_chapterCsv"][chapterId]
if not chapterData then return end
local reward, isFull
if skynet.timex() >= info.time then
reward = role:award(chapterData.idleReward)
else
if cancel then
if role.dailyData:getProperty("advC") <= 0 then
isFull = true
else
role.dailyData:updateProperty({field = "advC", delta = -1})
end
else
|
46fac6f1
zhouahaihai
酱料
|
207
208
209
|
return
end
end
|
09be9059
zhouhaihai
冒险接口
|
210
211
212
213
214
215
216
217
218
219
220
221
|
role:changeUpdates({{type = "advHang", field = chapterId, value = nil}})
SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, isFull = isFull}))
return true
end
function _M.buyAdvCountRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local count = msg.count --购买次数
|
e38b9c49
zhouhaihai
无尽次数
|
222
223
224
225
226
227
228
229
230
231
232
|
local isEl = msg.isEl -- 是否是无尽模式
local cost
if isEl then
if math.illegalNum(count, 1, math.min(globalCsv.adv_endless_daily_buy_count - role.dailyData:getProperty("advElBC"), role.dailyData:getProperty("advElC"))) then return end
cost = {[ItemId.Diamond] = count * globalCsv.adv_endless_daily_buy_cost}
else
if math.illegalNum(count, 1, math.min(globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC"), role.dailyData:getProperty("advC"))) then return end
cost = {[ItemId.Diamond] = count * globalCsv.adv_daily_buy_cost}
end
|
09be9059
zhouhaihai
冒险接口
|
233
234
|
if not role:checkItemEnough(cost) then return end
role:costItems(cost)
|
e38b9c49
zhouhaihai
无尽次数
|
235
236
237
238
239
240
241
|
if isEl then
role.dailyData:updateProperty({field = "advElC", delta = -count})
role.dailyData:updateProperty({field = "advElBC", delta = count})
else
role.dailyData:updateProperty({field = "advC", delta = -count})
role.dailyData:updateProperty({field = "advBC", delta = count})
end
|
09be9059
zhouhaihai
冒险接口
|
242
243
|
SendPacket(actionCodes.Adv_buyAdvCountRpc, '')
|
46fac6f1
zhouahaihai
酱料
|
244
245
246
|
return true
end
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
247
248
249
250
251
252
253
254
255
256
257
|
function _M.finishTaskRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local taskId = msg.taskId -- -1 则是主线任务
local status, reward
if taskId == -1 then
status, reward = adv:finishMTask()
else
status, reward = adv:finishTask(taskId)
|
b176d7d3
zhouhaihai
冒险成就
|
258
259
|
adv:checkAchievement(adv.AchievType.TaskLayer, 1, taskId)
adv:updateAchievement()
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
260
|
end
|
f99f48df
zhouhaihai
冒险任务
|
261
|
adv:updateTask()
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
262
|
if not status then return end
|
53e8037e
zhouhaihai
任务
|
263
|
role:checkTaskEnter("AdvOverTask", {id = taskId})
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
264
265
266
267
|
SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack({reward = reward}))
return true
end
|
46fac6f1
zhouahaihai
酱料
|
268
269
270
271
272
273
|
-- 点击地块(解锁)(触发事件)
function _M.clickBlockRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
274
|
if adv:isWaitChooseArtifact() then return end
|
46fac6f1
zhouahaihai
酱料
|
275
276
277
278
279
280
281
282
283
284
285
|
local status = adv:clickBlock(msg.roomId, msg.blockId, msg)
if not status then return end
SendPacket(actionCodes.Adv_clickBlockRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
--use item 使用背包道具
function _M.useItemRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
25a376de
zhouhaihai
冒险使用道具
|
286
287
288
289
290
291
292
|
local itemId = msg.itemId -- 道具Id
local count = msg.count or 1 --数量
local target = msg.target -- {roomId = 1, blockId = 1} 选择的目标
local itemData = csvdb["adv_itemCsv"][itemId]
if not itemData then return end
|
46fac6f1
zhouahaihai
酱料
|
293
|
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
294
|
if adv:isWaitChooseArtifact() then return end
|
25a376de
zhouhaihai
冒险使用道具
|
295
296
297
298
299
300
301
302
303
304
305
|
--重置数量
if itemData["function"] == 0 or itemData["function"] == 2 then count = 1 end
if not adv:cost({[itemId] = count}, {}, true) then return true end
local status = true
for i = 1, count do
status = status and adv:doActive(itemData.effect, target) -- target
if not status then
break
end
end
|
46fac6f1
zhouahaihai
酱料
|
306
|
if not status then return end
|
25a376de
zhouhaihai
冒险使用道具
|
307
308
309
310
|
--消耗
if itemData["function"] == 0 or itemData["function"] == 1 then
adv:cost({[itemId] = count}, {})
|
85ded242
zhouhaihai
丰富返回事件
|
311
|
adv:backUse({[itemId] = count})
|
25a376de
zhouhaihai
冒险使用道具
|
312
313
|
end
|
db3c56ad
zhouhaihai
冒险相关
|
314
|
adv:checkAchievement(adv.AchievType.UseItem, count, itemId)
|
25a376de
zhouhaihai
冒险使用道具
|
315
316
317
|
adv:afterRound()
adv:saveDB()
|
46fac6f1
zhouahaihai
酱料
|
318
319
320
321
|
SendPacket(actionCodes.Adv_useItemRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
42f2d1d3
suhongyang
战斗内技能序列逻辑
|
322
|
--使用营养技能
|
d27ad5e0
suhongyang
使用营养技
|
323
|
function _M.usePotionRpc(agent, data)
|
46fac6f1
zhouahaihai
酱料
|
324
325
|
local role = agent.role
local msg = MsgPack.unpack(data)
|
4f0a5fae
zhouhaihai
营养剂
|
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
local potionId = msg.potionId -- 营养剂Id
local target = msg.target -- {roomId = 1, blockId = 1} 选择的目标
local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 0)
if potionLv == 0 then return 1 end
local potionSet = csvdb["adv_potionCsv"][potionId]
if not potionSet then return 2 end
local potionData = potionSet[potionLv]
if not potionData then return 3 end
local potionBag = role:getProperty("potionBag")
local own = potionBag[potionId] or 0
if own <= 0 then return 4 end
|
46fac6f1
zhouahaihai
酱料
|
341
|
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
342
343
|
if adv:isWaitChooseArtifact() then return end
|
4f0a5fae
zhouhaihai
营养剂
|
344
|
local status = adv:doActive(potionData.effect, target) -- target
|
46fac6f1
zhouahaihai
酱料
|
345
|
if not status then return end
|
4f0a5fae
zhouhaihai
营养剂
|
346
347
348
|
potionBag[potionId] = own - 1
role:updateProperty({field = "potionBag", value = potionBag})
|
85ded242
zhouhaihai
丰富返回事件
|
349
|
adv:pushBackEvent(AdvBackEventType.Potion, {id = potionId})
|
4f0a5fae
zhouhaihai
营养剂
|
350
351
352
353
|
adv:afterRound()
adv:saveDB()
role:checkTaskEnter("AdvUsePotion")
|
d27ad5e0
suhongyang
使用营养技
|
354
|
SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()}))
|
46fac6f1
zhouahaihai
酱料
|
355
356
|
return true
end
|
23d89d13
zhouahaihai
冒险 结构
|
357
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
|
-- 选择神器
function _M.chooseArtifactRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
if not msg.idx then return end
if not adv:isWaitChooseArtifact() then return end
local status = adv:chooseArtifact(msg.idx)
if not status then return end
adv:saveDB()
SendPacket(actionCodes.Adv_chooseArtifactRpc, '')
return true
end
-- 穿戴神器
function _M.wearArtifactRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local slot = msg.slot
local id = msg.id
local adv = role:getAdvData()
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
383
384
385
|
if math.illegalNum(slot, 1, 5) then return 1 end
if not adv:isHaveArtifact(id) then return 2 end
if adv:isWaitChooseArtifact() then return 3 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
386
387
|
local status = adv:wearArtifact(slot, id)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
388
|
if not status then return 4 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
389
390
391
392
393
394
395
396
397
398
399
400
401
|
adv:saveDB()
SendPacket(actionCodes.Adv_wearArtifactRpc, '')
return true
end
-- 升级神器
function _M.upArtifactRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local adv = role:getAdvData()
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
402
|
if adv:isWaitChooseArtifact() then return 1 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
403
|
local curLevel = adv:isHaveArtifact(id)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
404
405
406
407
|
if not curLevel then return 2 end
if not role:isArtifactOpen(id, adv:isEndless(), curLevel + 1) then return 3 end
local cost = csvdb["adv_artifactCsv"][id][curLevel].exp:toNumMap()
if not adv:cost(cost, {}, true) then return 4 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
408
409
|
local status = adv:artifactLevelUp(id)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
410
|
if not status then return 5 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
411
|
adv:cost(cost, {})
|
85ded242
zhouhaihai
丰富返回事件
|
412
|
adv:backCost(cost)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
413
414
415
416
417
418
419
|
if status == 1 then -- 现在穿着呢。更新下
adv:saveDB()
end
SendPacket(actionCodes.Adv_upArtifactRpc, '')
return true
end
|
ec87b4a5
zhouahaihai
冒险 完善
|
420
421
422
423
424
425
426
427
428
429
|
--退出
function _M.exitAdvRpc(agent, data)
local role = agent.role
-- local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:exit() -- target {roomId = 1, blockId = 1} 选择的目标
SendPacket(actionCodes.Adv_exitAdvRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
12f7b52c
zhouhaihai
冒险战斗
|
430
431
432
433
434
435
436
437
438
439
440
441
442
|
--开始战斗
function _M.startBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
-- 校验一下信息
local roomId = msg.roomId
local blockId = msg.blockId
local monsterId = msg.monsterId
local enemyId = msg.enemyId
if not enemyId then return end
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
443
|
if adv:isWaitChooseArtifact() then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
local enemy = adv.battle:getEnemyById(enemyId)
if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId or enemy.lock or enemy.isDead then return end
local key = tostring(math.random())
adv.__battleCache = {
enemyId = enemyId,
key = key
}
SendPacket(actionCodes.Adv_startBattleRpc, MsgPack.pack({key = key}))
return true
end
-- 结束战斗
function _M.endBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local roomId = msg.roomId
local blockId = msg.blockId
local monsterId = msg.monsterId
local enemyId = msg.enemyId
local key = msg.key
local player = msg.player
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
467
|
local bySkill = msg.bySkill --死于 技能
|
12f7b52c
zhouhaihai
冒险战斗
|
468
469
470
|
if not player or not player.hp or not player.sp or not enemyId or not key then return end
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
471
|
if adv:isWaitChooseArtifact() then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
472
473
474
475
476
477
478
479
|
-- 校验
if not adv.__battleCache then return end
if adv.__battleCache.enemyId ~= enemyId then return end
local enemy = adv.battle:getEnemyById(enemyId)
if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId then return end
adv.__battleCache = nil
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
480
|
local status = adv:clickBlock(roomId, blockId, {player = player, bySkill = bySkill})
|
12f7b52c
zhouhaihai
冒险战斗
|
481
482
483
484
485
|
if not status then return end
SendPacket(actionCodes.Adv_endBattleRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
bab30666
zhouhaihai
增加通用功能等级 字段
|
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
|
function _M.workshopRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local count = msg.count or 1
local mergeData = csvdb["adv_mergeCsv"][id]
if not mergeData then return 1 end
if not role:isFuncOpen(FuncOpenType.AdvWS) or role:getFuncLv(FuncOpenType.AdvWS) < mergeData.unlock then return 2 end
local advWs = role.dailyData:getProperty("advWs")
if math.illegalNum(count, 1, mergeData.limit - (advWs[id] or 0)) then return 3 end
local cost = mergeData.formula:toNumMap()
for k, v in pairs(cost) do
cost[k] = v * count
end
if not role:checkItemEnough(cost) then return 4 end
role:costItems(cost)
advWs[id] = (advWs[id] or 0) + count
|
ad88ba14
zhouhaihai
工坊 bug
|
508
|
role.dailyData:updateProperty({field = "advWs", value = advWs})
|
bab30666
zhouhaihai
增加通用功能等级 字段
|
509
510
511
512
|
local reward = role:award({[id] = count})
SendPacket(actionCodes.Adv_workshopRpc, MsgPack.pack({reward = reward}))
return true
end
|
12f7b52c
zhouhaihai
冒险战斗
|
513
|
|
f4c65591
zhouhaihai
抽奖
|
514
515
|
function _M.wheelSurfRpc(agent, data)
local role = agent.role
|
f4c65591
zhouhaihai
抽奖
|
516
|
if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end
|
b176d7d3
zhouhaihai
冒险成就
|
517
|
|
f4c65591
zhouhaihai
抽奖
|
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
|
if not role._advWheelSurfCount then return end
local drawData = csvdb["adv_wheelsurfCsv"][role:getFuncLv(FuncOpenType.AdvWheelSurf)]
if not drawData then return end
local costs = drawData.cost:toArray(true, "=")
local maxt = math.max(#costs, drawData.time)
if role._advWheelSurfCount >= maxt then
role._advWheelSurfCount = nil
return
end
local cost = costs[role._advWheelSurfCount + 1]
if cost > 0 then
if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end
role:costItems({[ItemId.Diamond] = cost})
end
role._advWheelSurfCount = role._advWheelSurfCount + 1
if role._advWheelSurfCount >= maxt then
role._advWheelSurfCount = nil
end
local gift = drawData.pool:randWeight(true)
local reward = role:award({[gift[1]] = gift[2]})
SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = reward}))
return true
end
|
b176d7d3
zhouhaihai
冒险成就
|
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
|
function _M.finishAchievRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
-- local ctype = msg.ctype -- 领取类型 1 成就 2 pt累计奖励
local chapterId = msg.chapterId --章节id
local taskId = msg.taskId -- 领取id
local adv = role:getAdvData()
local status, reward
-- if ctype == 1 then
-- status = adv:finishAchievement(chapterId, taskId)
-- elseif ctype == 2 then
status, reward = adv:getAchievementReward(chapterId, taskId)
-- end
if not status then return end
adv:updateAchievement()
SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack({reward = reward}))
return true
end
|
ae20365b
suhongyang
Revert "修改冒险战斗逻辑"
|
570
|
|
23d89d13
zhouahaihai
冒险 结构
|
571
|
return _M
|