diff --git a/packages-user/data-system/src/combat/context.test.ts b/packages-user/data-system/src/combat/context.test.ts index 78d977c..f2f81fb 100644 --- a/packages-user/data-system/src/combat/context.test.ts +++ b/packages-user/data-system/src/combat/context.test.ts @@ -621,8 +621,8 @@ describe('EnemyContext single aura ranges', () => { ).toBe(5); }); - // 疑似 bug:deleteAura 后再次全量构建应回到基础 atk,详见 06-TEST-FINDINGS.md #06-15-1,修复后取消 skip - it.skip('applies a global aura after addAura and stops applying it after deleteAura', () => { + // 验证 deleteAura 后再次全量构建会回到基础 atk + it('applies a global aura after addAura and stops applying it after deleteAura', () => { const fixture = createContextFixture(); fixture.context.bindHero(fixture.hero); fixture.context.registerAuraConverter(new FakeConverter([])); diff --git a/packages-user/data-system/src/combat/context.ts b/packages-user/data-system/src/combat/context.ts index b102de9..2eb2a00 100644 --- a/packages-user/data-system/src/combat/context.ts +++ b/packages-user/data-system/src/combat/context.ts @@ -693,6 +693,10 @@ export class EnemyContext implements IEnemyContext< this.dirtyEnemy.clear(); this.needTotallyRefresh.clear(); this.requestedCommonContext.clear(); + // 全量重建前必须先把各视图退回原始怪物,否则重复构建会在上一轮数值上继续累加 + for (const view of this.enemyViewMap.values()) { + view.reset(); + } const hasAura = this.auraConverter.size > 0; const hasSpecialQuery = this.specialQueryEffects.size > 0; if (hasAura || hasSpecialQuery) { diff --git a/packages-user/data-system/src/combat/damage.test.ts b/packages-user/data-system/src/combat/damage.test.ts index d2549fe..52380f6 100644 --- a/packages-user/data-system/src/combat/damage.test.ts +++ b/packages-user/data-system/src/combat/damage.test.ts @@ -673,8 +673,8 @@ describe('DamageSystem attribute linkage', () => { expect(system.getDamageInfo(newView)).toBeNull(); }); - // 疑似 bug:重复全量构建应从原始怪物重算而非在原计算值上累加,详见 06-TEST-FINDINGS.md #06-01-4,修复后取消 skip - it.skip('recomputes a repeat buildup from the base enemy without compounding', () => { + // 验证重复全量构建从原始怪物重算而非在原计算值上累加 + it('recomputes a repeat buildup from the base enemy without compounding', () => { const context = createEnemyContext({ shouldConvert: special => special.code === 20, convert: () => ({