24 lines
892 B
TypeScript
24 lines
892 B
TypeScript
import type { DamageSchool } from "./combatAuras";
|
|
|
|
/**
|
|
* A damage packet can carry more than one school tag. This is distinct from a
|
|
* single DamageSchool: for example, CoA's "Physical Dark" must remain both
|
|
* physical and Dark (represented by the project's shadow school mapping).
|
|
*/
|
|
export interface CombatDamageProfile {
|
|
readonly schools: readonly DamageSchool[];
|
|
}
|
|
|
|
/** CoA Dark is represented by the simulator's existing shadow school. */
|
|
export const ROM_PHYSICAL_DARK_DAMAGE_PROFILE = Object.freeze({
|
|
schools: Object.freeze(["physical", "shadow"] as const),
|
|
}) satisfies CombatDamageProfile;
|
|
|
|
/** A school-specific modifier/absorb matches a composite packet by either tag. */
|
|
export function combatDamageProfileMatchesSchool(
|
|
profile: CombatDamageProfile,
|
|
school: DamageSchool | undefined,
|
|
): boolean {
|
|
return school === undefined || profile.schools.includes(school);
|
|
}
|