Commit 85ded2420393ebd8dad61ffdb753cda7bb24b540
1 parent
514590c2
丰富返回事件
Showing
5 changed files
with
33 additions
and
17 deletions
Show diff stats
src/GlobalVar.lua
@@ -137,11 +137,15 @@ AdvBackEventType = { | @@ -137,11 +137,15 @@ AdvBackEventType = { | ||
137 | Passive = 13, -- 獲得被動 | 137 | Passive = 13, -- 獲得被動 |
138 | TurnEnd = 14, -- 回合结束 | 138 | TurnEnd = 14, -- 回合结束 |
139 | Miss = 15, -- miss | 139 | Miss = 15, -- miss |
140 | - BattleBegin = 16, -- 战斗开始 | 140 | + Cost = 16, -- 消耗道具 |
141 | Trap = 17, --陷阱 | 141 | Trap = 17, --陷阱 |
142 | Layer = 18, --切换层 | 142 | Layer = 18, --切换层 |
143 | MapShow = 19, -- 展示地图 | 143 | MapShow = 19, -- 展示地图 |
144 | ChooseArtifact = 20, -- 等待选择神器 | 144 | ChooseArtifact = 20, -- 等待选择神器 |
145 | + Use = 21, -- 使用道具 | ||
146 | + Potion = 22, -- 使用营养剂 | ||
147 | + Task = 23, --接收任务 | ||
148 | + Artifact = 24, --获得神器 | ||
145 | } | 149 | } |
146 | 150 | ||
147 | AdvScoreType = { | 151 | AdvScoreType = { |
src/actions/AdvAction.lua
@@ -308,6 +308,7 @@ function _M.useItemRpc(agent, data) | @@ -308,6 +308,7 @@ function _M.useItemRpc(agent, data) | ||
308 | --消耗 | 308 | --消耗 |
309 | if itemData["function"] == 0 or itemData["function"] == 1 then | 309 | if itemData["function"] == 0 or itemData["function"] == 1 then |
310 | adv:cost({[itemId] = count}, {}) | 310 | adv:cost({[itemId] = count}, {}) |
311 | + adv:backUse({[itemId] = count}) | ||
311 | end | 312 | end |
312 | 313 | ||
313 | adv:checkAchievement(adv.AchievType.UseItem, count, itemId) | 314 | adv:checkAchievement(adv.AchievType.UseItem, count, itemId) |
@@ -345,6 +346,7 @@ function _M.usePotionRpc(agent, data) | @@ -345,6 +346,7 @@ function _M.usePotionRpc(agent, data) | ||
345 | 346 | ||
346 | potionBag[potionId] = own - 1 | 347 | potionBag[potionId] = own - 1 |
347 | role:updateProperty({field = "potionBag", value = potionBag}) | 348 | role:updateProperty({field = "potionBag", value = potionBag}) |
349 | + adv:pushBackEvent(AdvBackEventType.Potion, {id = potionId}) | ||
348 | adv:afterRound() | 350 | adv:afterRound() |
349 | adv:saveDB() | 351 | adv:saveDB() |
350 | role:checkTaskEnter("AdvUsePotion") | 352 | role:checkTaskEnter("AdvUsePotion") |
@@ -407,7 +409,7 @@ function _M.upArtifactRpc(agent, data) | @@ -407,7 +409,7 @@ function _M.upArtifactRpc(agent, data) | ||
407 | local status = adv:artifactLevelUp(id) | 409 | local status = adv:artifactLevelUp(id) |
408 | if not status then return 5 end | 410 | if not status then return 5 end |
409 | adv:cost(cost, {}) | 411 | adv:cost(cost, {}) |
410 | - | 412 | + adv:backCost(cost) |
411 | if status == 1 then -- 现在穿着呢。更新下 | 413 | if status == 1 then -- 现在穿着呢。更新下 |
412 | adv:saveDB() | 414 | adv:saveDB() |
413 | end | 415 | end |
src/adv/Adv.lua
@@ -205,6 +205,7 @@ end | @@ -205,6 +205,7 @@ end | ||
205 | function Adv:awardArtifact(id, params) | 205 | function Adv:awardArtifact(id, params) |
206 | if self:isHaveArtifact(id) then return end | 206 | if self:isHaveArtifact(id) then return end |
207 | self.owner:changeUpdates({{type = "advAFGet", field = id, value = 1}}, params.notNotify) | 207 | self.owner:changeUpdates({{type = "advAFGet", field = id, value = 1}}, params.notNotify) |
208 | + self:pushBackEvent(AdvBackEventType.Artifact, {id = id}) | ||
208 | end | 209 | end |
209 | 210 | ||
210 | 211 | ||
@@ -492,7 +493,7 @@ local function clickOut(self, room, block, params) | @@ -492,7 +493,7 @@ local function clickOut(self, room, block, params) | ||
492 | if self:getCurMap():checkOver() then --检查是否可以出去了 | 493 | if self:getCurMap():checkOver() then --检查是否可以出去了 |
493 | if #self.mapStack > 1 then -- 处于夹层中 | 494 | if #self.mapStack > 1 then -- 处于夹层中 |
494 | table.remove(self.mapStack) --退出夹层 | 495 | table.remove(self.mapStack) --退出夹层 |
495 | - self:backLayer() | 496 | + self:backLayer(-1) |
496 | else --处于底层 | 497 | else --处于底层 |
497 | 498 | ||
498 | local advPass = self.owner:getProperty("advPass") | 499 | local advPass = self.owner:getProperty("advPass") |
@@ -580,6 +581,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | @@ -580,6 +581,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | ||
580 | -- 提交一个物品 | 581 | -- 提交一个物品 |
581 | [5] = function () | 582 | [5] = function () |
582 | if self:cost({[cond[2]] = cond[3]}, {}) then | 583 | if self:cost({[cond[2]] = cond[3]}, {}) then |
584 | + self:backCost({[cond[2]] = cond[3]}) | ||
583 | return true | 585 | return true |
584 | end | 586 | end |
585 | end, | 587 | end, |
@@ -745,7 +747,7 @@ local function clickTrader(self, room, block, params) | @@ -745,7 +747,7 @@ local function clickTrader(self, room, block, params) | ||
745 | if (block.event.status or ""):getv(buyId, 0) == 1 then return end -- 买过了 | 747 | if (block.event.status or ""):getv(buyId, 0) == 1 then return end -- 买过了 |
746 | 748 | ||
747 | if not self:cost({[traderData.type] = block.event.shop[buyId][3]}, {}) then return end --不够 | 749 | if not self:cost({[traderData.type] = block.event.shop[buyId][3]}, {}) then return end --不够 |
748 | - | 750 | + self:backCost({[traderData.type] = block.event.shop[buyId][3]}) |
749 | local reward = self:award({[block.event.shop[buyId][1]] = block.event.shop[buyId][2]}) | 751 | local reward = self:award({[block.event.shop[buyId][1]] = block.event.shop[buyId][2]}) |
750 | block.event.status = block.event.status:setv(buyId, 1) | 752 | block.event.status = block.event.status:setv(buyId, 1) |
751 | self:checkTask(Adv.TaskType.Shop, 1, block.event.id) | 753 | self:checkTask(Adv.TaskType.Shop, 1, block.event.id) |
@@ -759,7 +761,7 @@ local function clickBuild(self, room, block, params) | @@ -759,7 +761,7 @@ local function clickBuild(self, room, block, params) | ||
759 | local chooseData = csvdb["event_buildingCsv"][block.event.id] | 761 | local chooseData = csvdb["event_buildingCsv"][block.event.id] |
760 | local status, clearBlock = chooseCommon(self, room, block, chooseData, choose, "build") | 762 | local status, clearBlock = chooseCommon(self, room, block, chooseData, choose, "build") |
761 | if not status then return end | 763 | if not status then return end |
762 | - | 764 | + |
763 | self:checkTask(Adv.TaskType.Build, 1, block.event.id) | 765 | self:checkTask(Adv.TaskType.Build, 1, block.event.id) |
764 | self:checkAchievement(Adv.AchievType.Build, 1, block.event.id) | 766 | self:checkAchievement(Adv.AchievType.Build, 1, block.event.id) |
765 | 767 | ||
@@ -810,7 +812,7 @@ local function clickLayer(self, room, block, params) | @@ -810,7 +812,7 @@ local function clickLayer(self, room, block, params) | ||
810 | self.battle:initMapEnemys(mapIdx) | 812 | self.battle:initMapEnemys(mapIdx) |
811 | self:checkAchievement(Adv.AchievType.EnterILayer, 1, mapId) | 813 | self:checkAchievement(Adv.AchievType.EnterILayer, 1, mapId) |
812 | end | 814 | end |
813 | - self:backLayer() | 815 | + self:backLayer(1) |
814 | return true | 816 | return true |
815 | end | 817 | end |
816 | 818 | ||
@@ -1111,7 +1113,8 @@ function Adv:enemyDead(enemy, escape) | @@ -1111,7 +1113,8 @@ function Adv:enemyDead(enemy, escape) | ||
1111 | local enemyId = block.event.id | 1113 | local enemyId = block.event.id |
1112 | local monsterData = csvdb["event_monsterCsv"][enemyId] | 1114 | local monsterData = csvdb["event_monsterCsv"][enemyId] |
1113 | self:scoreChange(AdvScoreType.Kill, monsterData.type) | 1115 | self:scoreChange(AdvScoreType.Kill, monsterData.type) |
1114 | - self.battle.player:addExp(monsterData.exp) | 1116 | + local changeV = self.battle.player:addExp(monsterData.exp) |
1117 | + self:backDead(enemyId, changeV) | ||
1115 | if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click | 1118 | if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click |
1116 | local clickId = buff:effect() | 1119 | local clickId = buff:effect() |
1117 | block:updateEvent({ | 1120 | block:updateEvent({ |
@@ -1203,20 +1206,16 @@ function Adv:backBlockChange(roomId, blockId) | @@ -1203,20 +1206,16 @@ function Adv:backBlockChange(roomId, blockId) | ||
1203 | self:pushBackEvent(AdvBackEventType.BlockChange, {roomId = roomId, blockId = blockId}) | 1206 | self:pushBackEvent(AdvBackEventType.BlockChange, {roomId = roomId, blockId = blockId}) |
1204 | end | 1207 | end |
1205 | 1208 | ||
1206 | -function Adv:backAtk(enemyId, receiver) | ||
1207 | - self:pushBackEvent(AdvBackEventType.Atk, {enemyId = enemyId, receiver = receiver}) | ||
1208 | -end | ||
1209 | - | ||
1210 | -function Adv:backDead(enemyId) | ||
1211 | - self:pushBackEvent(AdvBackEventType.Dead, {enemyId = enemyId}) | 1209 | +function Adv:backDead(enemyId, exp) |
1210 | + self:pushBackEvent(AdvBackEventType.Dead, {enemyId = enemyId, exp = exp}) | ||
1212 | end | 1211 | end |
1213 | 1212 | ||
1214 | function Adv:backTrap() | 1213 | function Adv:backTrap() |
1215 | self:pushBackEvent(AdvBackEventType.Trap, {}) | 1214 | self:pushBackEvent(AdvBackEventType.Trap, {}) |
1216 | end | 1215 | end |
1217 | 1216 | ||
1218 | -function Adv:backLayer() | ||
1219 | - self:pushBackEvent(AdvBackEventType.Layer, {}) | 1217 | +function Adv:backLayer(status) |
1218 | + self:pushBackEvent(AdvBackEventType.Layer, {status = status}) | ||
1220 | end | 1219 | end |
1221 | 1220 | ||
1222 | function Adv:backMapShow() | 1221 | function Adv:backMapShow() |
@@ -1227,6 +1226,15 @@ function Adv:backChooseArtifact() | @@ -1227,6 +1226,15 @@ function Adv:backChooseArtifact() | ||
1227 | self:pushBackEvent(AdvBackEventType.ChooseArtifact, {}) | 1226 | self:pushBackEvent(AdvBackEventType.ChooseArtifact, {}) |
1228 | end | 1227 | end |
1229 | 1228 | ||
1229 | +function Adv:backCost(items) | ||
1230 | + self:pushBackEvent(AdvBackEventType.Cost, {items = items}) | ||
1231 | +end | ||
1232 | + | ||
1233 | +function Adv:backUse(items) | ||
1234 | + self:pushBackEvent(AdvBackEventType.Use, {items = items}) | ||
1235 | +end | ||
1236 | + | ||
1237 | + | ||
1230 | function Adv:scoreChange(scoreType, pms) | 1238 | function Adv:scoreChange(scoreType, pms) |
1231 | local cutTypes = {} | 1239 | local cutTypes = {} |
1232 | local score = 0 | 1240 | local score = 0 |
src/adv/AdvPlayer.lua
@@ -415,7 +415,6 @@ function BaseObject:hurt(value, releaser, params) | @@ -415,7 +415,6 @@ function BaseObject:hurt(value, releaser, params) | ||
415 | end | 415 | end |
416 | 416 | ||
417 | self.isDead = true | 417 | self.isDead = true |
418 | - self.battle.adv:backDead(self.id) | ||
419 | end | 418 | end |
420 | self:triggerPassive(Passive.HURT_PERCENT_SELF, {value = value / self.hpMax}) | 419 | self:triggerPassive(Passive.HURT_PERCENT_SELF, {value = value / self.hpMax}) |
421 | for _, team in ipairs(self:getTeam(1, true)) do | 420 | for _, team in ipairs(self:getTeam(1, true)) do |
@@ -580,6 +579,7 @@ function Player:addExp(value) | @@ -580,6 +579,7 @@ function Player:addExp(value) | ||
580 | end | 579 | end |
581 | self.level = level | 580 | self.level = level |
582 | self.exp = newExp | 581 | self.exp = newExp |
582 | + return value | ||
583 | end | 583 | end |
584 | --vtype 0/1 值/% | 584 | --vtype 0/1 值/% |
585 | function Player:addBaseAttr(attr, value, vtype) | 585 | function Player:addBaseAttr(attr, value, vtype) |
@@ -611,6 +611,7 @@ end | @@ -611,6 +611,7 @@ end | ||
611 | 611 | ||
612 | --cType 0 or nil 值 1 百分比 | 612 | --cType 0 or nil 值 1 百分比 |
613 | function Player:changeSp(value, cType) | 613 | function Player:changeSp(value, cType) |
614 | + local oldSp = self.sp | ||
614 | cType = cType or 0 | 615 | cType = cType or 0 |
615 | if cType == 0 then | 616 | if cType == 0 then |
616 | self.sp = self.sp + value | 617 | self.sp = self.sp + value |
@@ -618,7 +619,7 @@ function Player:changeSp(value, cType) | @@ -618,7 +619,7 @@ function Player:changeSp(value, cType) | ||
618 | self.sp = self.sp + self.sp * value / 100 | 619 | self.sp = self.sp + self.sp * value / 100 |
619 | end | 620 | end |
620 | self.sp = math.floor(math.min(self.spMax, math.max(0, self.sp))) | 621 | self.sp = math.floor(math.min(self.spMax, math.max(0, self.sp))) |
621 | - self.battle.adv:pushBackEvent(AdvBackEventType.SpChange) | 622 | + self.battle.adv:pushBackEvent(AdvBackEventType.SpChange, {change = self.sp - oldSp}) |
622 | end | 623 | end |
623 | 624 | ||
624 | -- 重新计算 魔法上限 | 625 | -- 重新计算 魔法上限 |
src/adv/AdvTask.lua