Commit 0e9ae3ee284242e5568148ea596c0772e1e61631
Merge branch 'tr/bugfix' into tr/publish/release
* tr/bugfix: 召唤怪物 指定地点 玩家buff 屏蔽 战令活动开启时清除购买记录,新增Boss挑战门票类型道具 type=20 buff 叠加判定 某些陷阱不触发被动 战令活动过期清购买记录, 升级月卡只能同等级续费 月卡升级 # Conflicts: # src/csvdata
Showing
7 changed files
with
97 additions
and
8 deletions
Show diff stats
src/GlobalVar.lua
... | ... | @@ -80,6 +80,7 @@ ItemType = { |
80 | 80 | SpeedBox = 16, -- 加速箱子 |
81 | 81 | SelectItemBox = 17, -- 自选箱子 |
82 | 82 | CommonPaster = 18, -- 万能贴纸 |
83 | + BossTicket = 20, -- boss挑战门票 | |
83 | 84 | } |
84 | 85 | |
85 | 86 | --在这个里面的会记录的是功能开放 对应类型open 而不是 ID |
... | ... | @@ -310,6 +311,8 @@ CardType = { |
310 | 311 | PaySignCard = 6, -- 付费签到卡 |
311 | 312 | BattlePassCard = 7, -- 探索指令 |
312 | 313 | ActBattleCommandCard = 8, -- 战令活动卡 |
314 | + NormalMonthCardLevelUp = 9, -- 月卡升级 | |
315 | + SuperMonthCardLevelUp = 10, -- 超级月卡升级 | |
313 | 316 | } |
314 | 317 | |
315 | 318 | ShopPackType = { | ... | ... |
src/adv/AdvBlock.lua
... | ... | @@ -215,7 +215,9 @@ function Block:randomEvent() |
215 | 215 | randomFunc[AdvEventType.Trap] = function() |
216 | 216 | local data = csvdb["event_trapCsv"][self.event.id] |
217 | 217 | -- 因为一些神器效果 提前触发被动 |
218 | - adv.battle.player:triggerPassive(Passive.CLICK_TRAP) | |
218 | + if not data.classify:sismember(1, " ") then | |
219 | + adv.battle.player:triggerPassive(Passive.CLICK_TRAP) | |
220 | + end | |
219 | 221 | |
220 | 222 | local buffs = data.effect:toArray(true, "=") |
221 | 223 | ... | ... |
src/adv/AdvBuff.lua
... | ... | @@ -704,11 +704,13 @@ function Buff:overlay(releaser, data, layer) |
704 | 704 | |
705 | 705 | self.release = releaser or self.release |
706 | 706 | -- 叠加层数 |
707 | + local oldLayer = self.layer | |
707 | 708 | self.layer = self.layer + layer |
708 | 709 | if maxLayer ~= 0 then |
709 | 710 | self.layer = math.min(maxLayer, self.layer) |
710 | 711 | end |
711 | - if self._overlay then | |
712 | + | |
713 | + if oldLayer ~= self.layer and self._overlay then | |
712 | 714 | self:_overlay() |
713 | 715 | end |
714 | 716 | ... | ... |
src/adv/AdvPassive.lua
... | ... | @@ -565,6 +565,16 @@ end |
565 | 565 | |
566 | 566 | -- 在指定地点召唤event项目 |
567 | 567 | function Passive:effect12(eventType, triggerPms, eventId, count, stage) |
568 | + if eventType == AdvEventType.Monster then | |
569 | + for _, buff in ipairs(self.owner.battle.player.buffs) do | |
570 | + if not buff.isDel and buff:getType() == buff.Buff_NO_PASSIVE_MONSTER then | |
571 | + local effect = buff:effect() | |
572 | + if effect == 0 or effect == eventId then | |
573 | + return | |
574 | + end | |
575 | + end | |
576 | + end | |
577 | + end | |
568 | 578 | local change = self.owner.battle.adv:getCurMap():layEventToStage(eventType, eventId, count, stage) |
569 | 579 | for _, one in ipairs(change) do |
570 | 580 | self.owner.battle.adv:backBlockChange(one[1].roomId, one[2].blockId) | ... | ... |
src/models/Activity.lua
... | ... | @@ -1039,6 +1039,14 @@ activityFunc[Activity.ActivityType.BattleCommand] = { |
1039 | 1039 | ["init"] = function (self, actType, isCrossDay, notify, actId) |
1040 | 1040 | local data = {unlock = 0, freeR = "", payR = "", lvl = 0, sum = 0, week = 0} |
1041 | 1041 | self:updateActData(actType, data, not notify) |
1042 | + | |
1043 | + local rechargeRecord = self.owner.storeData:getProperty("payR") | |
1044 | + for id, cfg in pairs(csvdb["shop_rechargeCsv"]) do | |
1045 | + if cfg.shop == 2 and cfg.type == CardType.ActBattleCommandCard then | |
1046 | + rechargeRecord[id] = nil | |
1047 | + end | |
1048 | + end | |
1049 | + self.owner.storeData:updateProperty({field="payR", value=rechargeRecord}) | |
1042 | 1050 | end, |
1043 | 1051 | ["check"] = function(self, actType, notify, id, count) -- 检查 itemid, count |
1044 | 1052 | local isOpen, actId = self:isOpen(actType) |
... | ... | @@ -1082,6 +1090,15 @@ activityFunc[Activity.ActivityType.BattleCommand] = { |
1082 | 1090 | actData["week"] = 0 |
1083 | 1091 | self:updateActData(actType, actData, true) |
1084 | 1092 | end, |
1093 | + ["close"] = function (self, actType, notify, actId) | |
1094 | + local rechargeRecord = self.owner.storeData:getProperty("payR") | |
1095 | + for id, cfg in pairs(csvdb["shop_rechargeCsv"]) do | |
1096 | + if cfg.shop == 2 and cfg.type == CardType.ActBattleCommandCard then | |
1097 | + rechargeRecord[id] = nil | |
1098 | + end | |
1099 | + end | |
1100 | + self.owner.storeData:updateProperty({field="payR", value=rechargeRecord}) | |
1101 | + end, | |
1085 | 1102 | } |
1086 | 1103 | |
1087 | 1104 | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -134,6 +134,12 @@ function RolePlugin.bind(Role) |
134 | 134 | [ItemType.Potion] = function () |
135 | 135 | self:addPotion({id = itemId, count = count, notNotify = pms.notNotify, log = pms.log}) |
136 | 136 | end, |
137 | + [ItemType.BossTicket] = function () | |
138 | + if not self.activity:isOpen("ChallengeLevel") then return end | |
139 | + local actData = self.activity:getActData("ChallengeLevel") | |
140 | + actData["ticket"] = (actData["ticket"] or 0) + count | |
141 | + self.activity:updateActData("ChallengeLevel", actData) | |
142 | + end, | |
137 | 143 | } |
138 | 144 | |
139 | 145 | if count > 0 then | ... | ... |
src/models/Store.lua
... | ... | @@ -17,7 +17,9 @@ Store.schema = { |
17 | 17 | growFundR = {"string", ""}, -- 成长基金领取记录 |
18 | 18 | |
19 | 19 | monthCardEx = {"number", 0}, -- 月卡过期时间戳 |
20 | + monthCardId = {"number", 0}, -- 月卡id | |
20 | 21 | smonthCardEx = {"number", 0}, -- 超级月卡过期时间戳 |
22 | + smonthCardId = {"number", 0}, -- 超级月卡id | |
21 | 23 | |
22 | 24 | battleCard = {"number", 0}, -- 赛季卡 |
23 | 25 | battleFR = {"string", ""}, -- 免费赛季卡领取记录 |
... | ... | @@ -51,7 +53,7 @@ function Store:updateProperty(params) |
51 | 53 | return |
52 | 54 | end |
53 | 55 | local newValue = self:getProperty(params.field) |
54 | - if not params.notNotify then | |
56 | + if not params.notNotify then | |
55 | 57 | self:notifyUpdateProperty(params.field, newValue, oldValue) |
56 | 58 | end |
57 | 59 | end |
... | ... | @@ -77,13 +79,16 @@ end |
77 | 79 | -- 发送月卡邮件 |
78 | 80 | function Store:sendMonthCardEmail() |
79 | 81 | local timeNow = skynet.timex() |
80 | - local tabs = {{ex="monthCardEx", t="getMailT1", mail=MailId.MonthCard, alert=MailId.MonthCardEx}, | |
81 | - {ex="smonthCardEx", t="getMailT2", mail=MailId.SuperMonthCard, alert=MailId.SuperMonthCardEx}} | |
82 | + | |
83 | + local tabs = {{ex="monthCardEx", t="getMailT1", id= self:getProperty("monthCardId")}, | |
84 | + {ex="smonthCardEx", t="getMailT2", id=self:getProperty("smonthCardId")}} | |
82 | 85 | for _, v in ipairs(tabs) do |
83 | 86 | local ex = self:getProperty(v.ex) |
84 | 87 | local ts = self:getProperty(v.t) or 0 |
85 | - local mailId = v.mail | |
86 | - local alertId = v.alert | |
88 | + local cfg = csvdb["shop_cardCsv"][v.id] or {} | |
89 | + | |
90 | + local mailId = cfg.email | |
91 | + local alertId = cfg.email_2 | |
87 | 92 | local alertTs = dayLater(ex) - DAY_SEC |
88 | 93 | if ex > timeNow then |
89 | 94 | local cnt = 0 |
... | ... | @@ -184,24 +189,66 @@ function Store:getHangDropCoef() |
184 | 189 | return (1 + globalCsv.hang_drop_exp_coef) or 1, (1 + globalCsv.hang_drop_item_coef) or 1 |
185 | 190 | end |
186 | 191 | |
192 | +function Store:getCurMonthCardLvl(isSuper) | |
193 | + local id = 0 | |
194 | + if isSuper then | |
195 | + id = self:getProperty("smonthCardId") or 0 | |
196 | + else | |
197 | + id = self:getProperty("monthCardId") or 0 | |
198 | + end | |
199 | + local cfg = csvdb["shop_cardCsv"][id] | |
200 | + if not cfg then return 0 end | |
201 | + | |
202 | + return cfg.level or 0 | |
203 | +end | |
187 | 204 | |
188 | 205 | -- 购买通行证 |
189 | 206 | function Store:onBuyCard(type, duration, id, actid) |
190 | 207 | local timeNow = skynet.timex() |
191 | 208 | if type == CardType.NormalMonthCard then |
192 | 209 | if self:isMonthCardExpire() then |
210 | + self:updateProperty({field = "monthCardId", value = id}) | |
193 | 211 | self:updateProperty({field = "monthCardEx", value = timeNow + duration}) |
194 | 212 | else |
195 | 213 | self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration}) |
196 | 214 | end |
197 | 215 | self:sendMonthCardEmail() |
216 | + elseif type == CardType.NormalMonthCardLevelUp then | |
217 | + if self:isMonthCardExpire() then | |
218 | + skynet.error(string.format("month card expired, can not level up,%d,%d",self.owner:getProperty("id"), id)) | |
219 | + else | |
220 | + local cfg = csvdb["shop_cardCsv"][id] | |
221 | + if not cfg then return end | |
222 | + local dif = cfg.level - self:getCurMonthCardLvl(false) | |
223 | + if dif > 1 and dif < 0 then | |
224 | + return | |
225 | + end | |
226 | + self:updateProperty({field = "monthCardId", value = id}) | |
227 | + self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration}) | |
228 | + end | |
229 | + self:sendMonthCardEmail() | |
198 | 230 | elseif type == CardType.SuperMonthCard then |
199 | 231 | if self:isSuperMonthCardExpire() then |
232 | + self:updateProperty({field = "smonthCardId", value = id}) | |
200 | 233 | self:updateProperty({field = "smonthCardEx", value = timeNow + duration}) |
201 | 234 | else |
202 | 235 | self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration}) |
203 | 236 | end |
204 | 237 | self:sendMonthCardEmail() |
238 | + elseif type == CardType.SuperMonthCardLevelUp then | |
239 | + if self:isSuperMonthCardExpire() then | |
240 | + skynet.error(string.format("super month card expired, can not level up,%d,%d",self.owner:getProperty("id"), id)) | |
241 | + else | |
242 | + local cfg = csvdb["shop_cardCsv"][id] | |
243 | + if not cfg then return end | |
244 | + local dif = cfg.level - self:getCurMonthCardLvl(true) | |
245 | + if dif > 1 and dif < 0 then | |
246 | + return | |
247 | + end | |
248 | + self:updateProperty({field = "smonthCardId", value = id}) | |
249 | + self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration}) | |
250 | + end | |
251 | + self:sendMonthCardEmail() | |
205 | 252 | elseif type == CardType.PrivilegeCard then |
206 | 253 | if self:isPrivCardExpire() then |
207 | 254 | self:updateProperty({field = "privCardEx", value = timeNow + duration}) |
... | ... | @@ -253,7 +300,7 @@ function Store:notifyUpdateProperty(field, newValue, oldValue) |
253 | 300 | key = field, |
254 | 301 | newValue = newValue, |
255 | 302 | oldValue = oldValue, |
256 | - } | |
303 | + } | |
257 | 304 | SendPacket(actionCodes.Store_updateproperty, MsgPack.pack(datas)) |
258 | 305 | end |
259 | 306 | |
... | ... | @@ -494,6 +541,8 @@ function Store:data() |
494 | 541 | actGoodsFlag = self:getProperty("actGoodsFlag"), |
495 | 542 | bpInfo = self:getProperty("bpInfo"), |
496 | 543 | totalRR = self:getProperty("totalRR"), |
544 | + monthCardId = self:getProperty("monthCardId"), | |
545 | + smonthCardId = self:getProperty("smonthCardId"), | |
497 | 546 | } |
498 | 547 | end |
499 | 548 | ... | ... |