diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 4279a6b..548c6cb 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -450,6 +450,10 @@ function _M.useItemRpc(agent, data) adv:backUse({[itemId] = count}) end + if itemId == 5020 then + role:finishGuide(53) + end + adv:checkAchievement(adv.AchievType.UseItem, count, itemId) adv:log({desc = "useItem", int1 = itemId, int2 = count}) @@ -499,6 +503,8 @@ function _M.usePotionRpc(agent, data) adv:saveDB() role:checkTaskEnter("AdvUsePotion") + role:finishGuide(61) + SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()})) return true end @@ -516,6 +522,8 @@ function _M.chooseArtifactRpc(agent, data) local status = adv:chooseArtifact(msg.idx) if not status then return 4 end adv:saveDB() + + role:finishGuide(54) SendPacket(actionCodes.Adv_chooseArtifactRpc, '') return true @@ -539,6 +547,8 @@ function _M.wearArtifactRpc(agent, data) if not status then return 3 end adv:saveDB() + role:finishGuide(55) + SendPacket(actionCodes.Adv_wearArtifactRpc, '') return true end @@ -568,6 +578,7 @@ function _M.upArtifactRpc(agent, data) else adv:updateAchievement() end + SendPacket(actionCodes.Adv_upArtifactRpc, '') return true end @@ -577,7 +588,9 @@ function _M.exitAdvRpc(agent, data) local role = agent.role -- local msg = MsgPack.unpack(data) if not isCanContinue(role) then return end - + if not role:checkOverGuide(57) then + role:saveGuide(57,1,true) + end local adv = role:getAdvData() adv:log({desc = "exit"}) local status = adv:exit() -- target {roomId = 1, blockId = 1} 选择的目标 @@ -638,6 +651,19 @@ function _M.endBattleRpc(agent, data) if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId then return end adv.__battleCache = nil + -- 打完野猪怪 + role:finishGuide(52) + -- 调理剂使用引导(生命药剂) + if not role:checkOverGuide(61) then + local potionBag = role:getProperty("potionBag") + local own = potionBag[10] or 0 + if own > 0 then + -- 造假 + player.hp = player.hp * 0.8 + role:saveGuide(61,1,true) + end + end + adv:log({desc = "endBattle"}) local status = adv:clickBlock(roomId, blockId, {player = player, bySkill = bySkill}) @@ -720,7 +746,7 @@ function _M.wheelSurfRpc(agent, data) table.insert(backReward, gift) end role:award(reward, {log = {desc = "advWheelSurf", int1 = ptype}}) - + role:finishGuide(58) role:checkTaskEnter("AdvDraw", {count = count, ptype = ptype}) role:log("adv_action", {desc = "advWheelSurf", int1 = ptype, int2 = count}) @@ -775,7 +801,7 @@ function _M.finishAchievRpc(agent, data) if not status then return end adv:updateAchievement() role:log("adv_action", {desc = "finishAchiev", short1 = ctype, int1 = chapterId, int2 = taskId}) - + role:finishGuide(57) SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack(role:packReward(reward, change))) return true end diff --git a/src/actions/DinerAction.lua b/src/actions/DinerAction.lua index 14ca073..fe6698a 100644 --- a/src/actions/DinerAction.lua +++ b/src/actions/DinerAction.lua @@ -104,7 +104,7 @@ function _M.addSellRpc( agent, data ) if change then role.dinerData:updateProperty({field = "customer", value = customer}) end - + role:finishGuide(28) role:log("diner_action", {desc = "addSell", int1 = dish, int2 = count}) role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) @@ -407,7 +407,7 @@ function _M.talentUpRpc( agent, data ) -- end role:checkTaskEnter("DinerTalentUp", {type = talentData.effect:toArray(true,"=")[1], level = dishLevel + 1}) - + role:finishGuide(27) role:log("diner_action", {desc = "talentUp", int1 = dish, int2 = dishLevel + 1}) SendPacket(actionCodes.Diner_talentUpRpc, '') @@ -612,7 +612,7 @@ function _M.refreshTaskRpc( agent, data ) end role:log("diner_action", {desc = "reTask"}) - + role:finishGuide(41) role.dinerData:updateProperty({field = "order", value = json.encode(orders)}) SendPacket(actionCodes.Diner_refreshTaskRpc, '') @@ -653,7 +653,7 @@ function _M.addWantFoodRpc(agent , data) end role:log("diner_action", {desc = "wantFood"}) - + role:finishGuide(36) role.dinerData:updateProperty({field = "gfood", value = gfood}) SendPacket(actionCodes.Diner_addWantFoodRpc, '') diff --git a/src/actions/HangAction.lua b/src/actions/HangAction.lua index 9ddbc3c..29f10a4 100644 --- a/src/actions/HangAction.lua +++ b/src/actions/HangAction.lua @@ -247,6 +247,23 @@ function _M.endBattleRpc(agent, data) local team = role:getProperty("pvpTC") role:log("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros)}) + -- 引导 + if carbonId == 10101 then + role:finishGuide(5) + elseif carbonId == 10102 then + role:finishGuide(8) + elseif carbonId == 10103 then + role:finishGuide(9) + elseif carbonId == 10220 then + role:finishGuide(22) + end + for _, guideData in pairs(csvdb["guide_unlockCsv"]) do + if guideData.type == 3 and guideData.carbonId == carbonId then + role:saveGuide(guideData.guideId,1,true) + break + end + end + SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({ starNum = msg.starNum, reward = reward, diff --git a/src/actions/HeroAction.lua b/src/actions/HeroAction.lua index b13484c..34a285e 100644 --- a/src/actions/HeroAction.lua +++ b/src/actions/HeroAction.lua @@ -32,6 +32,10 @@ function _M.levelUpRpc( agent, data ) hero:log({desc = "levelUp", int1 = hero:getProperty("level")}) + if hero:getProperty("type") == 103 then + role:finishGuide(7) + end + role:checkTaskEnter("HeroLevelUp", {level = hero:getProperty("level")}) SendPacket(actionCodes.Hero_levelUpRpc, '') return true @@ -523,6 +527,8 @@ function _M.referEquipsRpc(agent, data) -- 更新角色 hero:updateProperty({field = "equip", value = curEquip}) + role:finishGuide(23) + SendPacket(actionCodes.Hero_referEquipsRpc, "") return true end @@ -688,7 +694,6 @@ function _M.unuse_drawHeroRpc(agent, data) if not role:isFuncUnlock(FuncUnlock.GetHero) then return end local btype = msg.pool -- 1 2 3 4 local drawType = msg.type -- 1 单抽 2 十连 - local guide = msg.guide -- 是否是引导抽的 local buildTypeData = csvdb["build_typeCsv"][btype] if not buildTypeData then return 1 end @@ -829,6 +834,12 @@ function _M.unuse_drawHeroRpc(agent, data) newerHadSSR = newerDraw[2] or 0 end + local guideHero + local funcGuide = role:getProperty("funcGuide") + if funcGuide:getv(11001,0) == 1 and funcGuide:getv(12001,0) == 0 then + guideHero = 613 + end + local ssrCount = 0 local reward = {} for i = 1, drawCount[drawType] do @@ -858,7 +869,11 @@ function _M.unuse_drawHeroRpc(agent, data) end -- 引导必送 613 丝路德 - local itemId = guide and 613 or math.randWeight(resultPool, 1) + local itemId = math.randWeight(resultPool, 1) + if guideHero then + itemId = guideHero + guideHero = nil + end local itemData = csvdb["itemCsv"][itemId] if itemData.quality == 4 then ssrCount = ssrCount + 1 @@ -910,6 +925,8 @@ function _M.unuse_drawHeroRpc(agent, data) -- role:updateProperty({field = "repayHero", value = repayHero}) -- end + role:finishGuide(11) + role:checkTaskEnter("DrawHero", {pool = btype, count = drawCount[drawType]}) if ssrCount > 0 then role:checkTaskEnter("DrawSSR", {count = ssrCount}) diff --git a/src/actions/RoleAction.lua b/src/actions/RoleAction.lua index cdba387..7663ba6 100644 --- a/src/actions/RoleAction.lua +++ b/src/actions/RoleAction.lua @@ -1031,6 +1031,9 @@ function _M.guideRpc(agent, data) role:saveGuide(master, slave) funcGuide = funcGuide:setv(master * 1000 + slave, 1) + if funcGuide:getv(master * 1000,0) == 0 then + funcGuide = funcGuide:setv(master * 1000, 1) + end role:updateProperty({field = "funcGuide", value = funcGuide}) role:log("onGuidePoint", {guild_type = 0, guild_id = master, guild_point = slave, guild_pass = 0}) elseif cmdType == 2 then diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 299e656..db81705 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -1357,6 +1357,10 @@ local function clickDrop(self, room, block, params) local reward = self:award({[block.event.item[1]] = block.event.item[2]}, {log = {desc = "clickDrop"}}) -- local reward = self:award({[5801] = 1}) + -- 获取绷带的引导 + if block.event.item[1] == 5020 and not self.owner:checkOverGuide(53,2) then + self.owner:saveGuide(53,2) + end block:clear() self:backReward(reward, {roomId = room.roomId, blockId = block.blockId}) return true diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 0be40cd..bb78dd6 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -1418,15 +1418,6 @@ function RolePlugin.bind(Role) return RANK_ADV[idx] end - -- 是否需要进行引导 - function Role:checkOverGuide(guideId) - local funcGuide = self:getProperty("funcGuide") - if funcGuide:getv(guideId, 0) > 0 then - return true - end - return false - end - -- 消除指定tag 红点 function Role:clearRedPTag(tag) local redp = self:getProperty("redp") @@ -1567,16 +1558,24 @@ function RolePlugin.bind(Role) self.sendMailFlag = true end + -- 是否需要进行引导 + function Role:checkOverGuide(guideId,slave) + local funcGuide = self:getProperty("funcGuide") + if funcGuide:getv(guideId * 1000 + (slave or 0), 0) > 0 then + return true + end + return false + end + -- 保存引导步骤 - function Role:saveGuide(master,slave) + function Role:saveGuide(master,slave,force) local newerGuide = self:getProperty("newerGuide") local guide = newerGuide:toArray(true,"=") local sMaster, sSlave = guide[1], guide[2] - if master < sMaster and slave < sSlave then return end + if not force and master < sMaster then return end + if not force and master <= sMaster and slave < sSlave then return end - local guideCsv = csvdb["guide_mainCsv"] - if not guideCsv[master] or not guideCsv[master][slave] then return end self:log("guide", {desc = "guide_new",int1 = master*1000+slave}) newerGuide = string.format("%d=%d",master,slave) -- libgit2 0.21.2