Commit 6b5c9206ef649b86cea59258ad9734dc92967b00
1 parent
5e0e0aff
冒险资助升级属性奖励
Showing
6 changed files
with
73 additions
and
18 deletions
Show diff stats
src/actions/AdvAction.lua
@@ -527,10 +527,13 @@ function _M.wheelSurfRpc(agent, data) | @@ -527,10 +527,13 @@ function _M.wheelSurfRpc(agent, data) | ||
527 | local count = countPool[ctype] | 527 | local count = countPool[ctype] |
528 | if not count then return end | 528 | if not count then return end |
529 | 529 | ||
530 | + if ptype == 2 and not role:isFuncOpen(FuncOpenType.AdvEndless) then | ||
531 | + return | ||
532 | + end | ||
530 | 533 | ||
531 | local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype] | 534 | local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype] |
532 | if not drawTypeData then return end | 535 | if not drawTypeData then return end |
533 | - local drawData = drawTypeData[role:getFuncLv(FuncOpenType.AdvWheelSurf)] | 536 | + local drawData = drawTypeData[role:getAdvWheelSurfLv(ptype)] |
534 | if not drawData then return end | 537 | if not drawData then return end |
535 | 538 | ||
536 | local costs = drawData.cost:toNumMap() | 539 | local costs = drawData.cost:toNumMap() |
@@ -540,7 +543,7 @@ function _M.wheelSurfRpc(agent, data) | @@ -540,7 +543,7 @@ function _M.wheelSurfRpc(agent, data) | ||
540 | 543 | ||
541 | if not role:checkItemEnough(costs) then return end | 544 | if not role:checkItemEnough(costs) then return end |
542 | role:costItems(costs) | 545 | role:costItems(costs) |
543 | - | 546 | + role:addAdvLvExp(costs[ItemId.OldCoin] or 0) |
544 | -- 随机池子 | 547 | -- 随机池子 |
545 | local pool = drawData.weight:randWeight() | 548 | local pool = drawData.weight:randWeight() |
546 | local reward = {} | 549 | local reward = {} |
src/adv/Adv.lua
@@ -356,8 +356,6 @@ function Adv:over(success, isAllPass) | @@ -356,8 +356,6 @@ function Adv:over(success, isAllPass) | ||
356 | self.owner:checkTaskEnter("AdvAllPass", {id = self.chapterId}) | 356 | self.owner:checkTaskEnter("AdvAllPass", {id = self.chapterId}) |
357 | end | 357 | end |
358 | 358 | ||
359 | - -- 冒险队等级升一下子 | ||
360 | - self.owner:checkAdvLvByAddWin() | ||
361 | end | 359 | end |
362 | self:clearAdvUnlockCache() | 360 | self:clearAdvUnlockCache() |
363 | self:clear() | 361 | self:clear() |
src/adv/AdvBattle.lua
@@ -35,16 +35,30 @@ end | @@ -35,16 +35,30 @@ end | ||
35 | 成长率 =(总生存力 / 80)^0.52 + INT(总角色等级 / 50)* 1 | 35 | 成长率 =(总生存力 / 80)^0.52 + INT(总角色等级 / 50)* 1 |
36 | --]] | 36 | --]] |
37 | 37 | ||
38 | +local function getAdvLvAttrUp(upAttrs, attrName, baseAttr) | ||
39 | + -- 1=冒险队属性;1=点数/百分比=属性枚举=参数;属性枚举(1=生命上限/2=魔法上限/3=攻击/4=防御);点数/百分比(0=点数/1=百分比) | ||
40 | + local Enem = { | ||
41 | + hp = 1, | ||
42 | + sp = 2, | ||
43 | + atk = 3, | ||
44 | + def = 4, | ||
45 | + } | ||
46 | + if not Enem[attrName] then return baseAttr end | ||
47 | + return baseAttr + (upAttrs[Enem[attrName]] or 0) | ||
48 | +end | ||
49 | + | ||
38 | function Battle:initPlayer() | 50 | function Battle:initPlayer() |
39 | local advTeam = self.adv.owner:getProperty("advTeam") | 51 | local advTeam = self.adv.owner:getProperty("advTeam") |
40 | if not next(advTeam.heros) then return end | 52 | if not next(advTeam.heros) then return end |
41 | local leaderPassive = {} | 53 | local leaderPassive = {} |
42 | local player = advTeam.player | 54 | local player = advTeam.player |
43 | if not player then | 55 | if not player then |
56 | + local advAddAttrs = self.adv.owner:getAdvLvAddAttr() | ||
57 | + | ||
44 | player = {} | 58 | player = {} |
45 | player.level = 1 | 59 | player.level = 1 |
46 | player.exp = 0 | 60 | player.exp = 0 |
47 | - player.sp = 100 | 61 | + player.sp = getAdvLvAttrUp(advAddAttrs, "sp", 100) |
48 | player.growth = {} | 62 | player.growth = {} |
49 | player.passives = {} | 63 | player.passives = {} |
50 | 64 | ||
@@ -61,10 +75,13 @@ function Battle:initPlayer() | @@ -61,10 +75,13 @@ function Battle:initPlayer() | ||
61 | end | 75 | end |
62 | 76 | ||
63 | local attrs = self.adv.owner:getTeamBattleInfo(advTeam).heros | 77 | local attrs = self.adv.owner:getTeamBattleInfo(advTeam).heros |
78 | + | ||
79 | + | ||
64 | for attrName, _ in pairs(AdvAttsEnum) do | 80 | for attrName, _ in pairs(AdvAttsEnum) do |
65 | for _, hero in pairs(attrs) do | 81 | for _, hero in pairs(attrs) do |
66 | player[attrName] = (player[attrName] or 0) + hero[attrName] | 82 | player[attrName] = (player[attrName] or 0) + hero[attrName] |
67 | end | 83 | end |
84 | + player[attrName] = getAdvLvAttrUp(advAddAttrs, attrName, player[attrName]) | ||
68 | player.growth[attrName] = player[attrName] * 0.025 | 85 | player.growth[attrName] = player[attrName] * 0.025 |
69 | end | 86 | end |
70 | 87 |
src/models/Role.lua
@@ -62,7 +62,7 @@ Role.schema = { | @@ -62,7 +62,7 @@ Role.schema = { | ||
62 | advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置 | 62 | advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置 |
63 | advMTask = {"table", {id = 1, status = 0, lock = true}}, -- 冒险主线任务 -- {id = id, status = status, lock = true} -- 当前主线id 当前主线状态 是否锁定状态 | 63 | advMTask = {"table", {id = 1, status = 0, lock = true}}, -- 冒险主线任务 -- {id = id, status = status, lock = true} -- 当前主线id 当前主线状态 是否锁定状态 |
64 | advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status, -1 = pt, pts = {}}, } | 64 | advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status, -1 = pt, pts = {}}, } |
65 | - advL = {"table", {0, 0}}, -- 冒险队等级 {lv, winCount} | 65 | + advL = {"table", {0, 0}}, -- 冒险队等级 {lv, exp} |
66 | advElM = {"number", 0}, -- 无尽模式通关的最高层数 endless max layer | 66 | advElM = {"number", 0}, -- 无尽模式通关的最高层数 endless max layer |
67 | advElS = {"number", globalCsv.adv_endless_season}, -- 无尽模式记录的赛季 endless season | 67 | advElS = {"number", globalCsv.adv_endless_season}, -- 无尽模式记录的赛季 endless season |
68 | advAFOpen = {"table", {}}, -- 解锁的神器 {[id] = 1} | 68 | advAFOpen = {"table", {}}, -- 解锁的神器 {[id] = 1} |
src/models/RolePlugin.lua
@@ -850,24 +850,61 @@ function RolePlugin.bind(Role) | @@ -850,24 +850,61 @@ function RolePlugin.bind(Role) | ||
850 | end | 850 | end |
851 | end | 851 | end |
852 | 852 | ||
853 | - function Role:checkAdvLvByAddWin(winCount) | ||
854 | - winCount = winCount or 1 | 853 | + function Role:addAdvLvExp(exp) |
855 | local advL = self:getProperty("advL") | 854 | local advL = self:getProperty("advL") |
856 | - local oldL = advL[1] | ||
857 | - advL[2] = (advL[2] or 0) + winCount | ||
858 | - for level = ((advL[1] or 0) + 1), #csvdb["adv_rankCsv"] do | ||
859 | - local ldata = csvdb["adv_rankCsv"][level] | ||
860 | - if ldata.unlock <= advL[2] then | ||
861 | - advL[1] = level | ||
862 | - self:award(ldata.reward) | 855 | + local level = advL[1] |
856 | + local newExp = (advL[2] or 0) + exp | ||
857 | + | ||
858 | + if not csvdb["adv_level_fundCsv"][level + 1] then | ||
859 | + return | ||
860 | + end | ||
861 | + | ||
862 | + while newExp >= csvdb["adv_level_fundCsv"][level].exp do | ||
863 | + if csvdb["adv_level_fundCsv"][level + 1] and self:advChapterIsOpen(100 + csvdb["adv_level_fundCsv"][level + 1].chapter) then -- 有下一级 | ||
864 | + newExp = newExp - csvdb["adv_level_fundCsv"][level].exp | ||
865 | + level = level + 1 | ||
866 | + else | ||
867 | + newExp = csvdb["adv_level_fundCsv"][level].exp - 1 -- 没有下一级了 经验溢出太多 扣除 | ||
863 | end | 868 | end |
864 | end | 869 | end |
865 | - if advL[1] > oldL then | ||
866 | - self:checkTaskEnter("AdvLevel", {level = advL[1]}) | 870 | + |
871 | + if level > advL[1] then | ||
872 | + self:checkTaskEnter("AdvLevel", {level = level}) | ||
867 | end | 873 | end |
874 | + advL[1] = level | ||
875 | + advL[2] = newExp | ||
868 | self:updateProperty({field = "advL", value = advL}) | 876 | self:updateProperty({field = "advL", value = advL}) |
869 | end | 877 | end |
870 | 878 | ||
879 | + function Role:getAdvWheelSurfLv(ptype) | ||
880 | + local level = 1 | ||
881 | + for i = 0, self:getProperty("advL")[1] do | ||
882 | + local effects = csvdb["adv_level_fundCsv"][i].effect:toArray() | ||
883 | + for _, one in ipairs(effects) do | ||
884 | + local effect = one:toArray(true, "=") | ||
885 | + if effect[1] == 2 and ptype == effect[2] then | ||
886 | + level = effect[3] | ||
887 | + end | ||
888 | + end | ||
889 | + end | ||
890 | + return level | ||
891 | + end | ||
892 | + | ||
893 | + function Role:getAdvLvAddAttrs() | ||
894 | + -- 1=冒险队属性;1=点数/百分比=属性枚举=参数;属性枚举(1=生命上限/2=魔法上限/3=攻击/4=防御);点数/百分比(0=点数/1=百分比) | ||
895 | + local attrs = {} | ||
896 | + for i = 0, self:getProperty("advL")[1] do | ||
897 | + local effects = csvdb["adv_level_fundCsv"][i].effect:toArray() | ||
898 | + for _, one in ipairs(effects) do | ||
899 | + local effect = one:toArray(true, "=") | ||
900 | + if effect[1] == 1 then | ||
901 | + attrs[effect[2]] = (attrs[effect[2]] or 0) + effect[3] | ||
902 | + end | ||
903 | + end | ||
904 | + end | ||
905 | + return attrs | ||
906 | + end | ||
907 | + | ||
871 | function Role:getTeamBattleInfo(team) | 908 | function Role:getTeamBattleInfo(team) |
872 | local teamInfo = {heros = {}, supports = {}} | 909 | local teamInfo = {heros = {}, supports = {}} |
873 | local activeRelation = self:getHeroActiveRelation(team.heros) | 910 | local activeRelation = self:getHeroActiveRelation(team.heros) |