Files
kemkas-gh-mirror/Kemkas.Web/frontend/src/second-edition/domain-models/karakter2E.ts
T

76 lines
2.2 KiB
TypeScript

import {KarakterTulajdonsagok, TulajdonsagDefaults} from "./tulajdonsag2E";
import {Faj2E} from "./faj2E";
import {Osztaly2E} from "./osztaly2E";
import {KepzettsegId} from "./kepzettsegek2E";
import {JellemID} from "./jellem";
import {DefaultFelszereles, KarakterFelszereles} from "./felszereles";
import {Szintlepes} from "./szintlepes";
import {AllowedFegyver} from "./allowed-fegyver";
import {BaseHP} from "./masodlagos_ertekek";
import {dAny} from "../../shared/domain-models/kockak";
export interface Karakter2E {
name: string,
nem?: string,
kor: number,
isten?: string,
jellem: JellemID,
tulajdonsagok: KarakterTulajdonsagok
faj: Faj2E
osztaly: Osztaly2E
kepzettsegek: KepzettsegId[]
tolvajKepzettsegek?: KepzettsegId[]
szint: number,
felszereles: KarakterFelszereles,
szintlepesek: Szintlepes[]
}
export const DefaultKarakter: Karakter2E = {
name: 'Névtelen Kalandozó',
kor: 20,
jellem: 'S',
tulajdonsagok: TulajdonsagDefaults,
faj: Faj2E.Ember,
osztaly: Osztaly2E.Tengeresz,
kepzettsegek: [],
tolvajKepzettsegek: [],
szint: 1,
felszereles: DefaultFelszereles,
szintlepesek: [{
osztaly: Osztaly2E.Tengeresz,
HProll: 10,
}]
}
function setOsztalyForSzintLepes(szintlepes: Szintlepes, osztaly: Osztaly2E, szint: number): Szintlepes {
const base : Szintlepes = {
...szintlepes,
osztaly,
harcosFegyver: undefined,
kalozKritikus: undefined
}
if (osztaly === Osztaly2E.Harcos && szint % 2 === 1) {
base.harcosFegyver = AllowedFegyver(Osztaly2E.Harcos)[szint].Id
}
if (osztaly === Osztaly2E.Tengeresz && szint % 3 === 0) {
base.kalozKritikus = AllowedFegyver(Osztaly2E.Tengeresz)[szint].Id
}
const HD = BaseHP(osztaly)
if (szint === 1) {
base.HProll = HD
} else {
base.HProll = dAny(HD)
console.log(`Level ${szint} HP roll on d${HD} is: ${base.HProll} due to class change`)
}
return base
}
export function ChangeLvl1Osztaly(karakter: Karakter2E, osztaly: Osztaly2E): Karakter2E {
return {
...karakter,
osztaly,
szintlepesek: karakter.szintlepesek.map((l, idx) => setOsztalyForSzintLepes(l, osztaly, idx +1))
}
}