export class DnDCharacter {
  private _strength: number;
  private _dexterity: number;
  private _constituion: number;
  private _intelligence: number;
  private _wisdom: number;
  private _charisma: number;

  constructor() {
    this._strength = DnDCharacter.generateAbilityScore();
    this._dexterity = DnDCharacter.generateAbilityScore();
    this._constituion = DnDCharacter.generateAbilityScore();
    this._intelligence = DnDCharacter.generateAbilityScore();
    this._wisdom = DnDCharacter.generateAbilityScore();
    this._charisma = DnDCharacter.generateAbilityScore();
  }

  public static generateAbilityScore(): number {
    return Math.floor(3 + Math.random() * (18 - 3));
  }

  public static getModifierFor(abilityValue: number): number {
    return Math.floor((abilityValue - 10) / 2);
  }

  get hitpoints(): number {
    return 10 + DnDCharacter.getModifierFor(this._constituion);
  }
  get strength(): number {
    return this._strength;
  }
  get dexterity(): number {
    return this._dexterity;
  }
  get constitution(): number {
    return this._constituion;
  }
  get intelligence(): number {
    return this._intelligence;
  }
  get wisdom(): number {
    return this._wisdom;
  }
  get charisma(): number {
    return this._charisma;
  }
}
