diff --git a/TODO.md b/TODO.md index ce32521..acea19a 100644 --- a/TODO.md +++ b/TODO.md @@ -2,19 +2,16 @@ ## Fixes - Kötelező képezettségek - Birodalmi tolvaj -- PDF pretty: Tamadas bonuszok +10/+5 - -## Level up -- Kalóz kritikus fegyver választás szintlépéskor (free text) +- PDF pretty: Tamadas bonuszok +10/+5 - Tolvaj 9.ik szinttől tiltott képzettségek -- multiclass characters -## PDF +## Features - specialis kepessegek 2ik oldalra nyomtatasa +- multiclass characters ## Epics - Backend - Varazslatok - Felszerelés +- KéM 2.0-ra felkészülés - Klikkelésre dobás -- KéM 2.0-ra felkészülés \ No newline at end of file diff --git a/src/components/HarcosFegyverSpecializacio.tsx b/src/components/HarcosFegyverSpecializacio.tsx index 4e929ac..b92de64 100644 --- a/src/components/HarcosFegyverSpecializacio.tsx +++ b/src/components/HarcosFegyverSpecializacio.tsx @@ -1,15 +1,25 @@ import React from "react"; -function HarcosFegyverSpecializacio(props: {specialization: string, existingSpecializations: string[], changeSpecialization: (specialization: string) => void }) { - const {specialization, existingSpecializations, changeSpecialization} = props - const hasError = existingSpecializations.filter(x => x === specialization).length > 1 +function HarcosFegyverSpecializacio(props: { + specialization: string, + existingSpecializations: string[], + changeSpecialization: (specialization: string) => void + szint: number +}) { + const { + specialization, + existingSpecializations, + changeSpecialization, + szint + } = props + const hasError = existingSpecializations.filter(x => x === specialization).length > (szint < 9 ? 1 : 2) return <>
changeSpecialization(e.target.value)}/> - {hasError && Már választottad ezt a specializaciót!} + {hasError && Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!}
} diff --git a/src/components/KalozKritikus.tsx b/src/components/KalozKritikus.tsx new file mode 100644 index 0000000..1fa2352 --- /dev/null +++ b/src/components/KalozKritikus.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +function KalozKritikus(props: { + krit: string, + existingKrits: string[], + changeKrit: (specialization: string) => void, + szint: number +}) { + const { + krit, + existingKrits, + changeKrit, + szint + } = props + const hasError = existingKrits.filter(x => x === krit).length > (szint < 9 ? 1 : 2) + return <> +
+ + changeKrit(e.target.value)}/> + {hasError && Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!} +
+ +} + +export default KalozKritikus \ No newline at end of file diff --git a/src/components/LevelUps.tsx b/src/components/LevelUps.tsx index 2fb38b4..d1cdb32 100644 --- a/src/components/LevelUps.tsx +++ b/src/components/LevelUps.tsx @@ -6,14 +6,30 @@ import {Tulajdonsag, TulajdonsagokTotal} from "../domain-models/tulajdonsag"; import {arraySetN} from "../util"; import {Osztaly} from "../domain-models/osztaly"; import HarcosFegyverSpecializacio from "./HarcosFegyverSpecializacio"; +import KalozKritikus from "./KalozKritikus"; -function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdonsagNoveles: (t: Tulajdonsag) => void, changeRolledHP: (rolledHP: number) => void, changeHarcosSpec: (spec: string) => void}) { - const {szint, karakter, changeTulajdonsagNoveles, changeRolledHP, changeHarcosSpec} = props +function LevelUp(props: { + szint: number, + karakter: KarakterInputs, + changeTulajdonsagNoveles: (t: Tulajdonsag) => void, + changeRolledHP: (rolledHP: number) => void, + changeHarcosSpec: (spec: string) => void, + changeKalozKritikus: (krit: string) => void, +}) { + const { + szint, + karakter, + changeTulajdonsagNoveles, + changeRolledHP, + changeHarcosSpec, + changeKalozKritikus, + } = props const specializationIndex = Math.floor((szint-1) / 2) console.log('Specialization index: ' + specializationIndex.toString()) const specialization = karakter.harcosSpecializaciok[specializationIndex] console.log(specialization) + const krit = karakter.kalozKritikus[Math.floor(szint/3)] return
@@ -31,7 +47,21 @@ function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdon changeRolledHP={changeRolledHP} /> {karakter.osztaly === Osztaly.Harcos && szint % 2 === 1 && - } + + } + {karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0 && + + }
} @@ -50,6 +80,10 @@ export function LevelUps(props: {karakter: KarakterInputs, changeKarakter: (inpu changeKarakter({...karakter, harcosSpecializaciok: arraySetN(karakter.harcosSpecializaciok, Math.floor((szint-1) / 2), spec)}) } + const changeKalozKritikusAtSzint = (szint: number) => (spec: string) => { + changeKarakter({...karakter, kalozKritikus: arraySetN(karakter.kalozKritikus, Math.floor(szint / 3), spec)}) + } + return <> {karakter.hpRolls.map((_, i) => i+2).map(szint => <> )} diff --git a/src/domain-models/karakter.ts b/src/domain-models/karakter.ts index 1c51d47..8eb7186 100644 --- a/src/domain-models/karakter.ts +++ b/src/domain-models/karakter.ts @@ -28,11 +28,11 @@ export const KarakterDefaults: KarakterInputs = { kor: 20, jellem: 'S', tulajdonsagok: TulajdonsagDefaults, - osztaly: Osztaly.Harcos, + osztaly: Osztaly.Kaloz, kepzettsegek: [], szint: 1, hpRolls: [], tulajdonsagNovelesek: [], - harcosSpecializaciok: ['szablya'], - kalozKritikus: [], + harcosSpecializaciok: [], + kalozKritikus: ['szablya'], } diff --git a/src/domain-models/level.ts b/src/domain-models/level.ts index 4689c93..6327158 100644 --- a/src/domain-models/level.ts +++ b/src/domain-models/level.ts @@ -24,9 +24,13 @@ export function LevelUp(karakter: KarakterInputs, changeKarakter: (input: Karakt } let harcosSpecializaciok = karakter.harcosSpecializaciok if(karakter.osztaly === Osztaly.Harcos && szint % 2 === 1) { - harcosSpecializaciok = [...harcosSpecializaciok, "szablya"] + harcosSpecializaciok = [...harcosSpecializaciok, "Csatabárd"] } - changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok}) + let kalozKritikus = karakter.kalozKritikus + if(karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0) { + kalozKritikus = [...kalozKritikus, "Szablya"] + } + changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok, kalozKritikus}) } export function LevelDown(karakter: KarakterInputs, changeKarakter: (input: KarakterInputs) => void) { diff --git a/src/pages/CreateCharacter.tsx b/src/pages/CreateCharacter.tsx index 3c1a228..6a827a7 100644 --- a/src/pages/CreateCharacter.tsx +++ b/src/pages/CreateCharacter.tsx @@ -97,7 +97,13 @@ function CreateCharacterPage() { changeKarakter({...karakter, osztaly: o, harcosSpecializaciok: o === Osztaly.Harcos ? ['szablya'] : []})} + changeOsztaly={(o: Osztaly) => + changeKarakter({ + ...karakter, + osztaly: o, + harcosSpecializaciok: o === Osztaly.Harcos ? ['kard'] : [], + kalozKritikus: o === Osztaly.Kaloz ? ['szablya'] : [], + })} /> {karakter.osztaly === Osztaly.Harcos &&
@@ -105,6 +111,7 @@ function CreateCharacterPage() { specialization={karakter.harcosSpecializaciok[0]} existingSpecializations={karakter.harcosSpecializaciok} changeSpecialization={(spec: string) => changeKarakter({...karakter, harcosSpecializaciok: [spec, ...karakter.harcosSpecializaciok.slice(1)]})} + szint={1} />
}