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
|
81032a9c
zhouhaihai
抽奖
|
516
|
-- if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end -- 默认解锁
|
b176d7d3
zhouhaihai
冒险成就
|
517
|
|
81032a9c
zhouhaihai
抽奖
|
518
|
local msg = MsgPack.unpack(data)
|
f4c65591
zhouhaihai
抽奖
|
519
|
|
81032a9c
zhouhaihai
抽奖
|
520
521
|
local ptype = msg.ptype -- 池子类型 1, 2
local ctype = msg.ctype -- 抽取次数 1 1次,2 10次
|
f4c65591
zhouhaihai
抽奖
|
522
|
|
81032a9c
zhouhaihai
抽奖
|
523
524
525
526
527
528
|
local countPool = {
[1] = 1,
[2] = 10
}
local count = countPool[ctype]
if not count then return end
|
f4c65591
zhouhaihai
抽奖
|
529
|
|
f4c65591
zhouhaihai
抽奖
|
530
|
|
81032a9c
zhouhaihai
抽奖
|
531
532
533
534
|
local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype]
if not drawTypeData then return end
local drawData = drawTypeData[role:getFuncLv(FuncOpenType.AdvWheelSurf)]
if not drawData then return end
|
f4c65591
zhouhaihai
抽奖
|
535
|
|
81032a9c
zhouhaihai
抽奖
|
536
537
538
|
local costs = drawData.cost:toNumMap()
for id, count_ in pairs(cost) do
costs[id] = count_ * count
|
f4c65591
zhouhaihai
抽奖
|
539
540
|
end
|
81032a9c
zhouhaihai
抽奖
|
541
542
|
if not role:checkItemEnough(costs) then return end
role:costItems(costs)
|
f4c65591
zhouhaihai
抽奖
|
543
|
|
81032a9c
zhouhaihai
抽奖
|
544
545
546
547
548
549
550
551
552
553
554
|
-- 随机池子
local pool = drawData.weight:randWeight()
local reward = {}
local backReward = {}
for i = 1, count do
local gift = drawData["pool" .. pool]:randWeight(true)
reward[gift[1]] = (reward[gift[1]] or 0) + gift[2]
table.insert(backReward, gift)
end
role:award(reward)
SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = backReward}))
|
f4c65591
zhouhaihai
抽奖
|
555
556
557
|
return true
end
|
b176d7d3
zhouhaihai
冒险成就
|
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
|
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 "修改冒险战斗逻辑"
|
579
|
|
23d89d13
zhouahaihai
冒险 结构
|
580
|
return _M
|