被动、追加与特殊触发补齐记录
日期:2026-11-05。实现:full-effects.js,由 team-combat.js 统一调用;所有预览及通关验证共用同一引擎。原引擎备份为 team-combat-before-full-effects.js。
本次接入
| 类别 | 已执行规则 / 回归示例 |
|---|---|
| 升星与常驻被动 | 星级解锁、生命攻防等属性、条件增伤/穿透;雨中细吻15%生命、言止于吻穿透 |
| 多次施技 | 烟光迷离低血隐藏全体追加、夹击/反击、阳光地图夹击替换技能、单次触发CD、追加回合 |
| 时点与条件 | 开战、施技前后、自身/其他角色回合、受击、生命事件、死亡/复活;源目标、触发者、阵营、技能、HP、强化/弱化数、站位、冷却条件 |
| 状态与持续伤害 | 多份血绽/燃烧快照、毒/剧毒、炸弹、引爆、叠层/上限/刷新/到期、状态值倍率、死亡保留标记、驱散/净化/转移、状态延长/缩短 |
| 生存与联动 | 护盾消耗/到期、封愈/封强化/免疫、无敌/坚忍、复活、反伤、吸血、诅咒、光环最高减伤/分担 |
| 行动顺序 | 加减速、拉退条、禁锢、标记、睡眠/眩晕/沉默/嘲讽、潜影单体选目标限制及群体减伤 |
| 概率 | 固定种子复现、逐目标概率及普通抵抗、固有免疫、忽略抵抗/闪避;主动“忽略”策略有提示 |
追加攻击与反击的伤害按实际施放者累计;时间轴同一行内双方贡献分列,避免反击被计入发起行动的一方。隐含属性加成显示在“入场属性(含被动)”。
客户端证据
在既有伤害与冷却研究基础上补查:
- SkillFunctionInfo.BuffAttack 0x23898B8 → BattleCalculator.ProcessStatusHit 0x232CE14。
- CalculateDirectHit 0x232D134:状态快照乘 AttackPowerRate=1.871,防御系数0.3(浮点地址0xD487FC),分母常数2000。
- SkillFunctionInfo.AddInjuryRate 0x238B29C、BattleRoleData.AddInjuryRate 0x2338D60;其静态构造0x233BF60设侵蚀上限为50%。
- ProcessEvent 0x232D548 的 BeforeEvent / SourceBeforeEvent / 状态及护盾 / HP结算流程。
- 导出技能的动态字段原值保存在 data/raw/Skill.json;状态为 data/raw/Status.json。补充反汇编见 combat-research/current-.txt 与 asm-.txt。
验证与边界
- 审计841条技能、97条状态、1343个动态字段;未识别函数/条件/属性/触发/目标类型为0。未知名称会报错,不静默跳过。
- 新增29组效果用例,覆盖具体伤害、目标、CD、状态、死亡和联动;另逐一运行272份角色(含预留配置)、699个关卡敌方位置,以及841条源技能的基础场景。
- 批量运行证明解析、运行稳定性与有限数值;不能单凭这一点证明所有组合的语义与实机完全一致。
- 个别关卡引用源表缺失的技能;保持具体缺项提示并标注通关资料缺项,不用同名角色的其他技能猜补。列表见 full-effects-coverage.json。
- 期望模式、同刻触发顺序、AI复杂评分、实机整数取整仍有模拟边界。没有宣称实机必胜或完整枚举随机分支。
本轮验收结果
JavaScript测试运行器73项通过(含原有自执行公式、组队及资料映射套件);Python数据/养成/关卡检查18项通过。浏览器检查:四人示例队伍3星被动、高层试炼自动重算、入场被动属性、夹击来源与技能编号、双方伤害分列、资料缺项标题及控制台无错误。页面宽1280px时文档无横向溢出;时间轴内部可横向滚动。截图:full-effects-browser.png。个人资料未写入测试内容,测试队伍未保存。
