Commit 916096edc14926fb6b999571986eb0b1c013b0d4
1 parent
b176d7d3
神器效果
Showing
4 changed files
with
148 additions
and
10 deletions
Show diff stats
src/adv/Adv.lua
@@ -205,10 +205,7 @@ function Adv:randomMapId(chapterId, level) | @@ -205,10 +205,7 @@ function Adv:randomMapId(chapterId, level) | ||
205 | return | 205 | return |
206 | end | 206 | end |
207 | if AdvCommon.isEndless(chapterId) then | 207 | if AdvCommon.isEndless(chapterId) then |
208 | - level = level % chapterData.limitlevel | ||
209 | - if level == 0 then | ||
210 | - level = chapterData.limitlevel | ||
211 | - end | 208 | + level = AdvCommon.getEndlessDataLv(chapterId, level) |
212 | else | 209 | else |
213 | if level > chapterData.limitlevel then | 210 | if level > chapterData.limitlevel then |
214 | error("level overflow!") | 211 | error("level overflow!") |
@@ -261,11 +258,14 @@ function Adv:award(gift, params) | @@ -261,11 +258,14 @@ function Adv:award(gift, params) | ||
261 | end | 258 | end |
262 | local origin = items:getv(itemId, 0) | 259 | local origin = items:getv(itemId, 0) |
263 | local nums = origin + count | 260 | local nums = origin + count |
261 | + if csvdb["adv_artifactCsv"][itemId] then | ||
262 | + nums = self:checkArtifact(itemId, origin, count, nums) | ||
263 | + end | ||
264 | if nums <= 0 then | 264 | if nums <= 0 then |
265 | items = items:delk(itemId) | 265 | items = items:delk(itemId) |
266 | nums = 0 | 266 | nums = 0 |
267 | else | 267 | else |
268 | - items = items:incrv(itemId, count) | 268 | + items = items:setv(itemId, nums) |
269 | end | 269 | end |
270 | end | 270 | end |
271 | 271 | ||
@@ -273,6 +273,116 @@ function Adv:award(gift, params) | @@ -273,6 +273,116 @@ function Adv:award(gift, params) | ||
273 | return tgift | 273 | return tgift |
274 | end | 274 | end |
275 | 275 | ||
276 | + | ||
277 | +function Adv:delArtifactEffect(effectType, effects) | ||
278 | + if effectType == 1 then | ||
279 | + for _, id in ipairs(effects:toArray(true, "=")) do | ||
280 | + self.battle.player:delPassiveById(id) | ||
281 | + end | ||
282 | + elseif effectType == 2 then | ||
283 | + for _, id in ipairs(effects:toArray(true, "=")) do | ||
284 | + self.battle.player:delBuffById(id) | ||
285 | + end | ||
286 | + end | ||
287 | +end | ||
288 | + | ||
289 | +function Adv:addArtifactEffect(effectType, effects) | ||
290 | + if effectType == 1 then | ||
291 | + for _, id in ipairs(effects:toArray(true, "=")) do | ||
292 | + self.battle.player:addPassive({id = id}) | ||
293 | + end | ||
294 | + elseif effectType == 2 then | ||
295 | + for _, id in ipairs(effects:toArray(true, "=")) do | ||
296 | + self.battle.player:addBuff(id) | ||
297 | + end | ||
298 | + end | ||
299 | +end | ||
300 | +-- 检查神器 | ||
301 | +function Adv:checkArtifact(itemId, origin, count, nums) | ||
302 | + local artifactData = csvdb["adv_artifactCsv"][itemId] | ||
303 | + if count == 0 or not artifactData then return nums end | ||
304 | + local advItems = self.owner:getProperty("advItems") | ||
305 | + if count < 0 then --删除 | ||
306 | + nums = 0 | ||
307 | + local curData = artifactData[origin] | ||
308 | + if curData then | ||
309 | + -- 删除自己的效果 | ||
310 | + self:delArtifactEffect(curData.type, curData.effect) | ||
311 | + | ||
312 | + --删除组合效果 | ||
313 | + if curData.comboId ~= 0 then | ||
314 | + local comboLv = advItems:getv(curData.comboId, 0) | ||
315 | + if comboLv ~= 0 then | ||
316 | + --删除自己的组合效果 | ||
317 | + if curData.comboType == 1 or curData.comboType == 2 then | ||
318 | + self:delArtifactEffect(curData.comboType, curData.comboEffect) | ||
319 | + elseif curData.comboType == 3 then | ||
320 | + self:delArtifactEffect(curData.type, curData.comboEffect) | ||
321 | + end | ||
322 | + | ||
323 | + -- 删除组合的组合效果 | ||
324 | + local comboData = (csvdb["adv_artifactCsv"][curData.comboId] or {})[comboLv] | ||
325 | + if comboData then | ||
326 | + if comboData.comboType == 1 or comboData.comboType == 2 then | ||
327 | + self:delArtifactEffect(comboData.comboType, comboData.comboEffect) | ||
328 | + elseif comboData.comboType == 3 then | ||
329 | + self:delArtifactEffect(comboData.type, comboData.comboEffect) | ||
330 | + self:addArtifactEffect(comboData.type, comboData.effect) | ||
331 | + end | ||
332 | + end | ||
333 | + end | ||
334 | + end | ||
335 | + end | ||
336 | + else | ||
337 | + nums = math.max(0, math.min(nums, #artifactData)) | ||
338 | + if nums == origin then return nums end | ||
339 | + if origin == 0 then --初始获得 | ||
340 | + local curData = artifactData[nums] | ||
341 | + local addSelfEffect = true | ||
342 | + --查看是否有组合 | ||
343 | + if curData.comboId ~= 0 then | ||
344 | + local comboLv = advItems:getv(curData.comboId, 0) | ||
345 | + if comboLv ~= 0 then | ||
346 | + --自己的组合效果 | ||
347 | + if curData.comboType == 1 or curData.comboType == 2 then | ||
348 | + self:addArtifactEffect(curData.comboType, curData.comboEffect) | ||
349 | + elseif curData.comboType == 3 then | ||
350 | + self:addArtifactEffect(curData.type, curData.comboEffect) | ||
351 | + addSelfEffect = false | ||
352 | + end | ||
353 | + | ||
354 | + --对方的组合效果 | ||
355 | + local comboData = (csvdb["adv_artifactCsv"][curData.comboId] or {})[comboLv] | ||
356 | + if comboData then | ||
357 | + if comboData.comboType == 1 or comboData.comboType == 2 then | ||
358 | + self:addArtifactEffect(comboData.comboType, comboData.comboEffect) | ||
359 | + elseif comboData.comboType == 3 then | ||
360 | + self:delArtifactEffect(comboData.type, comboData.effect) | ||
361 | + self:addArtifactEffect(comboData.type, comboData.comboEffect) | ||
362 | + end | ||
363 | + end | ||
364 | + end | ||
365 | + end | ||
366 | + if addSelfEffect then | ||
367 | + self:addArtifactEffect(curData.type, curData.effect) | ||
368 | + end | ||
369 | + else --升级 | ||
370 | + local originData = artifactData[origin] | ||
371 | + local curData = artifactData[nums] | ||
372 | + | ||
373 | + if originData then | ||
374 | + self:delArtifactEffect(originData.type, originData.effect) | ||
375 | + end | ||
376 | + | ||
377 | + if curData then | ||
378 | + self:addArtifactEffect(curData.type, curData.effect) | ||
379 | + end | ||
380 | + end | ||
381 | + end | ||
382 | + return nums | ||
383 | +end | ||
384 | + | ||
385 | + | ||
276 | -- 消耗物品 优先冒险背包 --check 只是检查够不够 | 386 | -- 消耗物品 优先冒险背包 --check 只是检查够不够 |
277 | function Adv:cost(item, params, check) | 387 | function Adv:cost(item, params, check) |
278 | local items = self.owner:getProperty("advItems") | 388 | local items = self.owner:getProperty("advItems") |
@@ -461,6 +571,7 @@ local function clickDrop(self, room, block, params) | @@ -461,6 +571,7 @@ local function clickDrop(self, room, block, params) | ||
461 | local reward = {} | 571 | local reward = {} |
462 | if not block.event.item then return end | 572 | if not block.event.item then return end |
463 | local reward = self:award({[block.event.item[1]] = block.event.item[2]}) | 573 | local reward = self:award({[block.event.item[1]] = block.event.item[2]}) |
574 | + -- local reward = self:award({[5801] = 1}) | ||
464 | block:clear() | 575 | block:clear() |
465 | self:backReward(reward) | 576 | self:backReward(reward) |
466 | return true | 577 | return true |
src/adv/AdvCommon.lua
@@ -51,4 +51,16 @@ function AdvCommon.isEndless(chapterId) | @@ -51,4 +51,16 @@ function AdvCommon.isEndless(chapterId) | ||
51 | return math.floor(chapterId / 100) == 2 | 51 | return math.floor(chapterId / 100) == 2 |
52 | end | 52 | end |
53 | 53 | ||
54 | +function AdvCommon.getEndlessDataLv(chapterId, level) | ||
55 | + local chapterData = csvdb["adv_chapterCsv"][chapterId] | ||
56 | + if level > globalCsv.adv_endless_custom_layer then | ||
57 | + level = (level - globalCsv.adv_endless_custom_layer) % chapterData.limitlevel | ||
58 | + if level == 0 then | ||
59 | + level = chapterData.limitlevel | ||
60 | + end | ||
61 | + level = level + globalCsv.adv_endless_custom_layer | ||
62 | + end | ||
63 | + return level | ||
64 | +end | ||
65 | + | ||
54 | return AdvCommon | 66 | return AdvCommon |
55 | \ No newline at end of file | 67 | \ No newline at end of file |
src/adv/AdvMap.lua
@@ -348,11 +348,7 @@ end | @@ -348,11 +348,7 @@ end | ||
348 | getEventLib = function(self, needEventType) -- needEventType 需要的事件 | 348 | getEventLib = function(self, needEventType) -- needEventType 需要的事件 |
349 | local chapterId, level = self.adv.chapterId, self.adv.level | 349 | local chapterId, level = self.adv.chapterId, self.adv.level |
350 | if AdvCommon.isEndless(chapterId) then | 350 | if AdvCommon.isEndless(chapterId) then |
351 | - local chapterData = csvdb["adv_chapterCsv"][chapterId] | ||
352 | - level = level % chapterData.limitlevel | ||
353 | - if level == 0 then | ||
354 | - level = chapterData.limitlevel | ||
355 | - end | 351 | + level = AdvCommon.getEndlessDataLv(chapterId, level) |
356 | end | 352 | end |
357 | local libsToType = { | 353 | local libsToType = { |
358 | ["event_monsterCsv"] = {AdvEventType.Monster, AdvEventType.BOSS, AdvEventType.Monster}, | 354 | ["event_monsterCsv"] = {AdvEventType.Monster, AdvEventType.BOSS, AdvEventType.Monster}, |
src/adv/AdvPlayer.lua
@@ -118,6 +118,24 @@ function BaseObject:addBuff(buffId, releaser) | @@ -118,6 +118,24 @@ function BaseObject:addBuff(buffId, releaser) | ||
118 | self.battle.adv:backBuff(self.id, buffId) | 118 | self.battle.adv:backBuff(self.id, buffId) |
119 | end | 119 | end |
120 | 120 | ||
121 | +function BaseObject:delBuffById(bId) | ||
122 | + for _, buff in ipairs(self.buffs) do | ||
123 | + if not buff.isDel and buff.id == bId then | ||
124 | + buff.isDel = true | ||
125 | + return buff | ||
126 | + end | ||
127 | + end | ||
128 | +end | ||
129 | + | ||
130 | +function BaseObject:delPassiveById(pId) | ||
131 | + for _, passive in ipairs(self.passives) do | ||
132 | + if not passive.isDel and passive.id == pId then | ||
133 | + passive.isDel = true | ||
134 | + return passive | ||
135 | + end | ||
136 | + end | ||
137 | +end | ||
138 | + | ||
121 | function BaseObject:hadBuff(bType) | 139 | function BaseObject:hadBuff(bType) |
122 | for _, buff in ipairs(self.buffs) do | 140 | for _, buff in ipairs(self.buffs) do |
123 | if not buff.isDel and buff:getType() == bType then | 141 | if not buff.isDel and buff:getType() == bType then |
@@ -134,6 +152,7 @@ function BaseObject:hadBuffById(bId) | @@ -134,6 +152,7 @@ function BaseObject:hadBuffById(bId) | ||
134 | end | 152 | end |
135 | end | 153 | end |
136 | 154 | ||
155 | + | ||
137 | -- 通用的buff 效果汇总 -- 0 固定 1百分比 两种分类 | 156 | -- 通用的buff 效果汇总 -- 0 固定 1百分比 两种分类 |
138 | function BaseObject:getCommonBuffEffect(bType) | 157 | function BaseObject:getCommonBuffEffect(bType) |
139 | local effect, count = {[0] = 0, [1] = 0}, 0 | 158 | local effect, count = {[0] = 0, [1] = 0}, 0 |