feat: add character creation utility functions

This commit is contained in:
Aaron Wood 2026-04-11 11:51:37 -04:00
parent 34583c8eff
commit 6ecdda51f6

View file

@ -0,0 +1,48 @@
import { getModifier } from "./modifiers.js";
import { getShadowdarkTitle } from "./shadowdark-titles.js";
const CLASS_HIT_DIE: Record<string, number> = {
Fighter: 8,
Priest: 6,
Thief: 4,
Wizard: 4,
};
export function roll3d6(): number {
return (
Math.ceil(Math.random() * 6) +
Math.ceil(Math.random() * 6) +
Math.ceil(Math.random() * 6)
);
}
export function rollAllStats(): Record<string, number> {
return {
STR: roll3d6(),
DEX: roll3d6(),
CON: roll3d6(),
INT: roll3d6(),
WIS: roll3d6(),
CHA: roll3d6(),
};
}
export function rollStartingHp(charClass: string, conScore: number): number {
const die = CLASS_HIT_DIE[charClass] ?? 4;
const rolled = Math.ceil(Math.random() * die);
return Math.max(1, rolled + getModifier(conScore));
}
export function rollStartingGold(): number {
const d1 = Math.ceil(Math.random() * 6);
const d2 = Math.ceil(Math.random() * 6);
return (d1 + d2) * 5;
}
export function startingGearSlots(strScore: number): number {
return 10 + getModifier(strScore);
}
export function getStartingTitle(charClass: string, alignment: string): string {
return getShadowdarkTitle(charClass, alignment, 1) ?? "";
}