Files
kemkas-frontend/frontend/src/second-edition/domain-models/tulajdonsag2E.ts
T
2024-03-31 11:55:56 +02:00

73 lines
2.6 KiB
TypeScript

import {Karakter2E} from "./karakter2E";
import {TulajdonsagokFajjal} from "./faj2E";
import {RollAbility} from "../../shared/domain-models/rollAbility";
export enum Tulajdonsag2E {
Ero = 't_ero',
Ugyesseg = 't_ugy',
Egeszseg = 't_egs',
Intelligencia = 't_int',
Bolcsesseg = 't_bol',
Karizma = 't_kar',
}
export type KarakterTulajdonsagok = Record<Tulajdonsag2E, number>
export const TulajdonsagIDs = [
Tulajdonsag2E.Ero,
Tulajdonsag2E.Ugyesseg,
Tulajdonsag2E.Egeszseg,
Tulajdonsag2E.Intelligencia,
Tulajdonsag2E.Bolcsesseg,
Tulajdonsag2E.Karizma
]
export const TulajdonsagDefaults: KarakterTulajdonsagok = {
t_ero: 10,
t_ugy: 10,
t_egs: 10,
t_int: 10,
t_bol: 10,
t_kar: 10,
}
export function TulajdonsagLabel(tul: Tulajdonsag2E) : string {
switch (tul) {
case Tulajdonsag2E.Bolcsesseg: return 'Bölcsesség';
case Tulajdonsag2E.Ero: return 'Erő';
case Tulajdonsag2E.Ugyesseg: return 'Ügyesség';
case Tulajdonsag2E.Egeszseg: return 'Egészség';
case Tulajdonsag2E.Intelligencia: return 'Intelligencia';
case Tulajdonsag2E.Karizma: return 'Karizma';
}
}
export function RollAllAbilities() : KarakterTulajdonsagok {
const response = {...TulajdonsagDefaults}
for (const key of TulajdonsagIDs) {
response[key] = RollAbility()
}
return response
}
export const Modifier = (val : number) => Math.floor(val / 3) - 3
export function TulajdonsagModosito(tulajdonsagok: KarakterTulajdonsagok): KarakterTulajdonsagok {
let response: KarakterTulajdonsagok = { ...tulajdonsagok }
for (const key of TulajdonsagIDs) {
response[key] = Modifier(tulajdonsagok[key])
}
return response
}
export function TulajdonsagokTotal(karakter: Pick<Karakter2E, 'tulajdonsagok' | 'faj' | 'szintlepesek'>): KarakterTulajdonsagok {
const level1 = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
return {
t_ero: level1.t_ero + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_ero').length,
t_ugy: level1.t_ugy + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_ugy').length,
t_egs: level1.t_egs + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_egs').length,
t_int: level1.t_int + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_int').length,
t_bol: level1.t_bol + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_bol').length,
t_kar: level1.t_kar + karakter.szintlepesek.filter(s => s.tulajdonsagNoveles === 't_kar').length,
}
}