chore: update fight logic and effect implementations
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
This commit is contained in:
@@ -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. 保持旧协议兼容:旧入口不报错,但按上述兜底规则执行。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user