41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
|
|
export enum DamageType {
|
|
Physical = 1,
|
|
Magic = 2,
|
|
True = 3
|
|
}
|
|
|
|
/** 伤害请求组件 */
|
|
@ecs.register('DamageRequest')
|
|
export class DamageRequest extends ecs.Comp {
|
|
source!: ecs.Entity; // 伤害来源
|
|
target!: ecs.Entity; // 伤害目标
|
|
baseValue!: number; // 基础伤害值
|
|
damageType: number = 1; // 伤害类型
|
|
canCrit: boolean = true; // 是否可暴击
|
|
ignoreDefense: boolean = false; // 是否忽略防御
|
|
|
|
reset() {
|
|
this.source = null!;
|
|
this.target = null!;
|
|
this.baseValue = 0;
|
|
this.damageType = 1;
|
|
this.canCrit = true;
|
|
this.ignoreDefense = false;
|
|
}
|
|
}
|
|
|
|
/** 伤害结果组件 */
|
|
@ecs.register('DamageResult')
|
|
export class DamageResult extends ecs.Comp {
|
|
finalDamage: number = 0;
|
|
isCrit: boolean = false;
|
|
isDodged: boolean = false;
|
|
|
|
reset(finalDamage: number = 0, isCrit: boolean = false, isDodged: boolean = false) {
|
|
this.finalDamage = finalDamage;
|
|
this.isCrit = isCrit;
|
|
this.isDodged = isDodged;
|
|
}
|
|
}
|