chore: 战斗返回值调整

This commit is contained in:
unanmed 2026-06-17 20:24:28 +08:00
parent 9f62d8768e
commit 566ffc586a
3 changed files with 14 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import { import {
CriticalableHeroStatus, CriticalableHeroStatus,
IDamageCalculator, IDamageCalculator,
IEnemyDamageInfo, IEnemyDamageInfoBase,
IReadonlyEnemyHandler IReadonlyEnemyHandler
} from '@user/data-system'; } from '@user/data-system';
import { IEnemyAttr, IHeroAttr } from '@user/data-common'; import { IEnemyAttr, IHeroAttr } from '@user/data-common';
@ -18,7 +18,7 @@ export class MainDamageCalculator implements IDamageCalculator<
calculate( calculate(
handler: IReadonlyEnemyHandler<IEnemyAttr, IHeroAttr> handler: IReadonlyEnemyHandler<IEnemyAttr, IHeroAttr>
): IEnemyDamageInfo { ): IEnemyDamageInfoBase {
const { enemy, locator, hero } = handler; const { enemy, locator, hero } = handler;
const hp = hero.getBaseAttribute('hp'); const hp = hero.getBaseAttribute('hp');
const atk = hero.getFinalAttribute('atk'); const atk = hero.getFinalAttribute('atk');

View File

@ -176,11 +176,13 @@ export class CombatFlow<TEnemy, THero>
} }
for (const script of this.scriptList) { 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( await Promise.all(
this.forEachHook(hook => hook.onBeforeCombat?.(damage)) this.forEachHook(hook => hook.onBeforeCombat?.(damage))
); );
for (const script of this.scriptList) { for (const script of this.scriptList) {
await script.after(damage, handler); await script.after(damage, handler);
} }

View File

@ -793,6 +793,15 @@ export interface ICombatScript<TEnemy, THero> {
): Promise<void>; ): Promise<void>;
} }
export interface ICombatResult<TEnemy, THero> {
/** 是否通过战前脚本跳过了战斗流程 */
readonly skipped: boolean;
/** 战斗伤害信息对象 */
readonly damageInfo: IEnemyDamageInfo<TEnemy, THero>;
/** 怪物信息对象 */
readonly enemyHandler: IReadonlyEnemyHandler<TEnemy, THero>;
}
export interface ICombatFlow<TEnemy, THero> export interface ICombatFlow<TEnemy, THero>
extends IHookable<ICombatFlowHook<TEnemy, THero>>, IStateBaseExtended { extends IHookable<ICombatFlowHook<TEnemy, THero>>, IStateBaseExtended {
/** 勇士属性对象 */ /** 勇士属性对象 */