diff --git a/src/models/Daily.lua b/src/models/Daily.lua index 0808860..2718a48 100644 --- a/src/models/Daily.lua +++ b/src/models/Daily.lua @@ -69,7 +69,7 @@ function Daily:refreshDailyData(notify) elseif field == "id" then -- skip elseif field == "treasureBase" then - dataMap[field] = globalCsv.idle_treasure_base + dataMap[field] = globalCsv.idle_treasure_base + self.owner:getBnousTreasureBaseMaximum() elseif field == "treasureList" then dataMap[field] = self:getTreasrueList() elseif field == "pvpBought" then diff --git a/src/models/Role.lua b/src/models/Role.lua index 9fa825b..7561a96 100644 --- a/src/models/Role.lua +++ b/src/models/Role.lua @@ -76,7 +76,6 @@ Role.schema = { expireItem = {"table", {}}, --物品过期检查 funcOpen = {"table", {}}, --功能是否开放 funcLv = {"table", {}}, --功能等级 - levelBnous = {"table", {}}, --等级奖励 -- loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL crown = {"number", 0}, -- 看伴娘 silent = {"number", 0}, --禁言解禁时间 @@ -355,7 +354,6 @@ function Role:data() items = self:getProperty("items"):toNumMap(), funcOpen = self:getProperty("funcOpen"), funcLv = self:getProperty("funcLv"), - levelBnous = self:getProperty("levelBnous"), -- loveStatus = self:getProperty("loveStatus"):toNumMap(), timeReset = self:getProperty("timeReset"), diamond = self:getAllDiamond(), diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 44a1e85..9cd1773 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -284,7 +284,6 @@ function RolePlugin.bind(Role) newExp = newExp - csvdb["player_expCsv"][level].exp level = level + 1 self:checkTaskEnter("RoleLevelUp", {level = level}) - self:getLevelBnous(level) else newExp = csvdb["player_expCsv"][level].exp - 1 -- 没有下一级了 经验溢出太多 扣除 end @@ -2760,27 +2759,30 @@ function RolePlugin.bind(Role) function Role:getBnousCrusade(value) local towerBnous = self:getTowerBnousActive() - local levelValue = self:getDeltaValue(self:getProperty("levelBnous")[SystemBnousType.CrusadeTask], value) + local levelBnous = self:getLevelBnous() + local towerValue = self:getDeltaValue(towerBnous[SystemBnousType.CrusadeTask], value) + local levelValue = self:getDeltaValue(levelBnous[SystemBnousType.CrusadeTask], value) return levelValue + towerValue end function Role:getBnousDiner(type, value) local towerBnous = self:getTowerBnousActive() + local levelBnous = self:getLevelBnous() type = type or 1 local result, levelReault if type == 1 then result = towerBnous[SystemBnousType.DinerGet] - levelReault = self:getProperty("levelBnous")[SystemBnousType.DinerGet] + levelReault = levelBnous[SystemBnousType.DinerGet] elseif type == 2 then result = towerBnous[SystemBnousType.DinerLimit] - levelReault = self:getProperty("levelBnous")[SystemBnousType.DinerLimit] + levelReault = levelBnous[SystemBnousType.DinerLimit] elseif type == 3 then result = towerBnous[SystemBnousType.DinerSell] - levelReault = self:getProperty("levelBnous")[SystemBnousType.DinerSell] + levelReault = levelBnous[SystemBnousType.DinerSell] elseif type == 4 then result = towerBnous[SystemBnousType.DinerPrice] - levelReault = self:getProperty("levelBnous")[SystemBnousType.DinerPrice] + levelReault = levelBnous[SystemBnousType.DinerPrice] end return self:getDeltaValue(result, value) + self:getDeltaValue(levelReault, value) end @@ -2798,108 +2800,112 @@ function RolePlugin.bind(Role) end function Role:getBnousAdv() local towerBnous = self:getTowerBnousActive() - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.Adv] or {} - appendBnous(towerBnous[SystemBnousType.Adv], levelBnous) + local levelBnous = self:getLevelBnous() + local adv = levelBnous[SystemBnousType.Adv] or {} + appendBnous(towerBnous[SystemBnousType.Adv], adv) return towerBnous[SystemBnousType.Adv] or {} end function Role:getBnousHangTime() local towerBnous = self:getTowerBnousActive() - local levelBnous = self:getProperty("levelBnous") or {} - local tmptime = 0 - if next(levelBnous) then - tmptime = levelBnous[SystemBnousType.HangTime] or 0 - end + local levelBnous = self:getLevelBnous() + local tmptime = levelBnous[SystemBnousType.HangTime] or 0 return towerBnous[SystemBnousType.HangTime] or 0 + tmptime end function Role:getBnousPvpTicket() local towerBnous = self:getTowerBnousActive() - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.PvpTicket] or {} - appendBnous(towerBnous[SystemBnousType.PvpTicket], levelBnous) + local levelBnous = self:getLevelBnous() + local pvpTicket = levelBnous[SystemBnousType.PvpTicket] or {} + appendBnous(towerBnous[SystemBnousType.PvpTicket], pvpTicket) return towerBnous[SystemBnousType.PvpTicket] or {} end function Role:getBnousSweep() local towerBnous = self:getTowerBnousActive() - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.SweepReward] or {} - appendBnous(towerBnous[SystemBnousType.SweepReward], levelBnous) + local levelBnous = self:getLevelBnous() + local sweepReward = levelBnous[SystemBnousType.SweepReward] or {} + appendBnous(towerBnous[SystemBnousType.SweepReward], sweepReward) return towerBnous[SystemBnousType.SweepReward] or {} end function Role:getBnousDismantlingMaximum() - return self:getProperty("levelBnous")[SystemBnousType.DismantlingMaximum] or 0 + local levelBnous = self:getLevelBnous() + return levelBnous[SystemBnousType.DismantlingMaximum] or 0 end function Role:getBnousDismantlingImproved(value) - local result = self:getProperty("levelBnous")[SystemBnousType.DismantlingImproved] or {} + local levelBnous = self:getLevelBnous() + local result = levelBnous[SystemBnousType.DismantlingImproved] or {} return self:getDeltaValue(result, value) end function Role:getBnousDaily() + local levelBnous = self:getLevelBnous() + local dailyReward = levelBnous[SystemBnousType.DailyReward] or {} local reward = {} - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.DailyReward] or {} - for k, v in pairs(levelBnous) do + for k, v in pairs(dailyReward) do reward[k] = (reward[k] or 0) + v end return reward end function Role:getBnousTreasureBaseMaximum() - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.TreasureBaseMaximum] or 0 - local treasureBase = self.dailyData:getProperty("treasureBase") + levelBnous - self.dailyData:updateProperty({field = "treasureBase", value = treasureBase}) + local levelBnous = self:getLevelBnous() + return levelBnous[SystemBnousType.TreasureBaseMaximum] or 0 end --@upType 加速类型 1探索加速, 2齿轮加速, 3餐厅加速 function Role:getBnousUpSpeedNum(upType) - local levelBnous = self:getProperty("levelBnous")[SystemBnousType.UpSpeedNum] or {} - if next(levelBnous) then - return levelBnous[upType] or 0 - end - return 0 + local levelBnous = self:getLevelBnous() + local upSpeedNum = levelBnous[SystemBnousType.UpSpeedNum] or {} + return upSpeedNum[upType] or 0 end function Role:getBnousChangeBaseCount() - return self:getProperty("levelBnous")[SystemBnousType.ChangeBaseCount] or 0 + local levelBnous = self:getLevelBnous() + return levelBnous[SystemBnousType.ChangeBaseCount] or 0 end function Role:getBnousChangeBuyCount() - return self:getProperty("levelBnous")[SystemBnousType.ChangeBuyCount] or 0 - end - - function Role:getLevelBnous(level) - local levelBnous = self:getProperty("levelBnous") - local additionData = csvdb["level_additionCsv"][level] - if additionData then - local effects = additionData.effect:toTableArraySec() - for _, effect in pairs(effects) do - local pm1, pm2, pm3, pm4 = tonumber(effect[1]), tonumber(effect[2]), tonumber(effect[3]), tonumber(effect[4]) - if not levelBnous[pm1] then - levelBnous[pm1] = {} - end - if pm1 == SystemBnousType.TowerBuff then - - elseif pm1 == SystemBnousType.Adv then - if not levelBnous[pm1][pm4] then - levelBnous[pm1][pm4] = {} + local levelBnous = self:getLevelBnous() + return levelBnous[SystemBnousType.ChangeBuyCount] or 0 + end + + function Role:getLevelBnous() + local levelBnous = {} + local curLevel = self:getProperty("level") + for level, additionData in pairs(csvdb["level_additionCsv"]) do + if level > curLevel then return levelBnous end + if additionData then + local effects = additionData.effect:toTableArraySec() + for _, effect in pairs(effects) do + local pm1, pm2, pm3, pm4 = tonumber(effect[1]), tonumber(effect[2]), tonumber(effect[3]), tonumber(effect[4]) + if not levelBnous[pm1] then + levelBnous[pm1] = {} end - levelBnous[pm1][pm4][pm2] = (levelBnous[pm1][pm4][pm2] or 0) + pm3 - elseif pm1 == SystemBnousType.HangTime or - pm1 == SystemBnousType.DismantlingMaximum or - pm1 == SystemBnousType.TreasureBaseMaximum or - pm1 == SystemBnousType.ChangeBaseCount or - pm1 == SystemBnousType.ChangeBuyCount then - if type(levelBnous[pm1]) == "table" then - levelBnous[pm1] = 0 + if pm1 == SystemBnousType.TowerBuff then + + elseif pm1 == SystemBnousType.Adv then + if not levelBnous[pm1][pm4] then + levelBnous[pm1][pm4] = {} + end + levelBnous[pm1][pm4][pm2] = (levelBnous[pm1][pm4][pm2] or 0) + pm3 + elseif pm1 == SystemBnousType.HangTime or + pm1 == SystemBnousType.DismantlingMaximum or + pm1 == SystemBnousType.TreasureBaseMaximum or + pm1 == SystemBnousType.ChangeBaseCount or + pm1 == SystemBnousType.ChangeBuyCount then + if type(levelBnous[pm1]) == "table" then + levelBnous[pm1] = 0 + end + levelBnous[pm1] = levelBnous[pm1] + pm2 + else + levelBnous[pm1][pm2] = (levelBnous[pm1][pm2] or 0) + pm3 end - levelBnous[pm1] = levelBnous[pm1] + pm2 - else - levelBnous[pm1][pm2] = (levelBnous[pm1][pm2] or 0) + pm3 end end end - self:updateProperty({field = "levelBnous", value= levelBnous}) return levelBnous end -- libgit2 0.21.2