Commit 317a46a9ed113032c8ee1709008c60cedfe025c0
1 parent
e68ee005
添加特权卡
Showing
9 changed files
with
153 additions
and
38 deletions
Show diff stats
src/ProtocolCode.lua
... | ... | @@ -185,9 +185,9 @@ actionCodes = { |
185 | 185 | Store_iosRechargeRpc = 557, |
186 | 186 | Store_shopBuyRpc = 558, |
187 | 187 | Store_updateproperty = 559, |
188 | - Store_getFreeChectRpc = 559, | |
189 | - Store_getGrowFundRewardRpc = 560, --成长助力奖励 | |
190 | - Store_getBattlePassRewardRpc = 561, --赛季卡奖励 | |
188 | + Store_getFreeChectRpc = 560, | |
189 | + Store_getGrowFundRewardRpc = 561, --成长助力奖励 | |
190 | + Store_getBattlePassRewardRpc = 562, --赛季卡奖励 | |
191 | 191 | |
192 | 192 | |
193 | 193 | Email_listRpc = 600, | ... | ... |
src/actions/DinerAction.lua
... | ... | @@ -261,7 +261,14 @@ function _M.expediteSellRpc( agent, data ) |
261 | 261 | role.dinerData:setProperty("expedite",count+1) |
262 | 262 | role.dinerData:notifyUpdateProperty("expedite", count+1) |
263 | 263 | local gift = reward:toNumMap() |
264 | + | |
265 | + -- 特权卡获取加速获得额外道具 | |
266 | + local coef = role.storeData:getProduceItemSpeedCoef() | |
264 | 267 | for k, v in pairs(gift) do |
268 | + if coef > 1 then | |
269 | + v = math.floor(v * coef) | |
270 | + gift[k] = v | |
271 | + end | |
265 | 272 | if k == ItemId.Gold then |
266 | 273 | role:checkTaskEnter("FoodSellGold", {count = v}) |
267 | 274 | end | ... | ... |
src/actions/HangAction.lua
... | ... | @@ -48,7 +48,10 @@ local function checkReward(role) |
48 | 48 | curIC = curIC + count |
49 | 49 | end |
50 | 50 | end |
51 | - local selfFC = role:getProperty("hangBagLimit") --再加上月卡的栏位 TODO | |
51 | + | |
52 | + -- 特权卡挂机额外栏位 | |
53 | + local privExtraCnt = role.storeData:getHangSlotExtraCount() | |
54 | + local selfFC = role:getProperty("hangBagLimit") + privExtraCnt | |
52 | 55 | local selfIC = selfFC * globalCsv.idle_field_limit |
53 | 56 | |
54 | 57 | local function randomItem() |
... | ... | @@ -391,6 +394,15 @@ function _M.quickRpc(agent , data) |
391 | 394 | local cur = pool[math.randWeight(pool, 3)] |
392 | 395 | reward[cur[1]] = (reward[cur[1]] or 0) + cur[2] |
393 | 396 | end |
397 | + | |
398 | + -- 特权卡获取加速获得额外道具 | |
399 | + local coef = role.storeData:getProduceItemSpeedCoef() | |
400 | + if coef > 1 then | |
401 | + for k, cnt in pairs(reward) do | |
402 | + reward[k] = math.floor(cnt * coef) | |
403 | + end | |
404 | + end | |
405 | + | |
394 | 406 | local change |
395 | 407 | reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}}) |
396 | 408 | if reward[ItemId.Gold] then | ... | ... |
src/actions/HeroAction.lua
... | ... | @@ -921,32 +921,33 @@ function _M.drawHeroRpc(agent, data) |
921 | 921 | return true |
922 | 922 | end |
923 | 923 | |
924 | --- function _M.repayHeroRpc(agent, data) | |
925 | --- local role = agent.role | |
924 | +function _M.repayHeroRpc(agent, data) | |
925 | + local role = agent.role | |
926 | 926 | |
927 | --- local repayHero = role:getProperty("repayHero") | |
928 | --- if repayHero < globalCsv.draw_super_repay_count then | |
929 | --- return | |
930 | --- end | |
927 | + local repayHero = role:getProperty("repayHero") | |
928 | + if repayHero < globalCsv.draw_free_count then | |
929 | + return | |
930 | + end | |
931 | + local result = repayHero - globalCsv.draw_free_count | |
931 | 932 | |
932 | --- role:updateProperty({field = "repayHero", value = 0}) | |
933 | --- local id = math.randWeight(csvdb["build_giftCsv"], "pool_1") | |
934 | - | |
935 | --- local reward = {} | |
936 | --- local itemData = csvdb["itemCsv"][id] | |
937 | --- if itemData.type == ItemType.Hero and role:isHaveHero(itemData.id - ItemStartId.Hero) then | |
938 | --- local fragId = itemData.id - ItemStartId.Hero | |
939 | --- local heroData = csvdb["unitCsv"][fragId] | |
940 | --- local count = globalCsv.draw_unit_tofragment[heroData.rare] | |
941 | --- role:award({[fragId] = count}, {log = {desc = "heroRepay"}}) | |
942 | --- reward = {id = fragId, count = count, from = id, fcount = 1} | |
943 | --- else | |
944 | --- role:award({[id] = 1}, {log = {desc = "heroRepay"}}) | |
945 | --- reward = {id = id, count = 1} | |
946 | --- end | |
947 | --- role:log("hero_action", {desc = "heroRepay"}) | |
948 | --- SendPacket(actionCodes.Hero_repayHeroRpc, MsgPack.pack({reward = reward})) | |
949 | --- return true | |
950 | --- end | |
933 | + role:updateProperty({field = "repayHero", value = result}) | |
934 | + local id = math.randWeight(csvdb["build_giftCsv"], "pool_1") | |
935 | + | |
936 | + local reward = {} | |
937 | + local itemData = csvdb["itemCsv"][id] | |
938 | + if itemData.type == ItemType.Hero and role:isHaveHero(itemData.id - ItemStartId.Hero) then | |
939 | + local fragId = itemData.id - ItemStartId.Hero | |
940 | + local heroData = csvdb["unitCsv"][fragId] | |
941 | + local count = globalCsv.draw_unit_tofragment[heroData.rare] | |
942 | + role:award({[fragId] = count}, {log = {desc = "heroRepay"}}) | |
943 | + reward = {id = fragId, count = count, from = id, fcount = 1} | |
944 | + else | |
945 | + role:award({[id] = 1}, {log = {desc = "heroRepay"}}) | |
946 | + reward = {id = id, count = 1} | |
947 | + end | |
948 | + role:log("hero_action", {desc = "heroRepay", int1=result}) | |
949 | + SendPacket(actionCodes.Hero_repayHeroRpc, MsgPack.pack({reward = reward})) | |
950 | + return true | |
951 | +end | |
951 | 952 | |
952 | 953 | return _M |
953 | 954 | \ No newline at end of file | ... | ... |
src/actions/RoleAction.lua
... | ... | @@ -459,7 +459,12 @@ function _M.openTimeBoxRpc(agent, data) |
459 | 459 | local msg = MsgPack.unpack(data) |
460 | 460 | local oper = msg.oper -- 操作 1 - 2 |
461 | 461 | local slot = msg.slot -- 位置 1 - 6 |
462 | - if math.illegalNum(slot, 1, role:getFuncLv(FuncOpenType.TimeBoxSlot)) then return end | |
462 | + | |
463 | + -- 特权卡时间箱额外栏位 | |
464 | + local privExtraCnt = role.storeData:getTimeBoxSlotExtraCount() | |
465 | + if oper == 1 then | |
466 | + if math.illegalNum(slot, 1, role:getFuncLv(FuncOpenType.TimeBoxSlot) + privExtraCnt) then return end | |
467 | + end | |
463 | 468 | |
464 | 469 | local boxL = role:getProperty("boxL") |
465 | 470 | local reward, change = {} |
... | ... | @@ -635,7 +640,7 @@ function _M.taskRpc(agent, data) |
635 | 640 | |
636 | 641 | if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end |
637 | 642 | |
638 | - local taskType = msg.type -- 1 日常 2 周长 | |
643 | + local taskType = msg.type -- 1 日常 2 周常 | |
639 | 644 | local taskId = msg.id --任务id |
640 | 645 | local roleField = {"dTask", "wTask"} |
641 | 646 | if not roleField[taskType] then return 1 end |
... | ... | @@ -655,9 +660,11 @@ function _M.taskRpc(agent, data) |
655 | 660 | |
656 | 661 | role:changeUpdates({ |
657 | 662 | { type = roleField[taskType], field = {"t", taskId}, value = -1 }, |
658 | - { type = roleField[taskType], field = "a", value = active} | |
663 | + { type = roleField[taskType], field = "a", value = active}, | |
659 | 664 | }) |
660 | 665 | |
666 | + role:updateProperty({field = "battlePoint", role:getProperty("battlePoint") + 100}) | |
667 | + | |
661 | 668 | SendPacket(actionCodes.Role_taskRpc, MsgPack.pack(role:packReward(reward, change))) |
662 | 669 | return true |
663 | 670 | end |
... | ... | @@ -1047,6 +1054,8 @@ function _M.goldBuyRpc(agent, data) |
1047 | 1054 | if goldC == 0 then |
1048 | 1055 | return 3 |
1049 | 1056 | end |
1057 | + local coef = role.storeData:getGearExchangeCoef() | |
1058 | + goldC = goldC * coef | |
1050 | 1059 | role.dailyData:updateProperty({field = "goldBuyT", value = curT + 1}) |
1051 | 1060 | role:costItems({[ItemId.Diamond] = costD}, {log = {desc = "goldBuy"}}) |
1052 | 1061 | local reward, change = role:award({[ItemId.Gold] = goldC}, {log = {desc = "goldBuy"}}) | ... | ... |
src/actions/StoreAction.lua
... | ... | @@ -323,6 +323,7 @@ function _M.getFreeCheckRpc(agent, data) |
323 | 323 | role.storeData:updateProperty({field = "payR", value = rechargeRecord}) |
324 | 324 | |
325 | 325 | SendPacket(actionCodes.Store_getFreeChectRpc, MsgPack.pack({reward = reward})) |
326 | + return true | |
326 | 327 | end |
327 | 328 | |
328 | 329 | function _M.getGrowFundRewardRpc(agent, data) |
... | ... | @@ -358,6 +359,7 @@ function _M.getGrowFundRewardRpc(agent, data) |
358 | 359 | local reward, _ = role:award(gift, {log = {desc = "grownFund", int1 = id}}) |
359 | 360 | |
360 | 361 | SendPacket(actionCodes.Store_getGrowFundRewardRpc, MsgPack.pack({reward = reward})) |
362 | + return true | |
361 | 363 | end |
362 | 364 | |
363 | 365 | function _M.getBattlePassRewardRpc(agent, data) |
... | ... | @@ -406,6 +408,7 @@ function _M.getBattlePassRewardRpc(agent, data) |
406 | 408 | local reward, _ = role:award(gift, {log = {desc = "battleCard", int1 = id}}) |
407 | 409 | |
408 | 410 | SendPacket(actionCodes.Store_getBattlePassRewardRpc, MsgPack.pack({reward = reward})) |
411 | + return true | |
409 | 412 | end |
410 | 413 | |
411 | 414 | return _M |
412 | 415 | \ No newline at end of file | ... | ... |
src/models/Daily.lua
src/models/Role.lua
... | ... | @@ -20,6 +20,7 @@ function Role:ctor( properties ) |
20 | 20 | Role.super.ctor(self, properties) |
21 | 21 | self.ignoreHeartbeat = false |
22 | 22 | self.dailyData = nil |
23 | + self.storeData = nil | |
23 | 24 | self.heros = {} |
24 | 25 | self.runeBag = {} |
25 | 26 | self.advData = nil |
... | ... | @@ -140,12 +141,13 @@ Role.schema = { |
140 | 141 | |
141 | 142 | rechargeF = {"table", {}}, -- 是否首次充值某一项 -- —{[id] = 1} -- 不存在就是没有充值过 |
142 | 143 | dinerS = {"table", {}}, -- 美食币商城 购买记录 {[id] = count} |
144 | + battlePoint = {"number", 0}, -- 赛季卡使用的活跃点 | |
143 | 145 | |
144 | 146 | rmbC = {"number", 0}, -- 人民币重置额 |
145 | 147 | |
146 | 148 | emailSync = {"number", 0}, -- 已经同步到的邮件Id |
147 | 149 | |
148 | - -- repayHero = {"number", 0}, -- 超级招募 回馈 | |
150 | + repayHero = {"number", 0}, -- 超级招募 回馈 | |
149 | 151 | floorHero = {"table", {}}, -- 招募保底 -- {[poolId] = count} |
150 | 152 | ssrUp = {"table", {}}, -- ssr up -- {[poolId] = count} |
151 | 153 | newerDraw = {"table", {}}, -- 新手池子 {N, 1} 抽了多少次, 是否出了ssr |
... | ... | @@ -360,6 +362,7 @@ function Role:data() |
360 | 362 | |
361 | 363 | rechargeF = self:getProperty("rechargeF"), |
362 | 364 | dinerS = self:getProperty("dinerS"), |
365 | + battlePoint = self:getProperty("battlePoint"), | |
363 | 366 | |
364 | 367 | rmbC = self:getProperty("rmbC"), |
365 | 368 | -- repayHero = self:getProperty("repayHero"), | ... | ... |
src/models/Store.lua
... | ... | @@ -16,7 +16,8 @@ Store.schema = { |
16 | 16 | battleCardEx = {"number", 0}, -- 赛季卡过期时间戳 |
17 | 17 | battleFR = {"string", ""}, -- 免费赛季卡领取记录 |
18 | 18 | battleLR = {"string", ""}, -- 付费赛季卡领取记录 |
19 | - limitTPack = {"table", {}} -- 限时礼包 {id=expire_ts} | |
19 | + limitTPack = {"table", {}}, -- 限时礼包 {id=expire_ts} | |
20 | + privCardEx = {"number", 0} -- 特权卡过期时间戳 | |
20 | 21 | } |
21 | 22 | |
22 | 23 | function Store:updateProperty(params) |
... | ... | @@ -81,19 +82,95 @@ function Store:sendMonthCardEmail() |
81 | 82 | end |
82 | 83 | end |
83 | 84 | |
85 | +function Store:isMonthCardExpire() | |
86 | + local timeNow = skynet.timex() | |
87 | + local ts = self:getProperty("monthCardEx") | |
88 | + return ts < timeNow | |
89 | +end | |
90 | + | |
91 | +function Store:isSuperMonthCardExpire() | |
92 | + local timeNow = skynet.timex() | |
93 | + local ts = self:getProperty("smonthCardEx") | |
94 | + return ts < timeNow | |
95 | +end | |
96 | + | |
97 | +function Store:isPrivCardExpire() | |
98 | + local timeNow = skynet.timex() | |
99 | + local ts = self:getProperty("privCardEx") | |
100 | + return ts < timeNow | |
101 | +end | |
102 | + | |
103 | +function Store:isBattleCardExpire() | |
104 | + local timeNow = skynet.timex() | |
105 | + local ts = self:getProperty("battleCardEx") | |
106 | + return ts < timeNow | |
107 | +end | |
108 | + | |
109 | +-- 挂机栏位 特权卡额外个数 | |
110 | +function Store:getHangSlotExtraCount() | |
111 | + if self:isPrivCardExpire() then | |
112 | + return 0 | |
113 | + end | |
114 | + | |
115 | + return 4 | |
116 | +end | |
117 | + | |
118 | +-- 探索加速/餐厅加速 特权卡系数 | |
119 | +function Store:getProduceItemSpeedCoef() | |
120 | + if self:isPrivCardExpire() then | |
121 | + return 1 | |
122 | + end | |
123 | + | |
124 | + return 1 + 0.25 | |
125 | +end | |
126 | + | |
127 | +-- 拆解室栏位 特权卡额外个数 | |
128 | +function Store:getTimeBoxSlotExtraCount() | |
129 | + if self:isPrivCardExpire() then | |
130 | + return 0 | |
131 | + end | |
132 | + | |
133 | + return 3 | |
134 | +end | |
135 | + | |
136 | +-- 齿轮兑换 特权卡系数 | |
137 | +function Store:getGearExchangeCoef() | |
138 | + if self:isPrivCardExpire() then | |
139 | + return 1 | |
140 | + end | |
141 | + | |
142 | + return 1 + 0.5 | |
143 | +end | |
144 | + | |
84 | 145 | -- 购买通行证 |
85 | 146 | function Store:onBuyCard(type, duration) |
86 | - duration = duration == "" and 0 or tonumber(duration) | |
87 | 147 | local timeNow = skynet.timex() |
88 | 148 | if type == CardType.NormalMonthCard then |
89 | - self:updateProperty({field = "monthCardEx", value = timeNow + duration}) | |
149 | + if self:isMonthCardExpire() then | |
150 | + self:updateProperty({field = "monthCardEx", value = timeNow + duration}) | |
151 | + else | |
152 | + self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration}) | |
153 | + end | |
90 | 154 | elseif type == CardType.SuperMonthCard then |
91 | - self:updateProperty({field = "smonthCardEx", value = timeNow + duration}) | |
155 | + if self:isSuperMonthCardExpire() then | |
156 | + self:updateProperty({field = "smonthCardEx", value = timeNow + duration}) | |
157 | + else | |
158 | + self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration}) | |
159 | + end | |
92 | 160 | elseif type == CardType.PrivilegeCard then |
161 | + if self:isPrivCardExpire() then | |
162 | + self:updateProperty({field = "privCardEx", value = timeNow + duration}) | |
163 | + else | |
164 | + self:updateProperty({field = "privCardEx", value = self:getProperty("privCardEx") + duration}) | |
165 | + end | |
93 | 166 | elseif type == CardType.GrowFund then |
94 | 167 | self:updateProperty({field = "growFund", value = 1}) |
95 | 168 | elseif type == CardType.BattleCard then |
96 | - self:updateProperty({field = "battleCardEx", value = timeNow + duration}) | |
169 | + if self:isBattleCardExpire() then | |
170 | + self:updateProperty({field = "battleCardEx", value = timeNow + duration}) | |
171 | + else | |
172 | + self:updateProperty({field = "battleCardEx", value = self:getProperty("battleCardEx") + duration}) | |
173 | + end | |
97 | 174 | end |
98 | 175 | end |
99 | 176 | |
... | ... | @@ -128,6 +205,7 @@ function Store:data() |
128 | 205 | battleCardEx = self:getProperty("battleCardEx"), |
129 | 206 | battleCardR = self:getProperty("battleCardR"), |
130 | 207 | limitTPack = self:getProperty("limitTPack"), |
208 | + privCardEx = self:getProperty("privCardEx"), | |
131 | 209 | } |
132 | 210 | end |
133 | 211 | ... | ... |