Commit 9489e76155dc1b576af2758b361125db9015d3b3

Authored by zhangqijia
1 parent 84cbc53e

feat: 探索加速、拾荒体力、奖励副本购买次数去除上限

@@ -433,7 +433,7 @@ SystemBnousType = { @@ -433,7 +433,7 @@ SystemBnousType = {
433 UpSpeedNum = 15, -- 加速次数上限增加 15=1探索加速or 2齿轮加速or 3餐厅加速=增加次数 433 UpSpeedNum = 15, -- 加速次数上限增加 15=1探索加速or 2齿轮加速or 3餐厅加速=增加次数
434 ChangeBaseCount = 16, -- 每日奖励关卡挑战卡基础数量增加 434 ChangeBaseCount = 16, -- 每日奖励关卡挑战卡基础数量增加
435 ChangeBuyCount = 17, -- 每日奖励关卡挑战卡可购买次数增加, 435 ChangeBuyCount = 17, -- 每日奖励关卡挑战卡可购买次数增加,
436 - ExtraProp = 18, -- 每次探索加速额外获得道具 436 + ExtraProps= 18, -- 每次探索加速额外获得道具
437 AccountLevel = 19, -- 账号等级提升角色等级上限 437 AccountLevel = 19, -- 账号等级提升角色等级上限
438 } 438 }
439 439
src/actions/AdvAction.lua
@@ -506,14 +506,15 @@ function _M.buyAdvCountRpc(agent , data) @@ -506,14 +506,15 @@ function _M.buyAdvCountRpc(agent , data)
506 local msg = MsgPack.unpack(data) 506 local msg = MsgPack.unpack(data)
507 507
508 local count = msg.count --购买次数 508 local count = msg.count --购买次数
509 - local isEl = msg.isEl -- 是否是无尽模式 509 + local isEl = msg.isEl -- 是否是无尽模式 国服没有
510 local cost 510 local cost
511 if isEl then 511 if isEl then
512 if math.illegalNum(count, 1, globalCsv.adv_endless_daily_buy_count - role.dailyData:getProperty("advElBC")) then return end 512 if math.illegalNum(count, 1, globalCsv.adv_endless_daily_buy_count - role.dailyData:getProperty("advElBC")) then return end
513 cost = {[ItemId.Jade] = count * globalCsv.adv_endless_daily_buy_cost} 513 cost = {[ItemId.Jade] = count * globalCsv.adv_endless_daily_buy_cost}
514 else 514 else
515 - if math.illegalNum(count, 1, globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC")) then return end  
516 - cost = {[ItemId.Jade] = count * globalCsv.adv_daily_buy_cost} 515 + --if math.illegalNum(count, 1, globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC")) then return end
  516 + local advCount = (role.dailyData:getProperty("advBC") + count ) * globalCsv.adv_daily_buy_num
  517 + cost = {[ItemId.Jade] = table.findMinKeyByItem(globalCsv.adv_buy_cost, advCount)}
517 end 518 end
518 519
519 520
src/actions/HangAction.lua
@@ -477,24 +477,11 @@ function _M.quickRpc(agent , data) @@ -477,24 +477,11 @@ function _M.quickRpc(agent , data)
477 local expCarbonData = hangInfo.expData or {} 477 local expCarbonData = hangInfo.expData or {}
478 478
479 local curCount = role.dailyData:getProperty("hangQC") + 1 479 local curCount = role.dailyData:getProperty("hangQC") + 1
480 - local costs = globalCsv.idle_quickproduce_cost:toArray(true, "=") 480 + local curT = curCount * (globalCsv.idle_quickproduce_time / 3600)
  481 + local costCount = table.findMinKeyByItem(globalCsv.idle_quickproduce_cost, curT)
481 482
482 - -- 增加今日探索加速次数  
483 - local maxIdx = #costs  
484 - local maxCount = maxIdx + role:getBnousUpSpeedNum(UpSpeedType.ExplorationUpSpeed)  
485 - if curCount > maxCount then return end  
486 -  
487 - if curCount > maxIdx then  
488 - for idx = maxIdx+1, curCount do  
489 - costs[idx] = costs[maxIdx]  
490 - end  
491 - end  
492 -  
493 - if not costs[curCount] then return end  
494 - if costs[curCount] > 0 then  
495 - if not role:checkItemEnough({[ItemId.Jade] = costs[curCount]}) then return end  
496 - role:costItems({[ItemId.Jade] = costs[curCount]}, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})  
497 - end 483 + if not role:checkItemEnough({[ItemId.Jade] = costCount}) then return end
  484 + role:costItems({[ItemId.Jade] = costCount}, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
498 485
499 role.dailyData:updateProperty({field = "hangQC", value = curCount}) 486 role.dailyData:updateProperty({field = "hangQC", value = curCount})
500 487
@@ -540,6 +527,14 @@ function _M.quickRpc(agent , data) @@ -540,6 +527,14 @@ function _M.quickRpc(agent , data)
540 reward[k] = (reward[k] or 0) + v 527 reward[k] = (reward[k] or 0) + v
541 end 528 end
542 529
  530 + --每次探索加速额外获得道具
  531 + local extraProps = role:getBnousExtraProps()
  532 + if next(extraProps) then
  533 + for k, v in pairs(extraProps) do
  534 + reward[k] = (reward[k] or 0) + v
  535 + end
  536 + end
  537 +
543 local change 538 local change
544 reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}}) 539 reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
545 if reward[ItemId.Gold] then 540 if reward[ItemId.Gold] then
@@ -584,13 +579,16 @@ function _M.buyBonusCountRpc(agent, data) @@ -584,13 +579,16 @@ function _M.buyBonusCountRpc(agent, data)
584 local bonusC = role.dailyData:getProperty("bonusC") 579 local bonusC = role.dailyData:getProperty("bonusC")
585 local extraCnt = role.storeData:getBonusExtraFightCount() 580 local extraCnt = role.storeData:getBonusExtraFightCount()
586 bonusC[btype] = bonusC[btype] or {c = 0, b = 0} 581 bonusC[btype] = bonusC[btype] or {c = 0, b = 0}
587 - local lastCount = (globalCsv.bonus_daily_buy_count + role:getBnousChangeBuyCount()) * coef + extraCnt - bonusC[btype]["b"]  
588 - if math.illegalNum(count, 1, lastCount) then return 1 end 582 + --local lastCount = (globalCsv.bonus_daily_buy_count + role:getBnousChangeBuyCount()) * coef + extraCnt - bonusC[btype]["b"]
  583 + --if math.illegalNum(count, 1, lastCount) then return 1 end
  584 +
  585 + local costCount = bonusC[btype]["b"] + count
  586 + local cost = table.findMinKeyByItem(globalCsv.bonus_buy_cost, costCount)
589 587
590 - if not role:checkItemEnough({[ItemId.Jade] = globalCsv.bonus_buy_cost * count}) then return 2 end 588 + if not role:checkItemEnough({[ItemId.Jade] = cost}) then return 2 end
591 589
592 - role:costItems({[ItemId.Jade] = globalCsv.bonus_buy_cost * count}, {log = {desc = "buyBonusCount", int1 = btype, int2 = count}})  
593 - bonusC[btype]["b"] = bonusC[btype]["b"] + count 590 + role:costItems({[ItemId.Jade] = cost}, {log = {desc = "buyBonusCount", int1 = btype, int2 = count}})
  591 + bonusC[btype]["b"] = costCount
594 bonusC[btype]["c"] = bonusC[btype]["c"] - count 592 bonusC[btype]["c"] = bonusC[btype]["c"] - count
595 593
596 role.dailyData:updateProperty({field = "bonusC", value = bonusC}) 594 role.dailyData:updateProperty({field = "bonusC", value = bonusC})
src/models/RolePlugin.lua
@@ -3036,6 +3036,11 @@ function RolePlugin.bind(Role) @@ -3036,6 +3036,11 @@ function RolePlugin.bind(Role)
3036 return levelBnous[SystemBnousType.AccountLevel] or 0 3036 return levelBnous[SystemBnousType.AccountLevel] or 0
3037 end 3037 end
3038 3038
  3039 + function Role:getBnousExtraProps()
  3040 + local levelBnous = self:getLevelBnous()
  3041 + return levelBnous[SystemBnousType.ExtraProps] or {}
  3042 + end
  3043 +
3039 function Role:getLevelBnous() 3044 function Role:getLevelBnous()
3040 local levelBnous = {} 3045 local levelBnous = {}
3041 local curLevel = self:getProperty("level") 3046 local curLevel = self:getProperty("level")
src/shared/functions.lua
@@ -865,6 +865,31 @@ function table.array2Table(arr) @@ -865,6 +865,31 @@ function table.array2Table(arr)
865 return ret 865 return ret
866 end 866 end
867 867
  868 +function table.findMinKeyByItem(t, item)
  869 + if not t[item] then
  870 + local tk = {}
  871 + for k, v in pairs(t) do
  872 + table.insert(tk, k)
  873 + end
  874 + if next(tk) then
  875 + local max = table.maxkey(tk)
  876 + if item > max then return t[max] end
  877 +
  878 + table.insert(tk, item)
  879 + table.sort(tk)
  880 + local index = 0
  881 + for i, k in ipairs(tk) do
  882 + if k == item then
  883 + index = i - 1
  884 + break
  885 + end
  886 + end
  887 + return t[tk[index]]
  888 + end
  889 + else
  890 + return t[item]
  891 + end
  892 +end
868 893
869 function table.rewardMerge(dest, src) 894 function table.rewardMerge(dest, src)
870 for k, v in pairs(src) do 895 for k, v in pairs(src) do