Commit 916096edc14926fb6b999571986eb0b1c013b0d4

Authored by zhouhaihai
1 parent b176d7d3

神器效果

src/adv/Adv.lua
... ... @@ -205,10 +205,7 @@ function Adv:randomMapId(chapterId, level)
205 205 return
206 206 end
207 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 209 else
213 210 if level > chapterData.limitlevel then
214 211 error("level overflow!")
... ... @@ -261,11 +258,14 @@ function Adv:award(gift, params)
261 258 end
262 259 local origin = items:getv(itemId, 0)
263 260 local nums = origin + count
  261 + if csvdb["adv_artifactCsv"][itemId] then
  262 + nums = self:checkArtifact(itemId, origin, count, nums)
  263 + end
264 264 if nums <= 0 then
265 265 items = items:delk(itemId)
266 266 nums = 0
267 267 else
268   - items = items:incrv(itemId, count)
  268 + items = items:setv(itemId, nums)
269 269 end
270 270 end
271 271  
... ... @@ -273,6 +273,116 @@ function Adv:award(gift, params)
273 273 return tgift
274 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 386 -- 消耗物品 优先冒险背包 --check 只是检查够不够
277 387 function Adv:cost(item, params, check)
278 388 local items = self.owner:getProperty("advItems")
... ... @@ -461,6 +571,7 @@ local function clickDrop(self, room, block, params)
461 571 local reward = {}
462 572 if not block.event.item then return end
463 573 local reward = self:award({[block.event.item[1]] = block.event.item[2]})
  574 + -- local reward = self:award({[5801] = 1})
464 575 block:clear()
465 576 self:backReward(reward)
466 577 return true
... ...
src/adv/AdvCommon.lua
... ... @@ -51,4 +51,16 @@ function AdvCommon.isEndless(chapterId)
51 51 return math.floor(chapterId / 100) == 2
52 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 66 return AdvCommon
55 67 \ No newline at end of file
... ...
src/adv/AdvMap.lua
... ... @@ -348,11 +348,7 @@ end
348 348 getEventLib = function(self, needEventType) -- needEventType 需要的事件
349 349 local chapterId, level = self.adv.chapterId, self.adv.level
350 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 352 end
357 353 local libsToType = {
358 354 ["event_monsterCsv"] = {AdvEventType.Monster, AdvEventType.BOSS, AdvEventType.Monster},
... ...
src/adv/AdvPlayer.lua
... ... @@ -118,6 +118,24 @@ function BaseObject:addBuff(buffId, releaser)
118 118 self.battle.adv:backBuff(self.id, buffId)
119 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 139 function BaseObject:hadBuff(bType)
122 140 for _, buff in ipairs(self.buffs) do
123 141 if not buff.isDel and buff:getType() == bType then
... ... @@ -134,6 +152,7 @@ function BaseObject:hadBuffById(bId)
134 152 end
135 153 end
136 154  
  155 +
137 156 -- 通用的buff 效果汇总 -- 0 固定 1百分比 两种分类
138 157 function BaseObject:getCommonBuffEffect(bType)
139 158 local effect, count = {[0] = 0, [1] = 0}, 0
... ...