From db3c56add8efd936a3a55f4b2b55cab18a708658 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Wed, 8 Jan 2020 09:43:20 +0800 Subject: [PATCH] 冒险相关 --- src/GlobalVar.lua | 1 - src/actions/AdvAction.lua | 2 +- src/actions/GmAction.lua | 13 +++++++++++++ src/adv/Adv.lua | 47 ++++++++++++++++++++++++++++++----------------- src/adv/AdvBuff.lua | 7 +++++++ src/models/Role.lua | 1 + src/models/RolePlugin.lua | 4 +++- 7 files changed, 55 insertions(+), 20 deletions(-) diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index aef19f3..93d085b 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -52,7 +52,6 @@ ItemType = { FuncOpenType = { AdvEndless = 2, -- 无尽模式 AdvRelay = 3, -- 中继开放 - AdvArtifact = 4, -- 神器开放 AdvWS = 6, -- 工坊解锁 AdvWheelSurf = 7, -- 抽奖解锁 } diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index f12b36a..51581b0 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -296,7 +296,7 @@ function _M.useItemRpc(agent, data) adv:cost({[itemId] = count}, {}) end - adv:checkAchievement(Adv.AchievType.UseItem, count, itemId) + adv:checkAchievement(adv.AchievType.UseItem, count, itemId) adv:afterRound() adv:saveDB() diff --git a/src/actions/GmAction.lua b/src/actions/GmAction.lua index 8778f25..4c171ae 100644 --- a/src/actions/GmAction.lua +++ b/src/actions/GmAction.lua @@ -290,6 +290,19 @@ function _M.idlec(role, pms) return "成功" end +table.insert(helpDes, {"获取冒险内道具", "advit"}) +function _M.advit(role, pms) + local advItems = role:getProperty("advItems") + for k, v in pairs(csvdb["adv_itemCsv"]) do + if csvdb["itemCsv"][k] and v.effect ~= 0 then + advItems = advItems:incrv(k, 1) + end + end + role:updateProperty({field = "advItems", value = advItems}) + return "成功" +end + + table.insert(helpDes, {"爬塔到指定层", "tower", "层数"}) function _M.tower(role, pms) local level = tonum(pms.pm1, 1) diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 2c3ebc9..4f214fe 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -908,6 +908,12 @@ function Adv:doActive(activeId, target) return true end + -- 9: 给玩家增加buff + doActiveEffect[9] = function(_, buffId) + self.battle.player:addBuff(buffId, self.battle.player) + return true + end + for _, effect in ipairs(activeData.effect:toArray()) do local cur = effect:toArray(true, "=") if doActiveEffect[cur[1]] then @@ -964,25 +970,32 @@ function Adv:enemyDead(enemy, escape) local monsterData = csvdb["event_monsterCsv"][enemyId] self:scoreChange(AdvScoreType.Kill, monsterData.type) self.battle.player:addExp(monsterData.exp) - local item = block.event.item - if not item then - local buff = enemy:hadBuff(Buff.CHANGE_DROP) - if buff then - item = table.pack(buff:effect()) - else - local dropData = csvdb["event_dropCsv"][monsterData.dropid] - item = dropData["range"]:randWeight(true) - end - - end - - if item[1] == 0 then - block:clear() - else + if enemy:hadBuff(Buff.CHANGE_DROP_TO_CLICK) then -- 掉落转为 click + local clickId = buff:effect() block:updateEvent({ - etype = AdvEventType.Drop, - item = item + etype = AdvEventType.Click, + id = clickId }) + else + local item = block.event.item + if not item then + local buff = enemy:hadBuff(Buff.CHANGE_DROP) + if buff then + item = table.pack(buff:effect()) + else + local dropData = csvdb["event_dropCsv"][monsterData.dropid] + item = dropData["range"]:randWeight(true) + end + + end + if item[1] == 0 then + block:clear() + else + block:updateEvent({ + etype = AdvEventType.Drop, + item = item + }) + end end self:checkTask(Adv.TaskType.Kill, 1, enemyId) self:checkTask(Adv.TaskType.KillAll) diff --git a/src/adv/AdvBuff.lua b/src/adv/AdvBuff.lua index a2dee7a..bbc95c4 100644 --- a/src/adv/AdvBuff.lua +++ b/src/adv/AdvBuff.lua @@ -26,6 +26,7 @@ Buff.DONT_DEFEND = 21 -- 不看守地板 -- 怪周围点半可点击 Buff.EXP_UP = 24 -- 杀敌经验提高 Buff.DISABLE_BUFF = 25 -- 禁用固有技 Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件 +Buff.CHANGE_DROP_TO_CLICK = 27 --掉落转换为click --角色一些属性的变化 local function commonAttr(_Buff, attrName) @@ -178,6 +179,12 @@ local BuffFactory = { end end, + [Buff.CHANGE_DROP_TO_CLICK] = function(_Buff) + _Buff._effectValue = function(self) + return self.buffData.effectValue1 + end + end, + [Buff.IMMNUE_BUFF] = function(_Buff) _Buff._init = function(self, data) self.count = self.buffData.effectValue3 diff --git a/src/models/Role.lua b/src/models/Role.lua index 6214088..c44570b 100644 --- a/src/models/Role.lua +++ b/src/models/Role.lua @@ -65,6 +65,7 @@ Role.schema = { advL = {"table", {0, 0}}, -- 冒险队等级 {lv, winCount} advElM = {"number", 0}, -- 无尽模式通关的最高层数 endless max layer advElS = {"number", globalCsv.adv_endless_season}, -- 无尽模式记录的赛季 endless season + advAFOpen = {"table", {}}, -- 解锁的神器 --挂机相关 hangPass = {"table", {}}, -- 挂机通过的最大关卡 diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index c052c7c..eb02c0f 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -677,7 +677,9 @@ function RolePlugin.bind(Role) count = count or 1 if csvdb["itemCsv"][func] and csvdb["itemCsv"][func].type == ItemType.FuncOpen then local unlockData = csvdb["unlockCsv"][func] - if TypeIsFunc[unlockData.type] then + if unlockData.type == 4 then -- 解锁神器 + self:changeUpdates({{type = "advAFOpen", field = unlockData.value1, value = 1}}) + else TypeIsFunc[unlockData.type] then if unlockData.value1 == 0 or unlockData.value1 == 1 then self:changeUpdates({{type = "funcOpen", field = unlockData.type, value = 1}}) else -- libgit2 0.21.2