修复战斗

This commit is contained in:
1
2025-11-15 22:17:43 +00:00
parent 4a4806fd82
commit 88cd1affe4
38 changed files with 708 additions and 847 deletions

View File

@@ -6,6 +6,8 @@ import (
"blazing/logic/service/player"
"blazing/logic/service/task"
"blazing/modules/blazing/model"
"github.com/jinzhu/copier"
)
/**
@@ -59,507 +61,31 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *player.
}
c.Info.TaskList[data.TaskId-1] = 3
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}, // 新手帽默认数量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 petType int
// 根据out_iddata.OutState选择宠物类型
switch data.OutState {
case 1:
petType = 1 // 布布种子
case 2:
petType = 7 // 小火猴
case 3:
petType = 4 // 伊优
default:
// 默认给布布种子(或日志告警)
petType = 1
// log.Printf("任务86未知分支out_id=%d默认奖励布布种子", data.OutState)
}
// 生成宠物pet_dv=31锁个体
r := c.GenPetInfo(petType, 31, -1, 0, 0, 50)
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}, // 普通胶囊x5
task.ItemInfo{ItemId: 300011, ItemCount: 5}, // 初级体力药剂x3
)
// 新手任务4
case 88:
// out_id=1的奖励物品
result.ItemList = append(result.ItemList,
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
)
// 克洛斯星的皮皮
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 := c.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 := c.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 := c.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 := c.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 := c.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 := c.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: 20000}, // 积累经验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: 20000}, // 积累经验x2000
)
// 每日任务之幽浮
case 406:
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000
)
// 每日任务之利牙鱼
case 407:
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000
)
// 每日任务之谱尼扭蛋牌
case 462:
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 400501, ItemCount: 5}, // 神奇扭蛋牌x5
)
default:
// 未定义的任务ID可添加日志
// log.Printf("未处理的任务ID: %d", data.TaskId)
result = &task.CompleteTaskOutboundInfo{
TaskId: data.TaskId,
ItemList: make([]task.ItemInfo, 0),
}
//提交任务
//task.Tasktopic.Pub(*data)
tt := task.Get_Task_Info(*data)
result.ItemList = tt.ItemList
if tt.PetTypeId != 0 {
r := c.GenPetInfo(int(tt.PetTypeId), 31, -1, 0, 0, 50)
result.CaptureTime = r.CatchTime
result.PetTypeId = r.ID
c.Service.PetAdd(*r)
}
var ttt []model.SingleItemInfo
for _, v := range result.ItemList {
ttt = append(ttt, model.SingleItemInfo{ItemId: v.ItemId, ItemCnt: v.ItemCount})
}
r := c.ItemAdd(ttt...)
tempItemList := make([]task.ItemInfo, 0)
for _, v := range result.ItemList {
for _, v1 := range r {
if v1.ItemId == v.ItemId {
tempItemList = append(tempItemList, task.ItemInfo{ItemId: v.ItemId, ItemCount: v.ItemCount})
}
}
copier.Copy(ttt, result.ItemList)
}
result.ItemList = tempItemList //临时变量为了防止报错的时候返回数据没问题
return result, 0
copier.Copy(result.ItemList, c.ItemAdd(ttt...))
return result, -1 //通过PUB/SUB回包
}
/**