Commit e572e903d1b807024b364283fd6a8291b793c495
1 parent
dac9fbcc
fix: 拾荒生存力和属性调整
Showing
4 changed files
with
51 additions
and
24 deletions
Show diff stats
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 -- 战斗力是否满足 |
src/adv/Adv.lua
@@ -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 |