From 4b7c7c96e96f38be58634e31aa242ddc82d920c0 Mon Sep 17 00:00:00 2001 From: zhouahaihai Date: Wed, 13 Mar 2019 15:22:02 +0800 Subject: [PATCH] 增加 清空 挂机 冒险gm 角色经验 --- src/actions/GmAction.lua | 16 ++++++++++++++++ src/actions/HangAction.lua | 1 + src/actions/HeroAction.lua | 8 +++++++- src/adv/Adv.lua | 12 ++++++++---- src/adv/AdvBattle.lua | 2 +- src/models/Role.lua | 4 +++- src/models/RolePlugin.lua | 29 ++++++++++++++++++++++++++++- 7 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/actions/GmAction.lua b/src/actions/GmAction.lua index 7f337cf..a1c4edb 100644 --- a/src/actions/GmAction.lua +++ b/src/actions/GmAction.lua @@ -32,4 +32,20 @@ function _M.get(role, pms) return "成功" end +function _M.advc(role, pms) + role:updateProperty({field = "advInfo", value = {}}) + role:updateProperty({field = "advItems", value = ""}) + role:updateProperty({field = "advTeam", value = {}}) + role.advData = nil + return "成功" +end + +function _M.idlec(role, pms) + role:updateProperty({field = "hangTeam", value = {}}) + role:updateProperty({field = "hangInfo", value = {}}) + role:updateProperty({field = "hangBag", value = {}}) + role.advData = nil + return "成功" +end + return _M \ No newline at end of file diff --git a/src/actions/HangAction.lua b/src/actions/HangAction.lua index 646c812..8036f10 100644 --- a/src/actions/HangAction.lua +++ b/src/actions/HangAction.lua @@ -33,6 +33,7 @@ local function checkReward(role) local items = role:getProperty("hangBag") items[ItemId.Gold] = (items[ItemId.Gold] or 0) + coinCount * carbonData.money items[ItemId.Exp] = (items[ItemId.Exp] or 0) + coinCount * carbonData.exp + items[ItemId.PlayerExp] = (items[ItemId.PlayerExp] or 0) + coinCount * carbonData.playerExp local pool = {} for _, temp in pairs(carbonData.item:toArray()) do diff --git a/src/actions/HeroAction.lua b/src/actions/HeroAction.lua index 07ae6c5..1811fd4 100644 --- a/src/actions/HeroAction.lua +++ b/src/actions/HeroAction.lua @@ -105,7 +105,13 @@ function _M.talentRpc(agent, data) local talentData = curData[level] if not talentData then return end - local cost = talentData.cost:toNumMap() + local cost = {} + local needCost = talentData.cost:toTableArray(true) + cost[needCost[1][1]] = needCost[1][2] + if needCost[2] then + cost[globalCsv.unit_talent_cost[csvdb["unitCsv"][hero:getProperty("type")].camp][needCost[2][1]]] = needCost[2][2] + end + if not role:checkItemEnough(cost) then return end role:costItems(cost, {}) talent = talent:incrv(index, 1) diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index d951e97..b78b9d4 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -443,7 +443,7 @@ function Adv:over(success) end function Adv:exit() - self:over(-1) + self:over(false) self:saveDB() end @@ -923,9 +923,13 @@ function Adv:enemyDead(roomId, blockId, escape) item = dropData["range"]:randWeight(true) end end - table.clear(block.event) - block.event.etype = AdvEventType.Drop - block.event.item = item + if item[1] == 0 then + room:clearBEvent(block) + else + table.clear(block.event) + block.event.etype = AdvEventType.Drop + block.event.item = item + end end end self:backBlockChange(roomId, blockId) diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index 9284596..2433714 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -141,7 +141,7 @@ function Battle:afterRound() if self.player.isDead then - self.adv:over(-1) + self.adv:over(false) end end diff --git a/src/models/Role.lua b/src/models/Role.lua index 18b2047..3586f77 100644 --- a/src/models/Role.lua +++ b/src/models/Role.lua @@ -31,7 +31,8 @@ Role.schema = { diamond = {"number", 0}, reDiamond = {"number", 0}, -- roleInfo - level = {"number", 0}, + level = {"number", 1}, + exp = {"number", 0}, items = {"string", ""}, loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL @@ -148,6 +149,7 @@ function Role:data() id = self:getProperty("id"), name = self:getProperty("name"), level = self:getProperty("level"), + exp = self:getProperty("exp"), items = self:getProperty("items"):toNumMap(), loveStatus = self:getProperty("loveStatus"):toNumMap(), diamond = self:getAllDiamond(), diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 18391a3..4e3ca02 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -64,6 +64,12 @@ function RolePlugin.bind(Role) local curType = itemData.type local change = {} -- 奖励被转化为了其他奖励 id = count + local itemIdAward = { + [ItemId.PlayerExp] = function() + self:addPlayExp(count) + end, + } + local itemTypeAward = { [ItemType.Hero] = function() params.type = itemId - ItemStartId.Hero @@ -75,7 +81,9 @@ function RolePlugin.bind(Role) -- 对数量筛查 local count = checkItemCount(self, itemId, count) if count ~= 0 then - if itemTypeAward[curType] then + if itemIdAward[itemId] then + itemIdAward[itemId]() + elseif itemTypeAward[curType] then itemTypeAward[curType]() else params.itemId = itemId @@ -118,6 +126,25 @@ function RolePlugin.bind(Role) return reward, allChange --实际获得的奖励 和 最高级奖励转化过程 end + function Role:addPlayExp(addExp) + local level = self:getProperty("level") + if not csvdb["player_expCsv"][level + 1] then + return + end + + local exp = self:getProperty("exp") + local newExp = exp + addExp + while newExp >= csvdb["player_expCsv"][level].exp do + if csvdb["player_expCsv"][level + 1] then -- 有下一级 + newExp = newExp - csvdb["player_expCsv"][level].exp + level = level + 1 + else + newExp = csvdb["player_expCsv"][level].exp - 1 -- 没有下一级了 经验溢出太多 扣除 + end + end + self:updateProperties({level = level, exp = newExp}) + end + function Role:addItem(params) params = params or {} if params.itemId == ItemId.Diamond then -- libgit2 0.21.2