Files
heros/assets/script/game/damage/DamageComp.ts

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;
}
}