Commit 4a280a9cdb6a379c709a40f62f52a34a6e9f8a7b
Merge branch 'cn/develop' into cn/player
Showing
3 changed files
with
60 additions
and
25 deletions
Show diff stats
src/actions/CarAction.lua
... | ... | @@ -209,6 +209,7 @@ function _M.saleRuneRpc(agent, data ) |
209 | 209 | |
210 | 210 | local reward, change = {} |
211 | 211 | local count = 0 |
212 | + local returnRune = {} | |
212 | 213 | for _, uid in pairs(backs) do |
213 | 214 | count = count + 1 |
214 | 215 | local rune = role.runeBag[uid] |
... | ... | @@ -223,15 +224,21 @@ function _M.saleRuneRpc(agent, data ) |
223 | 224 | |
224 | 225 | --分解铭文返还强化所需铭文碎片的60% |
225 | 226 | local level = rune:getProperty("level") |
226 | - for i = 1, level do | |
227 | - local lvData = csvdb["rune_buildCsv"][i] | |
228 | - local cost = lvData.cost:toNumMap() | |
229 | - for k, v in pairs(cost) do | |
230 | - reward[k] = (reward[k] or 0) + v*0.6 | |
227 | + if level > 0 then | |
228 | + for i = 0, level - 1 do | |
229 | + local lvData = csvdb["rune_buildCsv"][i] | |
230 | + local cost = lvData.cost:toNumMap() | |
231 | + for k, v in pairs(cost) do | |
232 | + returnRune[k] = (returnRune[k] or 0) + v | |
233 | + end | |
231 | 234 | end |
232 | 235 | end |
233 | 236 | end |
234 | 237 | |
238 | + for k, v in pairs(returnRune) do | |
239 | + reward[k] = (reward[k] or 0) + math.ceil(v*0.6) | |
240 | + end | |
241 | + | |
235 | 242 | role:delRunes(backs, {log = {desc = "saleRune"}}) |
236 | 243 | role:checkTaskEnter("DecoRune", {count = count}) |
237 | 244 | reward, change = role:award(reward, {log = {desc = "saleRune"}}) | ... | ... |
src/actions/PvpAction.lua
... | ... | @@ -371,6 +371,18 @@ function _M.endBattleRpc(agent, data) |
371 | 371 | if revenge then |
372 | 372 | match = _pvpRecordInfoCacheC[msg.idx] |
373 | 373 | _revengeRecord[match.id] = now + RevengeWaitTime -- 1分钟内不能再打 |
374 | + | |
375 | + if isWin then | |
376 | + -- 次数扣一波 | |
377 | + local pvpFree = role.dailyData:getProperty("pvpFree") | |
378 | + if pvpFree >= globalCsv.pvp_battle_free_count then | |
379 | + local cost = {[ItemId.PvpKey] = 1} | |
380 | + if not role:checkItemEnough(cost) then return 5 end | |
381 | + role:costItems(cost, {log = {desc = "startPvp", int1 = 1}}) | |
382 | + else | |
383 | + role.dailyData:updateProperty({field = "pvpFree", delta = 1}) | |
384 | + end | |
385 | + end | |
374 | 386 | else |
375 | 387 | local pvpMC = role:getProperty("pvpMC") |
376 | 388 | match = pvpMC[msg.idx] |
... | ... | @@ -630,6 +642,18 @@ function _M.endBattleHRpc(agent, data) |
630 | 642 | if revenge then |
631 | 643 | match = _pvpRecordInfoCacheH[msg.idx] |
632 | 644 | _revengeRecord[match.id] = now + RevengeWaitTime -- 1分钟内不能再打 |
645 | + | |
646 | + if isWin then | |
647 | + -- 次数扣一波 | |
648 | + local pvpFreeH = role.dailyData:getProperty("pvpFreeH") | |
649 | + if pvpFreeH >= globalCsv.pvp_battle_free_count_high then | |
650 | + local cost = {[ItemId.PvpKey] = globalCsv.pvp_battle_high_cost} | |
651 | + if not role:checkItemEnough(cost) then return 5 end | |
652 | + role:costItems(cost, {log = {desc = "startPvp", int1 = 2}}) | |
653 | + else | |
654 | + role.dailyData:updateProperty({field = "pvpFreeH", delta = 1}) | |
655 | + end | |
656 | + end | |
633 | 657 | else |
634 | 658 | local pvpMH = role:getProperty("pvpMH") |
635 | 659 | match = pvpMH[msg.idx] | ... | ... |
src/models/HeroPlugin.lua
... | ... | @@ -185,26 +185,30 @@ function HeroPlugin.bind(Hero) |
185 | 185 | for _, uid in pairs(self:getProperty("rune"):toNumMap()) do |
186 | 186 | if uid > 0 then |
187 | 187 | local rune = self.owner.runeBag[uid] |
188 | - local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] | |
189 | - local runeRareData = csvdb["rune_rareCsv"][csvData.rarity] | |
190 | - local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] | |
191 | - for k, v in pairs(rune:getProperty("attrs"):toNumMap()) do | |
192 | - local attName = AttsEnumEx[k] | |
193 | - --零件的加成属性有特殊需求 填的是 10倍的值 | |
194 | - --rare的effect不影响 特殊属性 | |
195 | - | |
196 | - --铭文单件普通属性=attr*(1+[rune_build表effect]/100*[rune_rare表effect]/100) | |
197 | - --铭文单件特殊属性=attr+[rune_build表effect] | |
198 | - | |
199 | - local effect = buildData[attName] | |
200 | - if not PercentAttr[attName] then | |
201 | - effect = buildData[attName] * runeRareData.effect / 100 | |
202 | - end | |
203 | - attrs.value[attName] = attrs.value[attName] + (v / 100) + addAttr(v / 100, effect, 1, attName) | |
204 | - end | |
205 | - | |
206 | - if not suits[csvData.suit] then suits[csvData.suit] = {} end | |
207 | - table.insert(suits[csvData.suit],csvData) | |
188 | + if not rune then | |
189 | + skynet.error(string.format("rune not exist,uid:%s,hero:%s,roleId:%s", uid, self:getProperty("id"), self:getProperty("roleid"))) | |
190 | + else | |
191 | + local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] | |
192 | + local runeRareData = csvdb["rune_rareCsv"][csvData.rarity] | |
193 | + local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] | |
194 | + for k, v in pairs(rune:getProperty("attrs"):toNumMap()) do | |
195 | + local attName = AttsEnumEx[k] | |
196 | + --零件的加成属性有特殊需求 填的是 10倍的值 | |
197 | + --rare的effect不影响 特殊属性 | |
198 | + | |
199 | + --铭文单件普通属性=attr*(1+[rune_build表effect]/100*[rune_rare表effect]/100) | |
200 | + --铭文单件特殊属性=attr+[rune_build表effect] | |
201 | + | |
202 | + local effect = buildData[attName] | |
203 | + if not PercentAttr[attName] then | |
204 | + effect = buildData[attName] * runeRareData.effect / 100 | |
205 | + end | |
206 | + attrs.value[attName] = attrs.value[attName] + (v / 100) + addAttr(v / 100, effect, 1, attName) | |
207 | + end | |
208 | + | |
209 | + if not suits[csvData.suit] then suits[csvData.suit] = {} end | |
210 | + table.insert(suits[csvData.suit],csvData) | |
211 | + end | |
208 | 212 | end |
209 | 213 | end |
210 | 214 | -- 零件套装效果 | ... | ... |