Compare commits

...

2 Commits

Author SHA1 Message Date
AncTe
3c0d8cc138
Merge 566ffc586a into 1a569804d8 2026-06-17 12:24:44 +00:00
566ffc586a chore: 战斗返回值调整 2026-06-17 20:24:28 +08:00
3 changed files with 14 additions and 3 deletions

View File

@ -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<IEnemyAttr, IHeroAttr>
): IEnemyDamageInfo {
): IEnemyDamageInfoBase {
const { enemy, locator, hero } = handler;
const hp = hero.getBaseAttribute('hp');
const atk = hero.getFinalAttribute('atk');

View File

@ -176,11 +176,13 @@ export class CombatFlow<TEnemy, THero>
}
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);
}

View File

@ -793,6 +793,15 @@ export interface ICombatScript<TEnemy, THero> {
): 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>
extends IHookable<ICombatFlowHook<TEnemy, THero>>, IStateBaseExtended {
/** 勇士属性对象 */