```
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

feat(fight): 添加旧组队协议支持并优化战斗系统

- 实现了旧组队协议相关功能,包括GroupReadyFightFinish、GroupUseSkill、
  GroupUseItem、GroupChangePet和GroupEscape方法
- 新增组队战斗相关的入站信息结构体定义
- 实现了组队BOSS战斗逻辑,添加groupBossSlotLimit常量
- 重构宠物技能设置逻辑,调整金币消耗时机
- 优化战斗循环逻辑,添加对无行动槽位的处理
- 改进AI行动逻辑,增加多位置目标选择机制
- 完善捕获系统上下文处理,修复空指针问题
- 添加战斗状态更新和数据同步机制

fix(pet-skill): 修复宠物技能设置中的金币扣除逻辑错误

- 将金币扣除逻辑移到验证之后
- 修正宠物技能数量限制检查的顺序
- 防止重复添加已有技能的情况

refactor(fight): 重构战斗系统代码结构

- 分离新旧组队协议的战斗创建逻辑
- 优化战斗输入验证和处理流程
- 改进战斗循环中的错误处理机制
```
This commit is contained in:
昔念
2026-04-09 02:14:09 +08:00
parent 3b35789b47
commit 487ee0e726
10 changed files with 796 additions and 130 deletions

View File

@@ -528,6 +528,27 @@ func (f *FightC) Broadcast(t func(ff *input.Input)) {
}
func (f *FightC) BroadcastPlayers(t func(common.PlayerI)) {
if f == nil || t == nil {
return
}
seen := make(map[uint32]struct{}, len(f.OurPlayers)+len(f.OppPlayers))
visit := func(players []common.PlayerI) {
for _, p := range players {
if p == nil || p.GetInfo() == nil {
continue
}
if _, ok := seen[p.GetInfo().UserID]; ok {
continue
}
seen[p.GetInfo().UserID] = struct{}{}
t(p)
}
}
visit(f.OurPlayers)
visit(f.OppPlayers)
}
func (f *FightC) GetOverChan() chan struct{} {
return f.over