feat(task): 完善任务奖励逻辑并新增多个任务处理分支

根据任务 ID 和 OutState 分支完善了任务奖励发放逻辑,
包括新手任务、日常任务及剧情任务的物品奖励与精灵奖励。
针对部分任务增加了注释说明,提升了代码可读性与维护性。
This commit is contained in:
2025-10-10 01:16:13 +08:00
parent ecd9cb704c
commit e3f2a4b480

View File

@@ -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_iddata.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