Commit 96d591f7430fe07690fa50415fdeac2584e15fe0

Authored by liuzujun
1 parent 50bcef87

天赋升级修改,增加英雄信赖

src/actions/AdvAction.lua
@@ -266,6 +266,16 @@ function _M.startHangRpc(agent, data) @@ -266,6 +266,16 @@ function _M.startHangRpc(agent, data)
266 return true 266 return true
267 end 267 end
268 268
  269 +local function addHeroFaith(role, heroId, exp)
  270 + local hero = role.heros[heroId]
  271 + if not hero then
  272 + return
  273 + end
  274 +
  275 + hero:addHeroFaith(exp)
  276 + return hero:getProperty("faith")
  277 +end
  278 +
269 function _M.quickHangRpc(agent, data) 279 function _M.quickHangRpc(agent, data)
270 local role = agent.role 280 local role = agent.role
271 local msg = MsgPack.unpack(data) 281 local msg = MsgPack.unpack(data)
@@ -333,7 +343,7 @@ function _M.endHangRpc(agent, data) @@ -333,7 +343,7 @@ function _M.endHangRpc(agent, data)
333 end 343 end
334 adv_idle_time = adv_idle_time * 60 344 adv_idle_time = adv_idle_time * 60
335 345
336 - local reward, isFull, change 346 + local reward, isFull, change, heroFaithMap
337 if skynet.timex() >= info.time then 347 if skynet.timex() >= info.time then
338 -- 最新需求加成取消 348 -- 最新需求加成取消
339 --[[ 349 --[[
@@ -362,6 +372,14 @@ function _M.endHangRpc(agent, data) @@ -362,6 +372,14 @@ function _M.endHangRpc(agent, data)
362 372
363 if not maxCampsite then return end 373 if not maxCampsite then return end
364 ]] 374 ]]
  375 + -- 增加英雄信赖
  376 + local exp = info.duration / 60
  377 + heroFaithMap = {}
  378 + for _, heroId in pairs(info.format.heros) do
  379 + local curFaith = addHeroFaith(role, heroId, exp)
  380 + heroFaithMap[heroId] = curFaith
  381 + end
  382 +
365 local totalReward = campSiteData.idleReward_1 .. " " .. campSiteData.idleReward_2 383 local totalReward = campSiteData.idleReward_1 .. " " .. campSiteData.idleReward_2
366 384
367 local idleReward = totalReward:toNumMap() 385 local idleReward = totalReward:toNumMap()
@@ -389,7 +407,7 @@ function _M.endHangRpc(agent, data) @@ -389,7 +407,7 @@ function _M.endHangRpc(agent, data)
389 407
390 role:checkTaskEnter("AdvHang", {}) 408 role:checkTaskEnter("AdvHang", {})
391 409
392 - SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull})) 410 + SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull, heroFaith = heroFaithMap}))
393 return true 411 return true
394 end 412 end
395 413
src/actions/HeroAction.lua
@@ -143,74 +143,45 @@ function _M.talentRpc(agent, data) @@ -143,74 +143,45 @@ function _M.talentRpc(agent, data)
143 local hero = role.heros[msg.id] 143 local hero = role.heros[msg.id]
144 if not hero then return 1 end 144 if not hero then return 1 end
145 145
146 - local index = msg.index -- 第几个天赋  
147 - local need = {[0] = 1, [1] = 1, [2] = 1, [3] = 1, [4] = 1}  
148 - if not need[index] then return 2 end  
149 -  
150 local talent = hero:getProperty("talent") 146 local talent = hero:getProperty("talent")
  147 + local heroCfgId = hero:getProperty("type")
151 local curStage = talent:getv(0, 1) 148 local curStage = talent:getv(0, 1)
152 - local curData = csvdb["unit_talentCsv"][curStage]  
153 - if not curData then return 4 end 149 + local curLevel = talent:getv(1, 1)
  150 + local curData = csvdb["unit_talent_"..heroCfgId.."Csv"][curStage]
  151 + if not curData then return 1 end
154 local oldSkillLv = hero:getSkillLevel(1) 152 local oldSkillLv = hero:getSkillLevel(1)
155 153
156 154
157 local cost = {} 155 local cost = {}
158 - if index == 0 then  
159 - --是否进阶  
160 - local max = true  
161 - for i = 1, 4 do  
162 - if talent:getv(i, 0) < #curData then  
163 - max = false  
164 - break  
165 - end  
166 - end  
167 - if max then  
168 - talent = talent:setv(0, curStage + 1)  
169 - for i = 1, 4 do  
170 - talent = talent:setv(i, 0)  
171 - end  
172 - else  
173 - return 12  
174 - end 156 + if curLevel == #curData then
  157 + talent = talent:setv(0, curStage + 1)
  158 + talent = talent:setv(1, 1)
175 else 159 else
176 -  
177 - local level = talent:getv(index, 0)  
178 - if level >= #curData then return 5 end 160 + if curLevel > #curData then return 2 end
179 161
180 - local talentData = curData[level]  
181 - if not talentData then return end 162 + local talentData = curData[curLevel]
  163 + if not talentData then return 3 end
182 164
183 - if talentData.lvRequire > hero:getProperty("level") then return 6 end 165 + if talentData.lvRequire > hero:getProperty("level") then return 4 end
184 166
185 cost = talentData.money:toNumMap() 167 cost = talentData.money:toNumMap()
186 - local cost2 = talentData.cost:toNumMap()  
187 - for k,v in pairs(cost2) do  
188 - cost[globalCsv.unit_talent_cost[csvdb["unitCsv"][hero:getProperty("type")].camp][k]] = v  
189 - end  
190 - if not role:checkItemEnough(cost) then return 6 end 168 + if not role:checkItemEnough(cost) then return 5 end
191 role:costItems(cost, {log = {desc = "heroTalent", int1 = msg.id, int2 = hero:getProperty("type")}}) 169 role:costItems(cost, {log = {desc = "heroTalent", int1 = msg.id, int2 = hero:getProperty("type")}})
192 - talent = talent:incrv(index, 1)  
193 -  
194 -  
195 - local aheadLevel = 0  
196 - for i = 1, talent:getv(0, 1) - 1 do  
197 - aheadLevel = aheadLevel + #csvdb["unit_talentCsv"][i]  
198 - end  
199 - aheadLevel = aheadLevel + talent:getv(index, 0)  
200 -  
201 - role:checkTaskEnter("HeroTalent", {heroType = hero:getProperty("type"), alv = aheadLevel}) 170 + talent = talent:setv(1, curLevel + 1)
202 end 171 end
  172 + curStage = talent:getv(0, 1)
  173 + role:checkTaskEnter("HeroTalent", {heroType = hero:getProperty("type"), alv = curStage})
203 174
204 hero:updateProperty({field = "talent", value = talent}) 175 hero:updateProperty({field = "talent", value = talent})
205 176
206 role:log("hero_talent", { 177 role:log("hero_talent", {
207 hero_id = hero:getProperty("type"), --英雄ID 178 hero_id = hero:getProperty("type"), --英雄ID
208 - hero_talent_id = index, --天赋ID 179 + hero_talent_id = curStage, --天赋ID
209 hero_talent_cost = cost, -- 英雄天赋升级消耗,json格式记录,{道具ID1:消耗数量1,道具ID2:消耗数量2,………...} 180 hero_talent_cost = cost, -- 英雄天赋升级消耗,json格式记录,{道具ID1:消耗数量1,道具ID2:消耗数量2,………...}
210 hero_talent_levelbef = oldSkillLv, -- 英雄技能升级前等级 181 hero_talent_levelbef = oldSkillLv, -- 英雄技能升级前等级
211 hero_talent_level = hero:getSkillLevel(1), -- 英雄技能升级后等级 182 hero_talent_level = hero:getSkillLevel(1), -- 英雄技能升级后等级
212 }) 183 })
213 - hero:mylog({desc = "talent", int1 = index, int2 = talent:getv(index, 0)}) 184 + hero:mylog({desc = "talent", int1 = talent:getv(0, 1), int2 = talent:getv(1, 1)})
214 185
215 SendPacket(actionCodes.Hero_talentRpc, '') 186 SendPacket(actionCodes.Hero_talentRpc, '')
216 return true 187 return true
@@ -641,6 +612,7 @@ function _M.getResetRewardRpc(agent, data) @@ -641,6 +612,7 @@ function _M.getResetRewardRpc(agent, data)
641 local level = hero:getProperty("level") 612 local level = hero:getProperty("level")
642 local breakL = hero:getProperty("breakL") 613 local breakL = hero:getProperty("breakL")
643 local talent = hero:getProperty("talent") 614 local talent = hero:getProperty("talent")
  615 + local heroCfgId = hero:getProperty("type")
644 616
645 local tmpLevel = level 617 local tmpLevel = level
646 if level <= 1 and talent == "" then return end 618 if level <= 1 and talent == "" then return end
@@ -669,32 +641,18 @@ function _M.getResetRewardRpc(agent, data) @@ -669,32 +641,18 @@ function _M.getResetRewardRpc(agent, data)
669 end 641 end
670 642
671 local stage = talent:getv(0, 1) 643 local stage = talent:getv(0, 1)
672 - local tlevel = {talent:getv(1, 0), talent:getv(2, 0), talent:getv(3, 0), talent:getv(4, 0)} 644 + local curTalentLvl = talent:getv(1, 1)
  645 + --local tlevel = {talent:getv(1, 0), talent:getv(2, 0), talent:getv(3, 0), talent:getv(4, 0)}
673 646
674 - local talentCostIds = globalCsv.unit_talent_cost[csvdb["unitCsv"][hero:getProperty("type")].camp]  
675 while stage > 0 do 647 while stage > 0 do
676 - local curData = csvdb["unit_talentCsv"][stage]  
677 - for level = math.max(table.unpack(tlevel)), 1, -1 do  
678 - local add = 0  
679 - for i = 1, 4 do  
680 - if tlevel[i] == level then  
681 - add = add + 1  
682 - tlevel[i] = tlevel[i] - 1  
683 - end  
684 - end  
685 - local talentData = curData[level - 1] 648 + local curData = csvdb["unit_talent_"..heroCfgId.."Csv"][stage]
  649 + for lvl = 1, curTalentLvl - 1 do
  650 + local talentData = curData[lvl]
686 for itemId, count in pairs(talentData.money:toNumMap()) do 651 for itemId, count in pairs(talentData.money:toNumMap()) do
687 - reward[itemId] = (reward[itemId] or 0) + count * add  
688 - end  
689 - for idx , count in pairs(talentData.cost:toNumMap()) do  
690 - reward[talentCostIds[idx]] = (reward[talentCostIds[idx]] or 0) + count * add 652 + reward[itemId] = (reward[itemId] or 0) + count
691 end 653 end
692 end 654 end
693 stage = stage - 1 655 stage = stage - 1
694 - curData = csvdb["unit_talentCsv"][stage]  
695 - if curData then  
696 - tlevel = {#curData, #curData, #curData, #curData}  
697 - end  
698 end 656 end
699 657
700 local equip = hero:getProperty("equip") 658 local equip = hero:getProperty("equip")
1 -Subproject commit 02a9bbbb10bb99a91cc5d67f62dc7e5b49d8cb46 1 +Subproject commit 0f60ee4ca695995942574454c696747a4390ee5d
src/models/Hero.lua
@@ -15,6 +15,7 @@ Hero.schema = { @@ -15,6 +15,7 @@ Hero.schema = {
15 -- loveL = {"number", 0}, --好感度等级 15 -- loveL = {"number", 0}, --好感度等级
16 equip = {"string",""}, --装备 type=level 16 equip = {"string",""}, --装备 type=level
17 rune = {"string",""}, --零件 type=id 17 rune = {"string",""}, --零件 type=id
  18 + faith = {"number", 0}, -- 信赖
18 } 19 }
19 20
20 function Hero:ctor( properties ) 21 function Hero:ctor( properties )
@@ -102,6 +103,7 @@ function Hero:data() @@ -102,6 +103,7 @@ function Hero:data()
102 -- loveL = self:getProperty("loveL"), 103 -- loveL = self:getProperty("loveL"),
103 equip = self:getProperty("equip"), 104 equip = self:getProperty("equip"),
104 rune = self:getProperty("rune"), 105 rune = self:getProperty("rune"),
  106 + faith = self:getProperty("faith")
105 } 107 }
106 end 108 end
107 109
src/models/HeroPlugin.lua
@@ -48,34 +48,44 @@ function HeroPlugin.bind(Hero) @@ -48,34 +48,44 @@ function HeroPlugin.bind(Hero)
48 local breakL = params.breakL or self:getProperty("breakL") 48 local breakL = params.breakL or self:getProperty("breakL")
49 local wakeL = params.wakeL or self:getProperty("wakeL") 49 local wakeL = params.wakeL or self:getProperty("wakeL")
50 local talent = params.talent or self:getProperty("talent") 50 local talent = params.talent or self:getProperty("talent")
51 - 51 + local heroCfgId = self:getProperty("type")
52 --天赋 52 --天赋
53 local talentAttrS = {} 53 local talentAttrS = {}
54 54
55 -- 四个基础属性 55 -- 四个基础属性
56 local curData = csvdb["unit_talentCsv"][talent:getv(0, 1)] 56 local curData = csvdb["unit_talentCsv"][talent:getv(0, 1)]
  57 + local curTalentLvl = 0
57 if not curData then -- 已经满阶段了 58 if not curData then -- 已经满阶段了
58 - curData = csvdb["unit_talentCsv"][#csvdb["unit_talentCsv"]]  
59 - local strength = curData[#curData].strength  
60 - for i = 1, 4 do  
61 - talentAttrS[TalentAttsEnumEx[i]] = (talentAttrS[TalentAttsEnumEx[i]] or 0) + strength  
62 - end 59 + local cfgName = "unit_talent_"..heroCfgId.."Csv"
  60 + curData = csvdb[cfgName][#csvdb[cfgName]]
63 else 61 else
64 - for i = 1, 4 do --4个天赋  
65 - talentAttrS[TalentAttsEnumEx[i]] = (talentAttrS[TalentAttsEnumEx[i]] or 0) + curData[talent:getv(i, 0)].strength  
66 - end 62 + curTalentLvl = talent:getv(1, 1)
67 end 63 end
68 - --阶段属性  
69 - for i = 1, (talent:getv(0, 1) - 1) do  
70 - local curData = csvdb["unit_talentCsv"][i]  
71 - local effect = curData[#curData].effect:toArray(true, "=")  
72 - talentAttrS[AttsEnumEx[effect[1]]] = (talentAttrS[AttsEnumEx[effect[1]]] or 0) + effect[2] 64 + for lvl, cfg in pairs(curData) do
  65 + if lvl < curTalentLvl or curTalentLvl == 0 then
  66 + if cfg.effect ~= 99 then
  67 + local curVal = talentAttrS[cfg.effect] or 0
  68 + if curVal < cfg.strength then
  69 + talentAttrS[cfg.effect] = cfg.strength
  70 + end
  71 + end
  72 + end
73 end 73 end
74 -  
75 74
76 for _, attrName in pairs(AttsEnumEx) do 75 for _, attrName in pairs(AttsEnumEx) do
77 if talentAttrS[attrName] then 76 if talentAttrS[attrName] then
78 - talentAttrS[attrName] = addAttr(unitData[attrName], talentAttrS[attrName], 1, attrName) 77 + talentAttrS[attrName] = addAttr(unitData[attrName], talentAttrS[attrName], 0, attrName)
  78 + end
  79 + end
  80 +
  81 + -- 信赖属性
  82 + local faithAttr = {}
  83 + local faith = self:getProperty("faith")
  84 + local faithConfig = csvdb["unit_trustCsv"]
  85 + for lvl = 1, #faithConfig do
  86 + if faith >= faithConfig[lvl].exp then
  87 + local add = faithConfig[lvl]["position_"..unitData.position]:toArray(true, "=")
  88 + faithAttr[add[1]] = (faithAttr[add[1]] or 0) + add[2]
79 end 89 end
80 end 90 end
81 91
@@ -90,7 +100,7 @@ function HeroPlugin.bind(Hero) @@ -90,7 +100,7 @@ function HeroPlugin.bind(Hero)
90 for attr, value in pairs(attrs) do 100 for attr, value in pairs(attrs) do
91 attrs[attr] = attrs[attr] + addAttr(attrs[attr], lData[attr .. "Level"], 1, attr) 101 attrs[attr] = attrs[attr] + addAttr(attrs[attr], lData[attr .. "Level"], 1, attr)
92 attrs[attr] = attrs[attr] + addAttr(attrs[attr], blData[attr .. "Level"], 1, attr) 102 attrs[attr] = attrs[attr] + addAttr(attrs[attr], blData[attr .. "Level"], 1, attr)
93 - attrs[attr] = attrs[attr] + addAttr(attrs[attr], wData[attr .. "Level"], 1, attr) + (talentAttrS[attr] or 0) 103 + attrs[attr] = attrs[attr] + addAttr(attrs[attr], wData[attr .. "Level"], 1, attr) + (talentAttrS[attr] or 0) + (faithAttr[attr] or 0)
94 end 104 end
95 105
96 return attrs 106 return attrs
@@ -296,6 +306,27 @@ function HeroPlugin.bind(Hero) @@ -296,6 +306,27 @@ function HeroPlugin.bind(Hero)
296 end 306 end
297 return 307 return
298 end 308 end
  309 +
  310 + -- 添加英雄信赖
  311 + function Hero:addHeroFaith(exp)
  312 + local faith = self:getProperty("faith")
  313 + local config = csvdb["unit_trustCsv"]
  314 + local star = self:getProperty("wakeL")
  315 + local tmpExp = faith + exp
  316 + for lvl = 1, #config do
  317 + if star < config[lvl].star then
  318 + break
  319 + end
  320 + if tmpExp < config[lvl].exp then
  321 + faith = tmpExp
  322 + break
  323 + else
  324 + faith = config[lvl].exp
  325 + end
  326 + end
  327 + self:setProperty("faith", faith)
  328 + end
  329 +
299 end 330 end
300 331
301 332