mirror of
https://github.com/motajs/template.git
synced 2026-07-17 09:21:09 +08:00
Compare commits
2 Commits
7acfef16bd
...
3c0d8cc138
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c0d8cc138 | ||
| 566ffc586a |
@ -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');
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
/** 勇士属性对象 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user