template/packages-user/data-base/src/hero/modifier.ts
2026-07-10 15:30:20 +08:00

41 lines
968 B
TypeScript

import { BaseHeroModifier } from './attribute';
import { IHeroModifier } from './types';
export class ValueModifier extends BaseHeroModifier<number, number> {
readonly type = '@system/value';
constructor(
value: number,
readonly priority: number = 0
) {
super(value);
}
modify(value: number): number {
return value + this.value;
}
clone(): IHeroModifier<number, number> {
return new ValueModifier(this.value, this.priority);
}
}
export class PercentageModifier extends BaseHeroModifier<number, number> {
readonly type = '@system/percentage';
constructor(
value: number,
readonly priority: number = 10
) {
super(value);
}
modify(value: number, baseValue: number): number {
return value + baseValue * this.value;
}
clone(): IHeroModifier<number, number> {
return new PercentageModifier(this.value, this.priority);
}
}