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