From 85ded2420393ebd8dad61ffdb753cda7bb24b540 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Fri, 17 Jan 2020 15:07:33 +0800 Subject: [PATCH] 丰富返回事件 --- src/GlobalVar.lua | 6 +++++- src/actions/AdvAction.lua | 4 +++- src/adv/Adv.lua | 34 +++++++++++++++++++++------------- src/adv/AdvPlayer.lua | 5 +++-- src/adv/AdvTask.lua | 1 + 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index 8896a89..870120c 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -137,11 +137,15 @@ AdvBackEventType = { Passive = 13, -- 獲得被動 TurnEnd = 14, -- 回合结束 Miss = 15, -- miss - BattleBegin = 16, -- 战斗开始 + Cost = 16, -- 消耗道具 Trap = 17, --陷阱 Layer = 18, --切换层 MapShow = 19, -- 展示地图 ChooseArtifact = 20, -- 等待选择神器 + Use = 21, -- 使用道具 + Potion = 22, -- 使用营养剂 + Task = 23, --接收任务 + Artifact = 24, --获得神器 } AdvScoreType = { diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 6a83b7c..d9f8808 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -308,6 +308,7 @@ function _M.useItemRpc(agent, data) --消耗 if itemData["function"] == 0 or itemData["function"] == 1 then adv:cost({[itemId] = count}, {}) + adv:backUse({[itemId] = count}) end adv:checkAchievement(adv.AchievType.UseItem, count, itemId) @@ -345,6 +346,7 @@ function _M.usePotionRpc(agent, data) potionBag[potionId] = own - 1 role:updateProperty({field = "potionBag", value = potionBag}) + adv:pushBackEvent(AdvBackEventType.Potion, {id = potionId}) adv:afterRound() adv:saveDB() role:checkTaskEnter("AdvUsePotion") @@ -407,7 +409,7 @@ function _M.upArtifactRpc(agent, data) local status = adv:artifactLevelUp(id) if not status then return 5 end adv:cost(cost, {}) - + adv:backCost(cost) if status == 1 then -- 现在穿着呢。更新下 adv:saveDB() end diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 6ff8ac8..29a8ebc 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -205,6 +205,7 @@ end function Adv:awardArtifact(id, params) if self:isHaveArtifact(id) then return end self.owner:changeUpdates({{type = "advAFGet", field = id, value = 1}}, params.notNotify) + self:pushBackEvent(AdvBackEventType.Artifact, {id = id}) end @@ -492,7 +493,7 @@ local function clickOut(self, room, block, params) if self:getCurMap():checkOver() then --检查是否可以出去了 if #self.mapStack > 1 then -- 处于夹层中 table.remove(self.mapStack) --退出夹层 - self:backLayer() + self:backLayer(-1) else --处于底层 local advPass = self.owner:getProperty("advPass") @@ -580,6 +581,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) -- 提交一个物品 [5] = function () if self:cost({[cond[2]] = cond[3]}, {}) then + self:backCost({[cond[2]] = cond[3]}) return true end end, @@ -745,7 +747,7 @@ local function clickTrader(self, room, block, params) if (block.event.status or ""):getv(buyId, 0) == 1 then return end -- 买过了 if not self:cost({[traderData.type] = block.event.shop[buyId][3]}, {}) then return end --不够 - + self:backCost({[traderData.type] = block.event.shop[buyId][3]}) local reward = self:award({[block.event.shop[buyId][1]] = block.event.shop[buyId][2]}) block.event.status = block.event.status:setv(buyId, 1) self:checkTask(Adv.TaskType.Shop, 1, block.event.id) @@ -759,7 +761,7 @@ local function clickBuild(self, room, block, params) local chooseData = csvdb["event_buildingCsv"][block.event.id] local status, clearBlock = chooseCommon(self, room, block, chooseData, choose, "build") if not status then return end - + self:checkTask(Adv.TaskType.Build, 1, block.event.id) self:checkAchievement(Adv.AchievType.Build, 1, block.event.id) @@ -810,7 +812,7 @@ local function clickLayer(self, room, block, params) self.battle:initMapEnemys(mapIdx) self:checkAchievement(Adv.AchievType.EnterILayer, 1, mapId) end - self:backLayer() + self:backLayer(1) return true end @@ -1111,7 +1113,8 @@ function Adv:enemyDead(enemy, escape) local enemyId = block.event.id local monsterData = csvdb["event_monsterCsv"][enemyId] self:scoreChange(AdvScoreType.Kill, monsterData.type) - self.battle.player:addExp(monsterData.exp) + local changeV = self.battle.player:addExp(monsterData.exp) + self:backDead(enemyId, changeV) if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click local clickId = buff:effect() block:updateEvent({ @@ -1203,20 +1206,16 @@ function Adv:backBlockChange(roomId, blockId) self:pushBackEvent(AdvBackEventType.BlockChange, {roomId = roomId, blockId = blockId}) end -function Adv:backAtk(enemyId, receiver) - self:pushBackEvent(AdvBackEventType.Atk, {enemyId = enemyId, receiver = receiver}) -end - -function Adv:backDead(enemyId) - self:pushBackEvent(AdvBackEventType.Dead, {enemyId = enemyId}) +function Adv:backDead(enemyId, exp) + self:pushBackEvent(AdvBackEventType.Dead, {enemyId = enemyId, exp = exp}) end function Adv:backTrap() self:pushBackEvent(AdvBackEventType.Trap, {}) end -function Adv:backLayer() - self:pushBackEvent(AdvBackEventType.Layer, {}) +function Adv:backLayer(status) + self:pushBackEvent(AdvBackEventType.Layer, {status = status}) end function Adv:backMapShow() @@ -1227,6 +1226,15 @@ function Adv:backChooseArtifact() self:pushBackEvent(AdvBackEventType.ChooseArtifact, {}) end +function Adv:backCost(items) + self:pushBackEvent(AdvBackEventType.Cost, {items = items}) +end + +function Adv:backUse(items) + self:pushBackEvent(AdvBackEventType.Use, {items = items}) +end + + function Adv:scoreChange(scoreType, pms) local cutTypes = {} local score = 0 diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 966203e..dc5a177 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -415,7 +415,6 @@ function BaseObject:hurt(value, releaser, params) end self.isDead = true - self.battle.adv:backDead(self.id) end self:triggerPassive(Passive.HURT_PERCENT_SELF, {value = value / self.hpMax}) for _, team in ipairs(self:getTeam(1, true)) do @@ -580,6 +579,7 @@ function Player:addExp(value) end self.level = level self.exp = newExp + return value end --vtype 0/1 值/% function Player:addBaseAttr(attr, value, vtype) @@ -611,6 +611,7 @@ end --cType 0 or nil 值 1 百分比 function Player:changeSp(value, cType) + local oldSp = self.sp cType = cType or 0 if cType == 0 then self.sp = self.sp + value @@ -618,7 +619,7 @@ function Player:changeSp(value, cType) self.sp = self.sp + self.sp * value / 100 end self.sp = math.floor(math.min(self.spMax, math.max(0, self.sp))) - self.battle.adv:pushBackEvent(AdvBackEventType.SpChange) + self.battle.adv:pushBackEvent(AdvBackEventType.SpChange, {change = self.sp - oldSp}) end -- 重新计算 魔法上限 diff --git a/src/adv/AdvTask.lua b/src/adv/AdvTask.lua index 8b93138..d373006 100644 --- a/src/adv/AdvTask.lua +++ b/src/adv/AdvTask.lua @@ -118,6 +118,7 @@ function AdvTask.bind(Adv) end advTaskChange.t = true + self:pushBackEvent(AdvBackEventType.Task, {id = taskId}) return true end end -- libgit2 0.21.2