Commit e572e903d1b807024b364283fd6a8291b793c495

Authored by zhangqijia
1 parent dac9fbcc

fix: 拾荒生存力和属性调整

src/actions/AdvAction.lua
... ... @@ -301,18 +301,16 @@ function _M.startHangRpc(agent, data)
301 301  
302 302 local player = {}
303 303 local attrs = role:getTeamBattleInfo(format).heros
304   - for attrName, _ in pairs(AdvAttsEnum) do
305   - for _, hero in pairs(attrs) do
306   - player[attrName] = (player[attrName] or 0) + hero[attrName]
  304 + for _, hero in pairs(attrs) do
  305 + --根据系数计算拾荒属性
  306 + role:checkPlayerAttr(hero)
  307 +
  308 + for attrName, _ in pairs(AdvAttsEnum) do
  309 + player[attrName] = (player[attrName] or 0) + hero[attrName]
307 310 end
308   - player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1)
309 311 end
310 312  
311   - local battleV = 1 * player["hp"]
312   - + 2 * player["atk"]
313   - + 1.25 * player["def"]
314   - + 0.226 * player["hit"]
315   - + 0.26 * player["miss"]
  313 + local battleV = role:getSurvivability(player, #attrs)
316 314  
317 315 --print(math.ceil(battleV), campSiteData.idleValue)
318 316 if math.ceil(battleV) < campSiteData.idleValue then return 9 end -- 战斗力是否满足
... ...
src/adv/Adv.lua
... ... @@ -930,18 +930,16 @@ function Adv:over(success, rewardRatio, overType)
930 930 local team = self.owner:getProperty("advTeam")
931 931 local player = {}
932 932 local attrs = self.owner:getTeamBattleInfo(team).heros
933   - for attrName, _ in pairs(AdvAttsEnum) do
934   - for _, hero in pairs(attrs) do
935   - player[attrName] = (player[attrName] or 0) + hero[attrName]
  933 + for _, hero in pairs(attrs) do
  934 + --根据系数计算拾荒属性
  935 + self.owner:checkPlayerAttr(hero)
  936 +
  937 + for attrName, _ in pairs(AdvAttsEnum) do
  938 + player[attrName] = (player[attrName] or 0) + hero[attrName]
936 939 end
937   - player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1)
938 940 end
939 941  
940   - local battleV = 1 * player["hp"]
941   - + 2 * player["atk"]
942   - + 1.25 * player["def"]
943   - + 0.226 * player["hit"]
944   - + 0.26 * player["miss"]
  942 + local battleV = self.owner:getSurvivability(player, #attrs)
945 943  
946 944 local heroList = {team.leader, team.leader2}
947 945 for _, hid in pairs(team.heros) do
... ...
src/adv/AdvBattle.lua
... ... @@ -95,14 +95,13 @@ function Battle:initPlayer()
95 95  
96 96 local attrs = self.adv.owner:getTeamBattleInfo(advTeam).heros
97 97  
  98 + for _, hero in pairs(attrs) do
  99 + --根据系数计算拾荒属性
  100 + self.adv.owner:checkPlayerAttr(hero)
98 101  
99   - for attrName, _ in pairs(AdvAttsEnum) do
100   - for _, hero in pairs(attrs) do
101   - player[attrName] = (player[attrName] or 0) + hero[attrName]
  102 + for attrName, _ in pairs(AdvAttsEnum) do
  103 + player[attrName] = (player[attrName] or 0) + hero[attrName]
102 104 end
103   - player[attrName] = getAdvLvAttrUp(advAddAttrs, attrName, player[attrName]) * (globalCsv.adv_battle_attr_ratio[attrName] or 1)
104   - -- player.growth[attrName] = player[attrName] * (globalCsv.adv_battle_attr_growth_ratio[attrName] or 1)
105   - -- player[attrName] = player[attrName] + player.growth[attrName] * (player.level - 1)
106 105 end
107 106  
108 107 player.hpMax = player.hp or 0
... ...
src/models/RoleBattle.lua
... ... @@ -348,9 +348,41 @@ function Role:checkBattle(battleType, params)
348 348 })
349 349 end
350 350  
  351 + local function initPlayer(player)
  352 + player["hp"] = player["hp"] or 0
  353 + player["atk"] = player["atk"] or 0
  354 + player["def"] = player["def"] or 0
  355 + player["hit"] = player["hit"] or 0
  356 + player["miss"] = player["miss"] or 0
  357 + player["crit"] = player["crit"] or 0
  358 + player["critHurt"] = player["critHurt"] or 0
  359 + player["pierce"] = player["pierce"] or 0
  360 + player["vampire"] = player["vampire"] or 0
  361 + end
  362 +
  363 + function Role:checkPlayerAttr(player)
  364 + if next(player) == nil then return end
  365 + initPlayer(player)
351 366  
  367 + player["hp"] = math.floor(player["hp"] / globalCsv.adv_battle_attr_ratio["hp"])
  368 + player["atk"] = math.floor(player["atk"] / globalCsv.adv_battle_attr_ratio["atk"])
  369 + player["def"] = math.floor(player["def"] / globalCsv.adv_battle_attr_ratio["def"])
  370 + player["hit"] = math.floor((player["hit"] + player["miss"] )/ globalCsv.adv_battle_attr_ratio["hit"])
  371 + player["miss"] = math.floor((player["crit"] + player["critHurt"] + player["pierce"] + player["vampire"])/ globalCsv.adv_battle_attr_ratio["miss"])
  372 + end
352 373  
  374 + function Role:getSurvivability(player, heroCount)
  375 + if next(player) == nil then return 0 end
  376 + heroCount = heroCount or 1
  377 + initPlayer(player)
353 378  
  379 + local battleV = (globalCsv.adv_battle_fight_points["hp"] * player["hp"]
  380 + + globalCsv.adv_battle_fight_points["atk"] * player["atk"]
  381 + + globalCsv.adv_battle_fight_points["def"] * player["def"]
  382 + + globalCsv.adv_battle_fight_points["hit"] * player["hit"] )
  383 + * (1 + (player["miss"]- heroCount * globalCsv.adv_battle_fight_points["miss"])/ 100)
  384 + return battleV
  385 + end
354 386  
355 387 end
356 388  
... ...