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 | 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 | ... | ... |