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