Files
bl/docs/effect-refactor-summary-2026-03-28.md

512 lines
26 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Effect 重构会话总结2026-03-28
## 1. 本次会话完成内容
### 1.1 注释与说明统一
- 已将 `logic/service/fight/effect` 下效果注释统一为
- `// Effect <id>: <desc>`
- 说明来源
- `public/config/effectInfo.json`
### 1.2 结构整理与公共能力抽取
- 新增并使用了子效果统一挂载 helper
- `addSubEffect(...)`
- 已清理 `effect` 目录中的 `GenSub(...)` 直接调用残留统一走 helper
### 1.3 回合类基类组合继承已落地
- 当前已引入的 base位于 `logic/service/fight/effect/sub_effect_helper.go`
- `RoundEffectArg0Base`
- `RoundEffectSideArg0Base`
- `FixedDuration1Base`
- `FixedDurationNeg1Base`
- `FixedDuration2Base`
- `RoundEffectArg1Base`
- `RoundEffectSideArg1Base`
- `RoundEffectSideArg0Minus1Base`
- `RoundEffectSideArg0Minus1CanStackBase`
- 已有大量效果结构体改为嵌入上述 base删除重复 `SetArgs` 模板代码
### 1.4 编译状态
- 已多轮执行并通过
- `go test ./logic/service/fight/effect`
### 1.5 本轮新增 effect 实现
- 新增缺失效果实现
- `400` 若和对手属性相同则技能威力翻倍
- `480` `{0}`回合内自身所有攻击威力为两倍
- `586` `{0}`回合内自己的属性攻击必中
- `599` `{0}`回合内受到`{1}`伤害减少`{2}%`
- `610` 遇到天敌时先制+`{0}`
- `611` `{0}`回合自身使用攻击技能则附加`{1}`点固定伤害
- `613` `{0}`回合内自身令对手使用的`{1}`系攻击技能无效
- `573` `{0}`回合内若自身能力提升状态被消除或吸取则`{1}`%使对手`{2}``{3}`回合
- `587` `{0}`回合内若被对手击败则对手损失`{1}`点体力造成致命伤害时对手剩余1点体力
- `591` 造成伤害大于`{0}`则下`{1}`回合自己所有直接攻击先制+`{2}`
- `592` `{0}`回合每回合使用攻击技能`{1}`%令对手`{2}`
- `594` 造成的伤害低于`{0}``{1}`%令对手`{2}`
- `596` 技能使用成功时`{0}`%给予对手冻伤中毒烧伤中任意一种异常状态
- `597` `{0}`回合内每回合使用技能吸取对手最大体力的1/`{1}`
- `598` `{0}`%恢复自己所有技能PP值`{1}`
- `627` 对手处于能力提升状态时附加其`{0}``{1}`%的百分比伤害
- `628` 若对手处于能力下降状态则造成伤害的`{0}`%恢复体力
- `629` 消除`{0}`状态消除成功下回合自身先制+`{1}`
- `630` `{0}`回合内`{1}`状态被消除则有`{2}`%概率使对手`{3}`
- `631` 消除`{0}`状态消除成功下回合造成伤害提升`{1}`%
- `632` 造成伤害`{0}``{1}`则下`{2}`回合必定暴击
- `633` 造成伤害`{0}``{1}`则造成伤害的`{2}`%恢复体力
- `634` 若当前体力`{0}`对手则造成伤害的`{1}`%恢复体力
- `635` 吸收对手能力上升状态吸收成功下回合先制+`{0}`
- `636` 消除`{0}`状态消除成功则令对手`{1}`
- `637` 若对手处于异常状态则对手`{0}``{1}`
- `638` 若对手`{0}`技能威力提升`{1}`%
- `639` 造成伤害`{0}``{1}`则下`{2}`回合所有技能附带`{3}`点固定伤害
- `640` 命中后`{0}`%使对手`{1}``{2}`回合,遇到天敌概率翻倍
- `641` 命中后`{0}`%使对手进入流血状态
- `401` 若和对手属性相同则技能威力翻倍
- `585` 技能使用成功时`{0}`
- `589` 复制对手`{0}`的能力提升状态
- `590` 使对手`{0}``{6}`%弱化效果翻倍
- `593` 附加`{0}``{1}`值的`{2}`%的百分比伤害
- `595` 技能使用成功时`{0}`%使对手`{1}`若没有触发则对手`{2}`
- 已同步更新
- `logic/service/fight/effect/effect_info_map.go`
### 1.6 本轮新增文件
- `logic/service/fight/effect/400_480_586_599_610_611_613.go`
- `logic/service/fight/effect/573_587_591_592_594_596_597_598.go`
- `logic/service/fight/effect/627_631.go`
- `logic/service/fight/effect/632_636.go`
- `logic/service/fight/effect/637_641.go`
- `logic/service/fight/effect/effect_info_map.go`
### 1.7 本轮验证
- 已执行
- `go test ./service/fight/effect`
- 结果
- 通过
### 1.8 本轮结论
- 当前这轮更适合按低风险可复用现有模式 effect 小批次推进而不是一次性追求 `effectInfo.json` 全量覆盖
- 现有 `effect` 目录里已经有不少共享实现 + 批量注册的写法后续判断缺失项时不能只靠 grep `InitEffect(...)`
- 文档第 3 节里的未实现列表目前仍是历史扫描快照只能作为候选列表不能直接当最终事实使用
---
## 2. 当前仍保留自定义 `SetArgs` 的效果建议下一轮重点
以下属于非纯模板仍待抽象 SetArgs
- `Effect570``570.go`
- `Effect123``effect_119_123.go`
- `Effect41``effect_41.go`
- `Effect42``effect_42.go`
- `Effect46``effect_46.go`
- `Effect47``effect_47.go`
- `Effect48``effect_48.go`
- `Effect60``effect_60.go`
- `EffectPropSyncReverse``effect_attr.go`
- `SelfKill``selfkill.go`
建议分三类继续抽 base
- 随机回合/随机次数类 4142
- 次数型常驻类 464748SelfKill570
- SetArgs + 额外上下文初始化 Effect123EffectPropSyncReverse
---
## 3. 未实现或疑似未实现效果清单
### 3.0 `effectInfo.json` 提取的未实现总览自动扫描
- JSON 配置总效果数`2112`
- 代码已注册效果数Skill`338`
- JSON 中存在但代码未注册`1779`
- 代码中注册但 JSON 无对应条目`5``21, 31, 41, 42, 174`
说明
- 这个口径是配置覆盖率不是bug 数量
- 其中大量属于未来版本/未迁移内容不建议一次性全补建议按战斗系统实际启用范围分批实现
- 以下列表为上一轮扫描快照未随本轮新增实现实时回算
- 此外扫描脚本若未把共享实现中的批量注册统计进去也会把已实现效果误判成缺失
JSON 中存在但代码未注册示例前 60
- 2, 10, 11, 12, 14, 15, 16, 17, 22, 30
- 38, 40, 45, 51, 55, 56, 61, 64, 66, 67
- 70, 78, 84, 86, 92, 94, 96, 97, 99, 102
- 103, 104, 106, 108, 109, 114, 118, 132, 133, 139
- 141, 158, 162, 167, 168, 185, 401, 421, 431, 529
- 543, 554, 569, 573, 581, 582, 583, 584, 585, 586
### 3.1 明确标记未实装
- 文件存在明确标记
- `logic/service/fight/effect/529.go未实装`
### 3.2 已注册但缺少同名 `Effect{id}` 结构体需人工确认是否由合并实现覆盖
- `53`
- `74`
- `75`
- `186`
- `402`
- `433`
- `446`
- `451`
- `463`
- `497`
- `564`
- `588`
说明
- 这类通常可能是多个 id 共用一个结构体实现命名与 id 不一致需要逐个确认是否真正缺失行为
### 3.3 疑似未实现扫描规则存在 `Effect{id}` 类型但没有核心战斗 Hook
- `519``effect_519.go`
- `532``532.go`
- `552``552.go`
- `560``560.go`
- `576``576.go`
说明
- 这批是高优先级人工复查项不一定真的没实现可能通过组合/间接机制生效
### 3.4 当前更可信的下一批候选
这一组是结合本轮人工核对后仍然值得优先继续补的缺失 effect 候选
- 当前文档 3.4 中这批候选已在本轮补齐
说明
- 这批大多是 58x/59x 段的新效果和当前目录中已有实现重叠较少
- 相比继续深挖旧扫描误差这批更适合直接新增文件推进
---
## 4. 下次继续的建议顺序
建议严格按下面顺序继续不要重新从全量扫描开始
1. 先复核文档 3.4 里的候选项是否仍未实现
2. 优先补单次触发命中附加固定伤害恢复概率状态这类低风险逻辑
3. 再处理复制对手状态 / 多分支条件 / 触发链式子效果 58x/59x 复杂效果
4. 最后再回头处理文档 2 中那些仍保留自定义 `SetArgs` 的结构整理
本轮更推荐的下一批实现顺序
- 第一组`529 / 552 / 560 / 576`
- 第二组`10 / 11 / 12 / 14 / 15 / 16`
- 第三组`94 / 99 / 103 / 114`
---
## 5. 下一次继续让我实现时可直接复制的指令
可直接用下面这句发起
`继续处理 effect按 docs/effect-refactor-summary-2026-03-28.md 的 3.3 和 4 执行:先复核 529/552/560/576再补低风险状态附加类 10/11/12/14/15/16每实现一批就更新同一文档和 effect_info_map.go并跑 go test ./service/fight/effect。`
如果你希望按 JSON 覆盖率推进可用这句
`继续处理 effect按 docs/effect-refactor-summary-2026-03-28.md 的 3.0 从低风险效果开始补实现先补状态附加类10/11/12/14/15/16/94/99/103/114每实现一批就更新文档中的“已实现列表”和“剩余列表”。`
---
## 6. 扫描口径说明供后续排查
- 已注册效果 ID 扫描来源
- `InitEffect(input.EffectType.Skill, <id>, ...)`
- `initskill(<id>, ...)`
- 但这还不够后续扫描必须额外统计这些共享实现/批量注册文件
- `sterStatusEffects.go`
- `effect_power_doblue.go`
- `EffectAttackMiss.go`
- `EffectPhysicalAttackAddStatus.go`
- `EffectDefeatTrigger.go`
- `effect_attr.go`
- `effect_EffectConditionalAddDamage.go`
- `effect_74_75.go`
- `effect_104_109.go`
- `Effect{id}` 结构体与方法扫描来源
- `logic/service/fight/effect/*.go`
- 疑似未实现判断是启发式不是最终结论仍需代码级确认
---
## 7. 这次改动涉及的关键文件
- `public/config/effectInfo.json`
- `logic/service/fight/effect/400_480_586_599_610_611_613.go`
- `logic/service/fight/effect/573_587_591_592_594_596_597_598.go`
- `logic/service/fight/effect/effect_info_map.go`
- `logic/service/fight/effect/sub_effect_helper.go`
- `docs/effect-refactor-summary-2026-03-28.md`
---
## 8. 2026-03-29 增量记录
### 8.1 本轮补齐的 effect
- `663` `{0}回合内若对手使用攻击技能则{1}%使对手{2}`
- `664` 若先出手则当回合对手无法造成攻击伤害
- `665` 造成的伤害低于`{0}``{1}`回合内自身受到的伤害减少`{2}`
- `666` 使自身下回合攻击必定先手必定暴击
- `667` 自身为满体力时`{0}{1}`
### 8.2 实现口径
- `663` 复用与 `614` 同类的对手使用攻击技能时触发路径 `Skill_Use_ex()` 中按概率给对手附加状态
- `664` 复用 `170` 的先手免伤模式 `DamageLockEx()` 中将当回合受到的攻击伤害归零
- `665` 按技能实参 `250 3 100` 的实际使用方式落为低于阈值则给自己挂 3 回合 100 点固定减伤子效果不是百分比减伤
- `666` 落为仅对下回合攻击技能生效的先手与暴击保证`ComparePre()` 强制先手`ActionStart()` 强制暴击
- `667` 按配置说明自身攻击+a防御+b特攻+c特防+d速度+e命中+f处理仅在满体力时给自己附加前 6 项能力等级
### 8.3 本轮新增文件
---
## 9. 2026-03-31 增量记录
### 9.1 本轮补齐的 effect
- `764` `{0}回合内若对手使用攻击技能降低对手最大体力的1/{1}`
- `765` `{0}回合对手无法使自身能力出现提升状态`
- `766` 消除对手能力提升状态消除成功则`{0}`回合内对手造成的攻击伤害不超过`{1}`
- `767` `{0}`回合内每回合使用技能且出手流程结束后若对手处于能力下降状态则附加给对手`{1}`点固定伤害
- `768` 对手每处于一种异常状态则附加`{0}`点固定伤害
- `774` 若自身当前体力高于对手则附加对手最大体力1/`{0}`的百分比伤害
- `775` `{0}`回合内若受到的伤害大于`{1}`则恢复自身所有体力
- `777` 消除对手能力上升状态消除成功下`{0}`回合必定先出手
- `778` 反转对手的能力提升状态反转成功则恢复自身所有体力
- `779` 若对手处于能力提升状态则先制+2
### 9.2 已存在并复核通过
- `776` 已实现于 `logic/service/fight/effect/effect_776.go`
### 9.3 本轮新增文件
- `logic/service/fight/effect/764_768.go`
- `logic/service/fight/effect/774_779.go`
### 9.4 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
### 9.5 本轮顺手修复的同包编译阻塞
- `logic/service/fight/effect/2195_2219.go`
- 修正 `uint32 * int` 的类型不匹配
- `logic/service/fight/effect/2220_2244.go`
- 修正将 `info.Category` 误当函数调用的问题改为 `info.EnumCategory`
### 9.6 本轮验证
- 已执行
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
- 结果
- 通过
### 9.7 任务文档状态
- `task-031-effects-764-768.md` 本轮已可视为完成
- `task-033-effects-774-779.md` 本轮已可视为完成`776` 为既有实现
- 本轮未删除任务文档如下一轮继续清理 backlog可直接移除这两份任务文件
### 9.8 后续增量
- 已继续补齐
- `785` 若自身攻击对手时克制关系为微弱则先制+2
- `786` 令对手随机进入`{0}`种异常状态
- `787` `{0}`回合内使用技能后若对手处于能力提升状态则附加对手最大体力1/`{1}`的百分比伤害
- `788` 消除对手能力提升消除成功`{0}`回合内免疫异常状态
- `789` 消除对手回合类效果消除成功对手下`{0}`回合受到的伤害翻倍
- 新增文件
- `logic/service/fight/effect/785_789.go`
- `logic/service/fight/effect/795_799.go`
- 已继续补齐
- `795` 每次使用则当回合造成的攻击伤害额外提升`{0}`%最高额外提升`{1}`%
- `796` `{0}`回合内每回合吸取对手当前体力的1/`{1}`
- `797` 消除对手回合类效果消除成功`{0}`回合内对手无法通过自身技能恢复体力
- `798` 若对手处于能力提升状态则对手`{0}`回合内造成的伤害不超过`{1}`
- `799` 恢复自身最大体力的1/`{0}`并给对手造成等量百分比伤害自身体力低于1/`{1}`时效果翻倍
- `logic/service/fight/effect/663_667.go`
### 8.4 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/task-013-effects-663-667.md` 已完成可从任务目录移除
### 8.5 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
---
## 9. 2026-03-29 增量记录
### 9.1 本轮补齐的 effect
- `668` 若对手处于能力提升状态则先制额外+1
- `669` 当回合击败对手则下回合自身攻击先制+1
- `670` `{0}`回合每回合附加`{1}``{2}`值的`{3}%`的百分比伤害
- `671` 若对手处于异常状态则恢复造成伤害的`{0}%`的体力
- `672` 当回合击败对手则恢复自身全部体力
### 9.2 实现口径
- `668` 复用 `539` 的条件先制模式 `ComparePre()` 中于对手存在能力提升状态时直接给当前技能先制+1
- `669` 当回合击败后为下回合攻击技能生效处理 `SwitchOut()` 中标记击败成立下一回合 `ComparePre()` 仅对攻击技能追加先制+1
- `670` 参照 `419` `593` 的组合语义实现为回合类附加伤害效果持续期间每次使用技能时附加一次基于指定目标属性值的固定伤害
- `671` 复用 `687` 的伤害回血模式但条件改为对手处于任意异常状态
- `672` 按击败即时触发处理在对手因本次攻击退场时立刻将自身体力回复至满值
### 9.3 本轮新增文件
- `logic/service/fight/effect/668_672.go`
### 9.4 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/task-014-effects-668-672.md` 已完成可从任务目录移除
### 9.5 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
---
## 10. 2026-03-29 增量记录
### 10.1 本轮补齐的 effect
- `642` `{0}回合内若对手攻击技能命中则己方在场精灵{1}%做出{2}`
- `643` `{0}%概率使对手{1}回合内{2}能力每回合变化{3}`
- `644` 当回合未击败对手则减少对手当前体力`1/{0}`
- `645` 体力低于`1/{0}`时威力`{1}`
- `646` 体力高于对手时此技能命中后 100% 使对手能力下降
### 10.2 实现口径
- `642` `moves.json` `1000642` 的说明实现反击档位映射`0-5` 分别对应 `50/100/150/200/250/300` 点固定伤害挂在 defender `Skill_Use_ex()`仅对命中的攻击技能生效
- `643` 按真实技能实参 `55 2 1 -1` 这类布局处理为命中后按概率给对手挂回合子效果子效果在 `TurnEnd()` 对指定能力执行一次 `SetProp`
- `644` 复用 `579` 未击败对手判定时机落在 `Action_end()`按对手当前体力结算 `1/n` 的百分比伤害
- `645` 复用 `37` 的低血线威力倍率模式 `SkillHit()` 中按当前体力是否低于最大体力 `1/n` 改写技能威力
- `646` 未按任务文档里的占位 `param` 硬编码改按实际技能配置的 6 段能力变化参数通用处理仅在自身体力高于对手且本次技能命中后生效
### 10.3 本轮新增文件
- `logic/service/fight/effect/642_646.go`
### 10.4 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/task-009-effects-642-646.md` 已完成可从任务目录移除
---
## 11. 2026-03-29 增量记录
### 11.1 本轮补齐的 effect
- `769` 若对手不处于异常状态则造成的攻击伤害额外提升`{0}%`
- `770` 若对手处于异常状态则恢复自身全部体力
- `771` `{0}`回合内每次使用攻击技能都有`{1}%`概率使对手进入任意一种异常状态
- `772` `{0}`回合内若对手使用攻击技能则有`{1}%`概率随机进入烧伤冻伤中毒麻痹害怕睡眠中的一种异常状态
- `773` 若自身体力低于对手则与对手互换体力
### 11.2 实现口径
- `769` 复用 `1103` 的条件增伤写法 `SkillHit()` 中仅对攻击技能生效并在对手不存在任意异常状态时追加威力百分比
- `770` 按技能结算后触发处理落在 `Skill_Use()`满足对手处于异常状态时直接回复自身满体力
- `771` 作为回合类自身增益实现持续期间在 `OnSkill()` 针对每次攻击技能按概率给对手附加一项随机异常状态
- `772` 参照 `559` defender 侧监听时机落在 `Skill_Use_ex()`对手使用攻击技能时按概率附加六选一异常状态
- `773` 复用 `529` 的直接改写当前体力思路在满足自身体力低于对手时交换双方当前体力并分别按各自最大体力上限截断
### 11.3 本轮新增文件
- `logic/service/fight/effect/769_773.go`
### 11.4 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/task-032-effects-769-773.md` 已完成可从任务目录移除
---
## 12. 2026-03-29 增量记录
### 12.1 本轮补齐的 effect
- `1498` 随机附加烧伤冻伤失明失神中的 `{0}` 种异常状态未触发则自身下 `{1}` 回合造成的伤害提升 `{2}%`
- `1499` 体力低于最大体力的 `1/3` 时先制 `+3`
- `1500` 1 回合做 `{0}-{1}` 次攻击自身处于护盾状态下连击上限为 `{2}`
- `1501` 命中后为对手种下一颗黑暗之种
- `1502` 对手身上存在黑暗之种时先制 `+1`
### 12.2 实现口径
- `1498` 复用 `1111` 未触发则挂自身增伤子效果模式随机状态池按任务文案落为烧伤冻伤失明失神若本次一个状态都未成功挂上则给自身添加持续 `{1}` 回合的增伤子效果
- `1499` 复用现有条件先制写法 `ComparePre()` 中按当前体力是否低于最大体力 `1/3` 直接修改当前技能优先级
- `1500` 参照仓库现有多段技能处理口径不做逐段攻击而是在 `Damage_Mul()` 中按随机连击次数折算红伤倍率若自身当前存在护盾则用 `{2}` 约束连击上限
- `1501` 作为挂在 defender 身上的持久子效果实现命中后附加黑暗之种 4 `TurnEnd()` 随机扣 1 个技能 PP成熟后每回合所有技能 PP `-1`下场后清除
- `1502` `ComparePre()` 中检查对手是否持有 `1501` 的子效果存在时当前技能先制 `+1`
### 12.3 模型假设
- 仓库当前未注册失神状态本轮按状态 ID `29` 追加了一个最小可用实现行为复用 `StatusCannotAct`
- `1500` 仍受当前战斗模型限制只能按总连击数折算伤害不能表现逐段命中逐段触发的细粒度行为
### 12.4 本轮新增文件
- `logic/service/fight/effect/1498_1502.go`
### 12.5 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/README.md`
- `docs/effect-unimplemented-tasks/task-177-effects-1498-1502.md` 已完成可从任务目录移除
### 12.6 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
---
## 13. 2026-03-29 增量记录
### 13.1 本轮补齐的 effect
- `1503` 清除对手身上的黑暗之种清除成功则令对手随机受到 `1-500` 点固定伤害
- `1504` `40%` 令对手诅咒若对手身上存在黑暗之种则概率翻倍
- `1505` 黑暗之种成长期时附加 `200` 点固定伤害黑暗之种长大后固定伤害翻倍
- `1506` 若对手不是龙系精灵则恢复自身 `{0}` 点体力
- `1507` `{0}` 回合内自身受到攻击则令对手随机进入 `{1}` 种异常状态未触发则消除对手回合类效果
### 13.2 实现口径
- `1503` 复用本轮新增的黑暗之种清理 helper `Skill_Use()` 中清除对手持有的 `1501` 子效果仅当成功清除时追加一次 `1-500` 的随机固定伤害
- `1504` 按任务文案直接实现为基础 `40%` 概率若对手当前仍持有黑暗之种则翻倍到 `80%`仓库尚无诅咒状态注册本轮补了一个最小可用的状态壳以承接后续联动
- `1505` 读取 `1501` 子效果当前成长阶段成长期附加 `200` 固定伤害成熟后附加 `400` 固定伤害若对手不存在黑暗之种则不触发
- `1506` 使用宠物当前系别组合判断是否包含龙系仅在对手主属性副属性均不为龙系时恢复自身体力
- `1507` 复用 `1228` defender 侧监听模式落在 `Skill_Use_ex()`对手使用攻击技能命中本体时随机附加若干异常状态若整段持续时间内一次都未成功触发则在最后一回合结束时清除对手回合类效果
### 13.3 模型假设
- 仓库当前缺少诅咒状态实现本轮按状态 ID `23` 注册了一个最小 `BaseStatus` 版本只提供状态存在性与常规下场清理不额外附带持续结算逻辑
- `1505` 黑暗之种成长期/长大后判断直接复用 `1501` 子效果内部阶段计数 4 次回合结束视为成长期 5 次起视为成熟
### 13.4 本轮新增文件
- `logic/service/fight/effect/1503_1507.go`
### 13.5 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/README.md`
- `docs/effect-unimplemented-tasks/task-178-effects-1503-1507.md` 已完成可从任务目录移除
### 13.6 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
---
## 14. 2026-03-30 增量记录
### 14.1 本轮补齐的 effect
- `1508` 先出手时无视攻击免疫效果
- `1509` 令对手全属性-`{0}` 且随机 `{1}` 个技能 PP 值归零技能无效时消耗自身全部体力并令对手全属性-1然后对手下 3 次使用技能消耗的 PP 值为 3
- `1510` `{0}` 回合内对手主动切换精灵则登场精灵 `{1}%` 随机进入 `{2}` 种异常状态
- `1511` 先出手时免疫当回合受到的攻击伤害若对手为自身天敌则免疫并反弹给对手造成伤害值 `{0}%` 的百分比伤害
- `1512` 集结天幕四龙之神力使自身下 2 回合先制+3且攻击必定命中必定致命
### 14.2 实现口径
- `1508` 采用仓库现有模型下的局部支持方案若自身本次先出手且使用攻击技能则在伤害结算前临时屏蔽若干常见攻击伤害清零类 immunity effect并在技能结算结束后恢复
- `1509` 正常命中时直接令对手全属性下降并随机清空若干技能 PP若本次技能实体存在但 `AttackTime == 0`则按技能无效分支处理自损全部体力令对手全属性-1并给对手挂 3 PP 三倍消耗子效果
- `1510` 复用 `1562` 主动切换后对登场精灵生效模式效果挂在对手侧仅在对手主动切换下场时置 pending登场后按概率随机附加若干异常状态
- `1511` 复用 `170/1011` 的免疫伤害写法落在 `DamageLockEx()`若自身先出手则直接免疫本回合受到的红伤若对手同时为自身天敌则按原伤害值 `{0}%` 追加一次百分比伤害反弹
- `1512` 作为持续 2 回合的自身子效果实现 `ComparePre()` 中固定追加先制 `+3`并在 `ActionStart()` 中对攻击技能同时赋予必中与必定致命
### 14.3 模型假设
- `1508` 当前没有通用无视攻击免疫标记位本轮仅覆盖仓库内已识别的常见攻击免疫 effect`170/525/570/850/1011/1511`对其他未来新增或语义不同的 defender 侧免疫实现不保证自动生效
- `1509` 技能无效时按仓库现有口径解释为技能实体存在但本次结算后 `AttackTime == 0`不把被控未出手 PP 无法释放这类情况算作技能无效
### 14.4 本轮新增文件
- `logic/service/fight/effect/1508_1512.go`
### 14.5 本轮同步更新
- `logic/service/fight/effect/effect_info_map.go`
- `docs/effect-unimplemented-tasks/README.md`
- `docs/effect-unimplemented-tasks/task-179-effects-1508-1512.md` 已完成可从任务目录移除
### 14.6 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`