Commit e572e903d1b807024b364283fd6a8291b793c495

Authored by zhangqijia
1 parent dac9fbcc

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

src/actions/AdvAction.lua
@@ -301,18 +301,16 @@ function _M.startHangRpc(agent, data) @@ -301,18 +301,16 @@ function _M.startHangRpc(agent, data)
301 301
302 local player = {} 302 local player = {}
303 local attrs = role:getTeamBattleInfo(format).heros 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 end 310 end
308 - player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1)  
309 end 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 --print(math.ceil(battleV), campSiteData.idleValue) 315 --print(math.ceil(battleV), campSiteData.idleValue)
318 if math.ceil(battleV) < campSiteData.idleValue then return 9 end -- 战斗力是否满足 316 if math.ceil(battleV) < campSiteData.idleValue then return 9 end -- 战斗力是否满足
@@ -930,18 +930,16 @@ function Adv:over(success, rewardRatio, overType) @@ -930,18 +930,16 @@ function Adv:over(success, rewardRatio, overType)
930 local team = self.owner:getProperty("advTeam") 930 local team = self.owner:getProperty("advTeam")
931 local player = {} 931 local player = {}
932 local attrs = self.owner:getTeamBattleInfo(team).heros 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 end 939 end
937 - player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1)  
938 end 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 local heroList = {team.leader, team.leader2} 944 local heroList = {team.leader, team.leader2}
947 for _, hid in pairs(team.heros) do 945 for _, hid in pairs(team.heros) do
src/adv/AdvBattle.lua
@@ -95,14 +95,13 @@ function Battle:initPlayer() @@ -95,14 +95,13 @@ function Battle:initPlayer()
95 95
96 local attrs = self.adv.owner:getTeamBattleInfo(advTeam).heros 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 end 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 end 105 end
107 106
108 player.hpMax = player.hp or 0 107 player.hpMax = player.hp or 0
src/models/RoleBattle.lua
@@ -348,9 +348,41 @@ function Role:checkBattle(battleType, params) @@ -348,9 +348,41 @@ function Role:checkBattle(battleType, params)
348 }) 348 })
349 end 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 end 387 end
356 388