From e3f2a4b480d947accde511df299d6af6e44bdd9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Fri, 10 Oct 2025 01:16:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E5=AE=8C=E5=96=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=A5=96=E5=8A=B1=E9=80=BB=E8=BE=91=E5=B9=B6=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=A4=9A=E4=B8=AA=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据任务 ID 和 OutState 分支完善了任务奖励发放逻辑, 包括新手任务、日常任务及剧情任务的物品奖励与精灵奖励。 针对部分任务增加了注释说明,提升了代码可读性与维护性。 --- logic/controller/task.go | 477 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 452 insertions(+), 25 deletions(-) diff --git a/logic/controller/task.go b/logic/controller/task.go index 48752e59..e8c8f089 100644 --- a/logic/controller/task.go +++ b/logic/controller/task.go @@ -58,57 +58,484 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *player. result = &task.CompleteTaskOutboundInfo{} result.ItemList = make([]task.ItemInfo, 0) result.TaskId = data.TaskId - // 处理新手注册相关任务 + // 根据任务ID和选择分支(OutState)处理奖励 switch data.TaskId { + // 新手任务1 case 85: - // 新手注册任务-奖励物品 + // out_id=1(默认分支)的奖励物品 result.ItemList = append(result.ItemList, - task.ItemInfo{ItemId: 100027, ItemCount: 1}, - task.ItemInfo{ItemId: 100028, ItemCount: 1}, - task.ItemInfo{ItemId: 500001, ItemCount: 1}, - task.ItemInfo{ItemId: 500502, ItemCount: 1}, - task.ItemInfo{ItemId: 500503, ItemCount: 1}, + task.ItemInfo{ItemId: 100027, ItemCount: 1}, // 新手帽(默认数量1) + task.ItemInfo{ItemId: 100028, ItemCount: 1}, // 新手腰带 + task.ItemInfo{ItemId: 500001, ItemCount: 1}, // 精灵仓库 + task.ItemInfo{ItemId: 500502, ItemCount: 1}, // 精灵恢复仓 + task.ItemInfo{ItemId: 500503, ItemCount: 1}, // 分子转化仪 ) + // 新手任务2(选择不同精灵) case 86: - // 新手注册任务-宠物奖励 - var petid int + var petType int + // 根据out_id(data.OutState)选择宠物类型 switch data.OutState { case 1: - petid = 1 + petType = 1 // 布布种子 case 2: - petid = 7 + petType = 7 // 小火猴 case 3: - petid = 4 + petType = 4 // 伊优 default: - // 处理未定义的OutState,可根据业务需求调整 - // 例如: log.Printf("未知的OutState: %d", data.OutState) - // return result // 或其他错误处理 + // 默认给布布种子(或日志告警) + petType = 1 + // log.Printf("任务86未知分支out_id=%d,默认奖励布布种子", data.OutState) } - r := model.GenPetInfo(petid, 31, -1, 0, 0, 5) + // 生成宠物(pet_dv=31,锁个体) + r := model.GenPetInfo(petType, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) + // 新手任务3 case 87: - // 新手注册任务-奖励物品 + // out_id=1的奖励物品 result.ItemList = append(result.ItemList, - task.ItemInfo{ItemId: 300001, ItemCount: 5}, - task.ItemInfo{ItemId: 300011, ItemCount: 5}, + task.ItemInfo{ItemId: 300001, ItemCount: 5}, // 普通胶囊x5 + task.ItemInfo{ItemId: 300011, ItemCount: 3}, // 初级体力药剂x3 ) + // 新手任务4 case 88: - // 新手注册任务-奖励物品 + // out_id=1的奖励物品 result.ItemList = append(result.ItemList, - task.ItemInfo{ItemId: 1, ItemCount: 5000}, + task.ItemInfo{ItemId: 1, ItemCount: 50000}, // 赛尔豆x50000 + task.ItemInfo{ItemId: 3, ItemCount: 50000}, // 累积经验x50000 + task.ItemInfo{ItemId: 5, ItemCount: 20}, // 金豆x20 + task.ItemInfo{ItemId: 300650, ItemCount: 3}, // 全能学习力遗忘器x3 + task.ItemInfo{ItemId: 300651, ItemCount: 6}, // 全能学习力注入器x6 ) - // 可以根据需要添加其他任务ID的处理 - // case xxx: - // ... + // 克洛斯星的皮皮 + case 90: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 经验x1000 + ) + + // 西塔的珍贵回忆 + case 8: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 500510, ItemCount: 1}, // 记忆晶体x1 + ) + + // 进入神秘通道 + case 9: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 100059, ItemCount: 1}, // 电能锯子x1 + ) + + // 神秘通道拼图(无奖励物品) + case 10: + // 无物品奖励,无需处理 + + // 精灵广场拿石头(无奖励物品) + case 12: + // 无物品奖励,无需处理 + + // 先锋队招募 + case 19: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 积累经验x3000 + ) + + // 新船员的考验 + case 25: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 400501, ItemCount: 10}, // 神奇扭蛋牌x10 + ) + + // 遗迹中的精灵信号(奖励奇塔) + case 28: + // out_id=1,宠物类型102(奇塔) + r := model.GenPetInfo(102, 31, -1, 0, 0, 5) // pet_dv默认-1(随机个体) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + + // 帕诺星系星球测绘 + case 37: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + task.ItemInfo{ItemId: 700452, ItemCount: 1}, // 中型智慧芯片x1 + task.ItemInfo{ItemId: 100178, ItemCount: 1}, // 勘察头盔x1 + task.ItemInfo{ItemId: 100179, ItemCount: 1}, // 勘察护腕x1 + task.ItemInfo{ItemId: 100180, ItemCount: 1}, // 勘察腰带x1 + task.ItemInfo{ItemId: 100181, ItemCount: 1}, // 勘察军靴x1 + ) + + // 时空之门(奖励迪卢卡) + case 40: + // out_id=1,宠物类型139(迪卢卡) + r := model.GenPetInfo(139, 31, -1, 0, 0, 5) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + + // 突围磁风暴 + case 47: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 5000}, // 累积经验x5000 + task.ItemInfo{ItemId: 1, ItemCount: 5000}, // 赛尔豆x5000 + task.ItemInfo{ItemId: 500585, ItemCount: 1}, // 磁力光束枪台x1 + ) + + // 神秘失踪的爱丽丝 + case 48: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + task.ItemInfo{ItemId: 700452, ItemCount: 2}, // 中型智慧芯片x2 + ) + + // 密林中的托尼(奖励托尼+物品) + case 49: + // 1. 奖励宠物:托尼(类型158) + r := model.GenPetInfo(158, 31, -1, 0, 0, 5) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + // 2. 奖励物品 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 700452, ItemCount: 2}, // 中型智慧芯片x2 + ) + + // 谁偷走了雪球能源? + case 52: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 + task.ItemInfo{ItemId: 100254, ItemCount: 1}, // 斯诺纪念x1 + ) + + // 米鲁族的两个小不点 + case 54: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 5000}, // 累积经验x5000 + task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 + ) + + // 米鲁族食王选拔赛 + case 57: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 斯诺岩洞的不解之谜 + case 58: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 + ) + + // 新型试作机SR-01同步调试 + case 63: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 铸造斯诺冰冠 + case 64: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 + ) + + // 露希欧星勘察 + case 65: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 合金强化试验 + case 66: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 资料室的神秘事件 + case 68: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 宇宙遭遇站 + case 69: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 船体紧急修复 + case 70: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 赛尔号大整修(奖励TOE+物品) + case 71: + // 1. 奖励宠物:TOE(类型213) + r := model.GenPetInfo(213, 31, -1, 0, 0, 5) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + // 2. 奖励物品 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 船长搜救任务 + case 72: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 秘制改良机SR-02 + case 73: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 100303, ItemCount: 1}, // SR-02铠甲x1 + task.ItemInfo{ItemId: 400055, ItemCount: 30}, // 变形能量块x30 + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + ) + + // 露希欧星历险 + case 74: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 积累经验x3000 + ) + + // 哈莫的童年片段一 + case 75: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 100324, ItemCount: 1}, // 龙之纪念x1 + ) + + // 寻找哈莫雷特的族人 + case 79: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + ) + + // 重铸贾斯丁站长 + case 80: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 + ) + + // 守候宿命的追随者 + case 81: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 光暗之迷 + case 83: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 星球改造计划 + case 84: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + ) + + // 试炼之塔的磨练 + case 89: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 月光下的约定 + case 91: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + task.ItemInfo{ItemId: 400124, ItemCount: 1}, // 艾贝多芬的精元x1 + ) + + // 站长归来(奖励尼布+物品) + case 92: + // 1. 奖励宠物:尼布(类型95) + r := model.GenPetInfo(95, 31, -1, 0, 0, 5) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + // 2. 奖励物品 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + ) + + // 云霄星的新来客 + case 93: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 + task.ItemInfo{ItemId: 1, ItemCount: 500}, // 赛尔豆x500 + ) + + // 初识星球能源 + case 94: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 宇宙中的黑色旋涡(两个奖励分支) + case 95: + switch data.OutState { + case 1: // 分支1:刺蜂套装 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 4000}, // 累积经验x4000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + task.ItemInfo{ItemId: 100346, ItemCount: 1}, // 刺蜂重盔x1 + task.ItemInfo{ItemId: 100347, ItemCount: 1}, // 刺蜂护肩x1 + task.ItemInfo{ItemId: 100348, ItemCount: 1}, // 刺蜂腰带x1 + task.ItemInfo{ItemId: 100349, ItemCount: 1}, // 刺蜂滚轮x1 + ) + case 2: // 分支2:锡蝶套装 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 4000}, // 累积经验x4000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + task.ItemInfo{ItemId: 100350, ItemCount: 1}, // 锡蝶重盔x1 + task.ItemInfo{ItemId: 100351, ItemCount: 1}, // 锡蝶护肩x1 + task.ItemInfo{ItemId: 100352, ItemCount: 1}, // 锡蝶腰带x1 + task.ItemInfo{ItemId: 100353, ItemCount: 1}, // 锡蝶滚轮x1 + ) + default: + // 默认给分支1奖励 + // log.Printf("任务95未知分支out_id=%d,默认奖励刺蜂套装", data.OutState) + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 4000}, + task.ItemInfo{ItemId: 1, ItemCount: 2000}, + task.ItemInfo{ItemId: 100346, ItemCount: 1}, + task.ItemInfo{ItemId: 100347, ItemCount: 1}, + task.ItemInfo{ItemId: 100348, ItemCount: 1}, + task.ItemInfo{ItemId: 100349, ItemCount: 1}, + ) + } + + // 旅途中的伙伴 + case 96: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 我是音乐小麦霸 + case 97: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 尼布守卫战 + case 98: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 + ) + + // 寻找迷失的心(奖励史空+物品) + case 133: + // 1. 奖励宠物:史空(类型381) + r := model.GenPetInfo(381, 31, -1, 0, 0, 5) + result.CaptureTime = r.CatchTime + result.PetTypeId = r.ID + c.Service.PetAdd(*r) + // 2. 奖励物品 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 + task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 + ) + + // 教官考核 + case 201: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 100062, ItemCount: 1}, // 教官指挥棒x1 + ) + + // 领取谱尼真身(需校验物品,奖励谱尼精元) + case 300: + // 注意:此处省略“check节点”的物品校验逻辑(需先检查玩家背包是否有7个裂片) + // 实际业务中需先校验,通过后再发奖励 + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 400150, ItemCount: 1}, // 谱尼的精元x1 + ) + + // 每日任务之毛毛 + case 401: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 积累经验x2000 + ) + + // 每日任务之小火猴 + case 402: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 + ) + + // 每日任务之布布种子 + case 403: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 + ) + + // 每日任务之依优 + case 404: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 + ) + + // 每日任务之比比鼠 + case 405: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 积累经验x2000 + ) + + // 每日任务之幽浮 + case 406: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 积累经验x2000 + ) + + // 每日任务之利牙鱼 + case 407: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 积累经验x2000 + ) + + // 每日任务之谱尼扭蛋牌 + case 462: + result.ItemList = append(result.ItemList, + task.ItemInfo{ItemId: 400501, ItemCount: 5}, // 神奇扭蛋牌x5 + ) default: - // 处理未定义的任务ID,可选 + // 未定义的任务ID,可添加日志 // log.Printf("未处理的任务ID: %d", data.TaskId) } var ttt []model.SingleItemInfo