159 lines
3.1 KiB
TypeScript
159 lines
3.1 KiB
TypeScript
export interface Campaign {
|
|
id: number;
|
|
name: string;
|
|
role?: string;
|
|
created_at: string;
|
|
}
|
|
|
|
export interface Stat {
|
|
stat_name: string;
|
|
value: number;
|
|
}
|
|
|
|
export interface Gear {
|
|
id: number;
|
|
character_id: number;
|
|
name: string;
|
|
type: "weapon" | "armor" | "gear" | "spell";
|
|
slot_count: number;
|
|
properties: Record<string, unknown>;
|
|
effects: Record<string, unknown>;
|
|
game_item_id: number | null;
|
|
}
|
|
|
|
export interface Talent {
|
|
id: number;
|
|
character_id: number;
|
|
name: string;
|
|
description: string;
|
|
effect: Record<string, unknown>;
|
|
game_talent_id: number | null;
|
|
}
|
|
|
|
export interface Character {
|
|
id: number;
|
|
campaign_id: number;
|
|
user_id?: number | null;
|
|
created_by: string;
|
|
name: string;
|
|
class: string;
|
|
ancestry: string;
|
|
level: number;
|
|
xp: number;
|
|
hp_current: number;
|
|
hp_max: number;
|
|
ac: number;
|
|
alignment: string;
|
|
title: string;
|
|
notes: string;
|
|
background: string;
|
|
deity: string;
|
|
languages: string;
|
|
gp: number;
|
|
sp: number;
|
|
cp: number;
|
|
gear_slots_max: number;
|
|
overrides: Record<string, unknown>;
|
|
color: string;
|
|
luck_token: number;
|
|
torch_lit_at: string | null;
|
|
stats: Stat[];
|
|
gear: Gear[];
|
|
talents: Talent[];
|
|
}
|
|
|
|
export interface GameItem {
|
|
id: number;
|
|
name: string;
|
|
type: "weapon" | "armor" | "gear";
|
|
slot_count: number;
|
|
effects: Record<string, unknown>;
|
|
properties: Record<string, unknown>;
|
|
}
|
|
|
|
export interface GameTalent {
|
|
id: number;
|
|
name: string;
|
|
source: string;
|
|
description: string;
|
|
effect: Record<string, unknown>;
|
|
}
|
|
|
|
export interface AttackLine {
|
|
name: string;
|
|
modifier: number;
|
|
modifierStr: string;
|
|
damage: string;
|
|
tags: string[];
|
|
isTalent: boolean;
|
|
description?: string;
|
|
}
|
|
|
|
export interface RollResult {
|
|
id: number;
|
|
campaign_id: number;
|
|
character_id: number | null;
|
|
character_name: string;
|
|
character_color: string;
|
|
type: "attack" | "ability-check" | "custom";
|
|
subtype?: string;
|
|
label: string;
|
|
dice_expression: string;
|
|
rolls: number[];
|
|
modifier: number;
|
|
total: number;
|
|
advantage: boolean;
|
|
disadvantage: boolean;
|
|
nat20: boolean;
|
|
undone?: boolean;
|
|
created_at: string;
|
|
}
|
|
|
|
export interface Spell {
|
|
id: number;
|
|
name: string;
|
|
class: "wizard" | "priest" | "both";
|
|
tier: number;
|
|
casting_stat: "INT" | "WIS";
|
|
duration: string;
|
|
range: string;
|
|
is_focus: number;
|
|
description: string;
|
|
}
|
|
|
|
export interface CharacterSpell {
|
|
id: number;
|
|
spell_id: number;
|
|
character_id?: number;
|
|
exhausted: number;
|
|
locked_until: string | null;
|
|
focus_active: number;
|
|
focus_started_at: string | null;
|
|
name: string;
|
|
class: "wizard" | "priest" | "both";
|
|
tier: number;
|
|
casting_stat: "INT" | "WIS";
|
|
duration: string;
|
|
range: string;
|
|
is_focus: number;
|
|
description: string;
|
|
}
|
|
|
|
export interface SpellCastResult {
|
|
rollId: number;
|
|
roll: number;
|
|
modifier: number;
|
|
total: number;
|
|
dc: number;
|
|
result: "success" | "failure" | "crit_success" | "crit_fail";
|
|
mishapResult: Record<string, unknown> | null;
|
|
}
|
|
|
|
export interface Condition {
|
|
id: number;
|
|
character_id: number;
|
|
name: string;
|
|
description: string;
|
|
rounds_remaining: number | null;
|
|
expires_at: string | null;
|
|
}
|