Commit 4b7c7c96e96f38be58634e31aa242ddc82d920c0

Authored by zhouahaihai
1 parent 5d80aca6

增加 清空 挂机 冒险gm 角色经验

src/actions/GmAction.lua
... ... @@ -32,4 +32,20 @@ function _M.get(role, pms)
32 32 return "成功"
33 33 end
34 34  
  35 +function _M.advc(role, pms)
  36 + role:updateProperty({field = "advInfo", value = {}})
  37 + role:updateProperty({field = "advItems", value = ""})
  38 + role:updateProperty({field = "advTeam", value = {}})
  39 + role.advData = nil
  40 + return "成功"
  41 +end
  42 +
  43 +function _M.idlec(role, pms)
  44 + role:updateProperty({field = "hangTeam", value = {}})
  45 + role:updateProperty({field = "hangInfo", value = {}})
  46 + role:updateProperty({field = "hangBag", value = {}})
  47 + role.advData = nil
  48 + return "成功"
  49 +end
  50 +
35 51 return _M
36 52 \ No newline at end of file
... ...
src/actions/HangAction.lua
... ... @@ -33,6 +33,7 @@ local function checkReward(role)
33 33 local items = role:getProperty("hangBag")
34 34 items[ItemId.Gold] = (items[ItemId.Gold] or 0) + coinCount * carbonData.money
35 35 items[ItemId.Exp] = (items[ItemId.Exp] or 0) + coinCount * carbonData.exp
  36 + items[ItemId.PlayerExp] = (items[ItemId.PlayerExp] or 0) + coinCount * carbonData.playerExp
36 37  
37 38 local pool = {}
38 39 for _, temp in pairs(carbonData.item:toArray()) do
... ...
src/actions/HeroAction.lua
... ... @@ -105,7 +105,13 @@ function _M.talentRpc(agent, data)
105 105  
106 106 local talentData = curData[level]
107 107 if not talentData then return end
108   - local cost = talentData.cost:toNumMap()
  108 + local cost = {}
  109 + local needCost = talentData.cost:toTableArray(true)
  110 + cost[needCost[1][1]] = needCost[1][2]
  111 + if needCost[2] then
  112 + cost[globalCsv.unit_talent_cost[csvdb["unitCsv"][hero:getProperty("type")].camp][needCost[2][1]]] = needCost[2][2]
  113 + end
  114 +
109 115 if not role:checkItemEnough(cost) then return end
110 116 role:costItems(cost, {})
111 117 talent = talent:incrv(index, 1)
... ...
src/adv/Adv.lua
... ... @@ -443,7 +443,7 @@ function Adv:over(success)
443 443 end
444 444  
445 445 function Adv:exit()
446   - self:over(-1)
  446 + self:over(false)
447 447 self:saveDB()
448 448 end
449 449  
... ... @@ -923,9 +923,13 @@ function Adv:enemyDead(roomId, blockId, escape)
923 923 item = dropData["range"]:randWeight(true)
924 924 end
925 925 end
926   - table.clear(block.event)
927   - block.event.etype = AdvEventType.Drop
928   - block.event.item = item
  926 + if item[1] == 0 then
  927 + room:clearBEvent(block)
  928 + else
  929 + table.clear(block.event)
  930 + block.event.etype = AdvEventType.Drop
  931 + block.event.item = item
  932 + end
929 933 end
930 934 end
931 935 self:backBlockChange(roomId, blockId)
... ...
src/adv/AdvBattle.lua
... ... @@ -141,7 +141,7 @@ function Battle:afterRound()
141 141  
142 142  
143 143 if self.player.isDead then
144   - self.adv:over(-1)
  144 + self.adv:over(false)
145 145 end
146 146 end
147 147  
... ...
src/models/Role.lua
... ... @@ -31,7 +31,8 @@ Role.schema = {
31 31 diamond = {"number", 0},
32 32 reDiamond = {"number", 0},
33 33 -- roleInfo
34   - level = {"number", 0},
  34 + level = {"number", 1},
  35 + exp = {"number", 0},
35 36 items = {"string", ""},
36 37 loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL
37 38  
... ... @@ -148,6 +149,7 @@ function Role:data()
148 149 id = self:getProperty("id"),
149 150 name = self:getProperty("name"),
150 151 level = self:getProperty("level"),
  152 + exp = self:getProperty("exp"),
151 153 items = self:getProperty("items"):toNumMap(),
152 154 loveStatus = self:getProperty("loveStatus"):toNumMap(),
153 155 diamond = self:getAllDiamond(),
... ...
src/models/RolePlugin.lua
... ... @@ -64,6 +64,12 @@ function RolePlugin.bind(Role)
64 64 local curType = itemData.type
65 65 local change = {} -- 奖励被转化为了其他奖励 id = count
66 66  
  67 + local itemIdAward = {
  68 + [ItemId.PlayerExp] = function()
  69 + self:addPlayExp(count)
  70 + end,
  71 + }
  72 +
67 73 local itemTypeAward = {
68 74 [ItemType.Hero] = function()
69 75 params.type = itemId - ItemStartId.Hero
... ... @@ -75,7 +81,9 @@ function RolePlugin.bind(Role)
75 81 -- 对数量筛查
76 82 local count = checkItemCount(self, itemId, count)
77 83 if count ~= 0 then
78   - if itemTypeAward[curType] then
  84 + if itemIdAward[itemId] then
  85 + itemIdAward[itemId]()
  86 + elseif itemTypeAward[curType] then
79 87 itemTypeAward[curType]()
80 88 else
81 89 params.itemId = itemId
... ... @@ -118,6 +126,25 @@ function RolePlugin.bind(Role)
118 126 return reward, allChange --实际获得的奖励 和 最高级奖励转化过程
119 127 end
120 128  
  129 + function Role:addPlayExp(addExp)
  130 + local level = self:getProperty("level")
  131 + if not csvdb["player_expCsv"][level + 1] then
  132 + return
  133 + end
  134 +
  135 + local exp = self:getProperty("exp")
  136 + local newExp = exp + addExp
  137 + while newExp >= csvdb["player_expCsv"][level].exp do
  138 + if csvdb["player_expCsv"][level + 1] then -- 有下一级
  139 + newExp = newExp - csvdb["player_expCsv"][level].exp
  140 + level = level + 1
  141 + else
  142 + newExp = csvdb["player_expCsv"][level].exp - 1 -- 没有下一级了 经验溢出太多 扣除
  143 + end
  144 + end
  145 + self:updateProperties({level = level, exp = newExp})
  146 + end
  147 +
121 148 function Role:addItem(params)
122 149 params = params or {}
123 150 if params.itemId == ItemId.Diamond then
... ...