refactor: 迁移 effect 至新语义上下文

This commit is contained in:
xinian
2026-04-04 07:06:00 +08:00
committed by cnb
parent 0ac84a9509
commit 5a5a1db2a3
16 changed files with 671 additions and 552 deletions

View File

@@ -1,36 +0,0 @@
# Task 233: Effects 1780-1784
## 目标
- 补齐以下 5 或最后一组不足 5 当前判定未实现的 skill effect
- 实现位置优先放在 `logic/service/fight/effect/`
- effect 需要展示说明同步更新 `logic/service/fight/effect/effect_info_map.go`
- 完成后至少执行`cd /workspace/logic && go test ./service/fight/effect`
## Effect 列表
### Effect 1780
- `argsNum`: `5`
- `info`: `消耗自身全部体力减少对手当前体力的1/{0}同时使己方下1只出场精灵获得点数等同于对手最大体力值1/{1}的护盾且下{2}次技能先制+{3},护盾最多可获得{4}点`
### Effect 1781
- `argsNum`: `2`
- `info`: `若自身拥有的护盾值高于{0}则令自身下{1}回合回合类效果无法被消除`
### Effect 1782
- `argsNum`: `0`
- `info`: `自身存在护盾则先制+2`
### Effect 1783
- `argsNum`: `2`
- `info`: `消除敌我双方回合类效果,消除任意一项成功则敌我双方同时进入{0}状态,若任意一方回合类效果无法被消除则令对手下{1}回合无法主动切换精灵`
- `param`: `1,0,0`
### Effect 1784
- `argsNum`: `1`
- `info`: `{0}回合内对手使用技能时自身免疫对手下1次非致命一击造成的攻击伤害`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 234: Effects 1785-1789
## 目标
- 补齐以下 5 或最后一组不足 5 当前判定未实现的 skill effect
- 实现位置优先放在 `logic/service/fight/effect/`
- effect 需要展示说明同步更新 `logic/service/fight/effect/effect_info_map.go`
- 完成后至少执行`cd /workspace/logic && go test ./service/fight/effect`
## Effect 列表
### Effect 1785
- `argsNum`: `3`
- `info`: `{0}回合内每回合使用技能吸取对手最大体力的1/{1},吸取体力时若自身为满体力则恢复己方所有不在场精灵{2}点体力`
### Effect 1786
- `argsNum`: `2`
- `info`: `{0}回合内若自身回合类效果被消除则对手下{1}次使用的攻击技能附加效果失效`
### Effect 1787
- `argsNum`: `1`
- `info`: `沙之力量觉醒,使自身下{0}次攻击获得黯天之尘效果`
### Effect 1788
- `argsNum`: `3`
- `info`: `{0}%令对手{1},未触发则附加自身最大体力{2}%的百分比伤害,若对手免疫百分比伤害则转变为真实伤害`
- `param`: `1,1,1`
### Effect 1789
- `argsNum`: `1`
- `info`: `预留,{0}`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 295: Effects 2090-2094
## 目标
- 补齐以下 5 或最后一组不足 5 当前判定未实现的 skill effect
- 实现位置优先放在 `logic/service/fight/effect/`
- effect 需要展示说明同步更新 `logic/service/fight/effect/effect_info_map.go`
- 完成后至少执行`cd /workspace/logic && go test ./service/fight/effect`
## Effect 列表
### Effect 2090
- `argsNum`: `0`
- `info`: `空元之诗·均附加双方体力上限差值50%的次元·龙系伤害自身体力上限高于对手时额外吸取对手第五技能剩余的PP值自身体力上限低于对手时附加伤害翻倍`
### Effect 2091
- `argsNum`: `1`
- `info`: ``
### Effect 2092
- `argsNum`: `2`
- `info`: `全属性+{0}并将空妄诗章补充至与自身先制等级相等,自身没有空妄诗章时额外书写{1}篇,拥有时强化效果翻倍`
### Effect 2093
- `argsNum`: `5`
- `info`: `{0}回合内使用技能吸取对手最大体力的1/{1}自身体力低于1/{2}时效果翻倍,吸取后若对手体力未减少则{3}回合内对手{4}`
- `param`: `23,4,4`
### Effect 2094
- `argsNum`: `3`
- `info`: `自身每有1篇空妄诗章造成的攻击伤害提升{0}%,若空妄诗章的篇数高于{1}则每有1篇额外附加{2}点真实伤害`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,35 +0,0 @@
# Task 301: Effects 2120-2124
## 目标
- 补齐以下 5 或最后一组不足 5 当前判定未实现的 skill effect
- 实现位置优先放在 `logic/service/fight/effect/`
- effect 需要展示说明同步更新 `logic/service/fight/effect/effect_info_map.go`
- 完成后至少执行`cd /workspace/logic && go test ./service/fight/effect`
## Effect 列表
### Effect 2120
- `argsNum`: `2`
- `info`: `自身为对手天敌时下{0}次受到攻击的伤害减少{1}%`
### Effect 2121
- `argsNum`: `1`
- `info`: `未击败对手则己方在场精灵吸取对手最大体力的{0}%,吸取后若对手体力未减少则延续至下回合`
### Effect 2122
- `argsNum`: `2`
- `info`: `获得{0}点护罩护罩消失时自身所有技能PP值+{1}`
### Effect 2123
- `argsNum`: `1`
- `info`: `消除对手回合类效果消除成功令对手感染且自身每有1点灵茉之芯额外附加中毒、睡眠、寄生中的前1种异常状态未触发则吸取对手最大体力的1/{0}`
### Effect 2124
- `argsNum`: `1`
- `info`: `{0}%的概率造成伤害翻倍,自身处于能力提升状态或对手处于能力下降状态时概率翻倍`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -11,12 +11,39 @@
- 切宠同步改为携带 `actorIndex`同一玩家多上场位的切宠播报不再冲突
- 开战同步结构新增当前战斗位数组同时保留 `Info1/Info2` 兼容旧结构
- `FightI` 已补充 `UseSkillAt/ChangePetAt/UseItemAt/GetCurrPETAt`
- `NewFight` 已改为包装 `NewFightWithOptions(...)`创建阶段开始支持 option/builder 扩展
- `Ctx` 已拆分为 `LegacySides + EffectBinding`effect 本体上挂载上下文并补充 `Source/Carrier/Target`
- 核心执行链已开始迁移到真实 source/target 语义`AddEffect``Exec``Damage``SetProp`主技能结算流程会注入实际对手上下文
- 已迁移一批公共/高复用 effect 到新语义包括状态基类击败触发物攻附加状态`1097-1101``680-690`部分魂印基础逻辑
- 本轮继续完成了 `1263-1287``1288-1312``1448-1472``1473-1497` 四组 effect 的迁移已不再直接依赖 `Ctx().Our/Opp`统一改为 `CarrierInput()/OpponentInput()` 访问当前承载侧与对位侧
- 增加了动作队列的基础单测覆盖同玩家不同槽位保留同槽位动作替换
本轮仍保留的限制
- `enterturn` 和大量 `effect/node` 逻辑仍是双动作上下文因此当前实现采用动作列表排序 + 跨阵营配对兼容执行的过渡方案而不是一次性重写所有效果系统
- `NewFight` 仍按现有建房流程创建双方 1 个战斗位本轮打通的是多战斗位结算骨架和接口不是外部建房入口的全量切换
- 大量具体 effect 仍在使用旧的 `Ctx().Our/Opp` 语义当前已迁移的是上下文承载方式执行链和部分公共基类具体 effect 仍需继续分批迁移
### 0.1 effect 迁移增量记录
本轮新增完成
- `logic/service/fight/effect/1263_1287.go`
- `logic/service/fight/effect/1288_1312.go`
- `logic/service/fight/effect/1448_1472.go`
- `logic/service/fight/effect/1473_1497.go`
这两组文件当前迁移策略是
- 旧语义中的 `Our` 统一视为当前执行/承载该 effect 的输入侧迁移为 `CarrierInput()`
- 旧语义中的 `Opp` 统一迁移为当前结算上下文里的对位输入侧 `OpponentInput()`
- 暂不在这一轮强行把所有 effect 重写成纯 `Source/Target/Carrier` 三元语义先保证 hostile sub-effect回合类 effect挂在对手身上的限制类 effect 都不再依赖 legacy 字段访问
### 0.2 下一批待迁移队列
高密度遗留文件已继续向后推进`1448-1497` 这两个分段本轮已清理完成
下一轮继续迁移时建议直接对 effect 包执行一次全量扫描仍包含 `Ctx().Our/Opp` grouped file继续往后收口而不是再只盯固定编号段
## 1. 任务目标