From 566ffc586a9545d16d1278a389a745685f14f025 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 17 Jun 2026 20:24:28 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=88=98=E6=96=97=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages-user/data-state/src/enemy/calculator.ts | 4 ++-- packages-user/data-system/src/combat/combat.ts | 4 +++- packages-user/data-system/src/combat/types.ts | 9 +++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages-user/data-state/src/enemy/calculator.ts b/packages-user/data-state/src/enemy/calculator.ts index 35149d8..1c26822 100644 --- a/packages-user/data-state/src/enemy/calculator.ts +++ b/packages-user/data-state/src/enemy/calculator.ts @@ -1,7 +1,7 @@ import { CriticalableHeroStatus, IDamageCalculator, - IEnemyDamageInfo, + IEnemyDamageInfoBase, IReadonlyEnemyHandler } from '@user/data-system'; import { IEnemyAttr, IHeroAttr } from '@user/data-common'; @@ -18,7 +18,7 @@ export class MainDamageCalculator implements IDamageCalculator< calculate( handler: IReadonlyEnemyHandler - ): IEnemyDamageInfo { + ): IEnemyDamageInfoBase { const { enemy, locator, hero } = handler; const hp = hero.getBaseAttribute('hp'); const atk = hero.getFinalAttribute('atk'); diff --git a/packages-user/data-system/src/combat/combat.ts b/packages-user/data-system/src/combat/combat.ts index 79f6af1..a7ce68e 100644 --- a/packages-user/data-system/src/combat/combat.ts +++ b/packages-user/data-system/src/combat/combat.ts @@ -176,11 +176,13 @@ export class CombatFlow } for (const script of this.scriptList) { - await script.before(damage, handler); + const skip = await script.before(damage, handler); + if (skip) return damage; } await Promise.all( this.forEachHook(hook => hook.onBeforeCombat?.(damage)) ); + for (const script of this.scriptList) { await script.after(damage, handler); } diff --git a/packages-user/data-system/src/combat/types.ts b/packages-user/data-system/src/combat/types.ts index 6ac65aa..ec45622 100644 --- a/packages-user/data-system/src/combat/types.ts +++ b/packages-user/data-system/src/combat/types.ts @@ -793,6 +793,15 @@ export interface ICombatScript { ): Promise; } +export interface ICombatResult { + /** 是否通过战前脚本跳过了战斗流程 */ + readonly skipped: boolean; + /** 战斗伤害信息对象 */ + readonly damageInfo: IEnemyDamageInfo; + /** 怪物信息对象 */ + readonly enemyHandler: IReadonlyEnemyHandler; +} + export interface ICombatFlow extends IHookable>, IStateBaseExtended { /** 勇士属性对象 */