Files
initiative/packages/domain/src/conditions.ts

86 lines
1.8 KiB
TypeScript

export type ConditionId =
| "blinded"
| "charmed"
| "deafened"
| "exhaustion"
| "frightened"
| "grappled"
| "incapacitated"
| "invisible"
| "paralyzed"
| "petrified"
| "poisoned"
| "prone"
| "restrained"
| "stunned"
| "unconscious";
export interface ConditionDefinition {
readonly id: ConditionId;
readonly label: string;
readonly iconName: string;
readonly color: string;
}
export const CONDITION_DEFINITIONS: readonly ConditionDefinition[] = [
{ id: "blinded", label: "Blinded", iconName: "EyeOff", color: "neutral" },
{ id: "charmed", label: "Charmed", iconName: "Heart", color: "pink" },
{ id: "deafened", label: "Deafened", iconName: "EarOff", color: "neutral" },
{
id: "exhaustion",
label: "Exhaustion",
iconName: "BatteryLow",
color: "amber",
},
{
id: "frightened",
label: "Frightened",
iconName: "Siren",
color: "orange",
},
{ id: "grappled", label: "Grappled", iconName: "Hand", color: "neutral" },
{
id: "incapacitated",
label: "Incapacitated",
iconName: "Ban",
color: "gray",
},
{
id: "invisible",
label: "Invisible",
iconName: "Ghost",
color: "violet",
},
{
id: "paralyzed",
label: "Paralyzed",
iconName: "ZapOff",
color: "yellow",
},
{
id: "petrified",
label: "Petrified",
iconName: "Gem",
color: "slate",
},
{ id: "poisoned", label: "Poisoned", iconName: "Droplet", color: "green" },
{ id: "prone", label: "Prone", iconName: "ArrowDown", color: "neutral" },
{
id: "restrained",
label: "Restrained",
iconName: "Link",
color: "neutral",
},
{ id: "stunned", label: "Stunned", iconName: "Sparkles", color: "yellow" },
{
id: "unconscious",
label: "Unconscious",
iconName: "Moon",
color: "indigo",
},
] as const;
export const VALID_CONDITION_IDS: ReadonlySet<string> = new Set(
CONDITION_DEFINITIONS.map((d) => d.id),
);