chore: update fight logic and effect implementations
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed

This commit is contained in:
xinian
2026-04-05 02:25:44 +08:00
committed by cnb
parent f473c54880
commit 78a68148ce
80 changed files with 475 additions and 248 deletions

View File

@@ -355,3 +355,46 @@
- 先完成旧入口 -> 统一入站结构映射
- 再完成统一出站结构 + phase 广播
- 最后做前端切换与旧包退场或长期双通道兼容
---
## AtkType 目标语义补充2026-04-05
来源`flash` `SkillXMLInfo.getGpFtSkillType(skillID)`读取 `movesMap/moveStoneMap` `AtkType`
GBTL 规则已确认
1. `AtkNum`本技能同时攻击数量默认 `1`不能为 `0`
2. `AtkType`目标范围
- `0`所有人
- `1`仅己方
- `2`仅对方
- `3`仅自己
- 默认`2`
前端目标选择行为`SkillMouseController.attack(skillID, attackType)`
1. `attackType=0` -> `allPetWinList`全体可选
2. `attackType=1` -> `membPetWinList`己方可选含自己与队友
3. `attackType=2` -> `oppPetWinList`敌方可选
4. `attackType=3` -> `[playerMode.petWin]`仅自己
后端目标关系判定组队/多战位必须遵循
1. 若协议传 `actor + target(side,pos)`
- `target.side != actor.side` => 对方目标
- `target.side == actor.side && target.pos == actor.pos` => 自身目标
- `target.side == actor.side && target.pos != actor.pos` => 队友目标
2. 若协议未显式传目标 `2405`
- `AtkType` 兜底
- `AtkType=3` => 强制自身
- `AtkType=1` => 默认自身无显式队友位时
- 其他 => 维持旧行为默认对方 `0`
实施要求与现有清单并行
1. `common/data/xmlres/skill.go` `Move` 需包含 `AtkType` 字段解析
2. 动作目标不再依赖默认 Opp 绑定effect 上下文必须使用本次动作的实际目标
3. 需支持区分 `self` `ally`例如同为 `AtkType=1` 不能混用同一默认目标
4. 保持旧协议兼容旧入口不报错但按上述兜底规则执行