From 5008629d877a3adf904af04d41e9dd4e2589a61e Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Sun, 24 Sep 2023 09:04:12 +0200 Subject: [PATCH] bugfix: effective faji tulajdonsag modositok --- src/components/BasicNewLevel.tsx | 4 ++-- src/domain-models/karakter.ts | 8 +++++--- src/domain-models/masodlagos_ertekek.ts | 6 +++--- src/domain-models/tulajdonsag.ts | 22 ++++++++++++++++++++-- src/pages/CreateCharacter.tsx | 22 +++++++++++----------- src/pdf/karakter_pdf_view.ts | 6 ++++-- 6 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/components/BasicNewLevel.tsx b/src/components/BasicNewLevel.tsx index 93b3916..49cdf47 100644 --- a/src/components/BasicNewLevel.tsx +++ b/src/components/BasicNewLevel.tsx @@ -57,7 +57,7 @@ function BasicNewLevel(props: { className='form-control' maxLength={2} type='number' - value={karakter.HProlls[szint-2] || 1} + value={karakter.hpRolls[szint-2] || 1} min={1} max={12} onChange={e => changeRolledHP(Number(e.target.value))} /> @@ -74,7 +74,7 @@ function BasicNewLevel(props: {
- {HP({...karakter, HProlls: karakter.HProlls.slice(0, szint-1)})} + {HP({...karakter, hpRolls: karakter.hpRolls.slice(0, szint-1)})}
{isTBincreased &&
diff --git a/src/domain-models/karakter.ts b/src/domain-models/karakter.ts index db0fa93..92f20e2 100644 --- a/src/domain-models/karakter.ts +++ b/src/domain-models/karakter.ts @@ -1,6 +1,6 @@ import {Faj} from "./faj"; import {Osztaly} from "./osztaly"; -import {KarakterTulajdonsagok, TulajdonsagDefaults} from "./tulajdonsag"; +import {KarakterTulajdonsagok, Tulajdonsag, TulajdonsagDefaults} from "./tulajdonsag"; import {KepzettsegId} from "./kepzettsegek"; export interface KarakterInputs { @@ -14,7 +14,8 @@ export interface KarakterInputs { kepzettsegek: KepzettsegId[], tolvajKepzettsegek?: KepzettsegId[] szint: number - HProlls: number[], + hpRolls: number[], + tulajdonsagNovekedes: Tulajdonsag[], } export const KarakterDefaults: KarakterInputs = { @@ -25,6 +26,7 @@ export const KarakterDefaults: KarakterInputs = { osztaly: Osztaly.Harcos, kepzettsegek: [], szint: 1, - HProlls: [], + hpRolls: [], + tulajdonsagNovekedes: [] } diff --git a/src/domain-models/masodlagos_ertekek.ts b/src/domain-models/masodlagos_ertekek.ts index 9172222..1ea130e 100644 --- a/src/domain-models/masodlagos_ertekek.ts +++ b/src/domain-models/masodlagos_ertekek.ts @@ -12,7 +12,7 @@ export interface MasodlagosErtekekView { Mentok: Mentok } -export type KarakterpickForMasodlagosErtekek = Pick +export type KarakterpickForMasodlagosErtekek = Pick export function BaseHP(osztaly: Osztaly) { let base = 4; @@ -40,9 +40,9 @@ export function BaseHP(osztaly: Osztaly) { return base } -export function HP(karakter: Pick): number { +export function HP(karakter: Pick): number { const egeszsegModifier = Modifier(karakter.tulajdonsagok.t_egs) - return BaseHP(karakter.osztaly) + egeszsegModifier + karakter.HProlls + return BaseHP(karakter.osztaly) + egeszsegModifier + karakter.hpRolls // https://lfg.hu/forum/topic/15079-kard-es-magia/page/219/#comment-2218333 .map(hp => Math.max(1, hp + egeszsegModifier)) .reduce((sum, val) => sum + val, 0) diff --git a/src/domain-models/tulajdonsag.ts b/src/domain-models/tulajdonsag.ts index 691b91f..1ca0123 100644 --- a/src/domain-models/tulajdonsag.ts +++ b/src/domain-models/tulajdonsag.ts @@ -131,6 +131,24 @@ export function TulajdonsagModositokFajokra(tul: Tulajdonsag) { return (faj: Faj) => tulajdonsagModositokPerFaj(tul, faj); } -export function FajiTulajdonsagModositok(faj: Faj) { - return (tul: Tulajdonsag) => tulajdonsagModositokPerFaj(tul, faj) +export function FajiTulajdonsagModositok(faj: Faj) : KarakterTulajdonsagok { + return { + [Tulajdonsag.Ero]: tulajdonsagModositokPerFaj(Tulajdonsag.Ero, faj), + [Tulajdonsag.Ugyesseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Ugyesseg, faj), + [Tulajdonsag.Egeszseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Egeszseg, faj), + [Tulajdonsag.Intelligencia]: tulajdonsagModositokPerFaj(Tulajdonsag.Intelligencia, faj), + [Tulajdonsag.Bolcsesseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Bolcsesseg, faj), + [Tulajdonsag.Karizma]: tulajdonsagModositokPerFaj(Tulajdonsag.Karizma, faj), + } +} + +export function TulajdonsagokFajjal(tulajdonsagok: KarakterTulajdonsagok, faj: Faj): KarakterTulajdonsagok { + return { + [Tulajdonsag.Ero]: tulajdonsagok.t_ero + tulajdonsagModositokPerFaj(Tulajdonsag.Ero, faj), + [Tulajdonsag.Ugyesseg]: tulajdonsagok.t_ugy + tulajdonsagModositokPerFaj(Tulajdonsag.Ugyesseg, faj), + [Tulajdonsag.Egeszseg]: tulajdonsagok.t_egs + tulajdonsagModositokPerFaj(Tulajdonsag.Egeszseg, faj), + [Tulajdonsag.Intelligencia]: tulajdonsagok.t_int + tulajdonsagModositokPerFaj(Tulajdonsag.Intelligencia, faj), + [Tulajdonsag.Bolcsesseg]: tulajdonsagok.t_bol + tulajdonsagModositokPerFaj(Tulajdonsag.Bolcsesseg, faj), + [Tulajdonsag.Karizma]: tulajdonsagok.t_kar + tulajdonsagModositokPerFaj(Tulajdonsag.Karizma, faj), + } } \ No newline at end of file diff --git a/src/pages/CreateCharacter.tsx b/src/pages/CreateCharacter.tsx index 8568364..495851a 100644 --- a/src/pages/CreateCharacter.tsx +++ b/src/pages/CreateCharacter.tsx @@ -6,7 +6,7 @@ import FajSelector from "../components/FajSelector"; import Tulajdonsagok from "../components/Tulajdonsagok"; import OsztalySelector from "../components/OsztalySelector"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek"; -import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag"; +import {KarakterTulajdonsagok, TulajdonsagokFajjal} from "../domain-models/tulajdonsag"; import MasodlagosErtekek from "../components/MasodlagosErtekek"; import { AvailableKezpettsegList, @@ -25,12 +25,12 @@ function CreateCharacterPage() { let [karakter, changeKarakter] = useState(KarakterDefaults) + const tulajdonsagokTotal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj) + const changeKepzettseg = (k: KepzettsegId[]) => changeKarakter({...karakter, kepzettsegek: k}) const changeTolvajKepzettseg = (tk?: KepzettsegId[]) => changeKarakter({...karakter, tolvajKepzettsegek: tk}) - SetDefaultTolvajKepzettsegek(karakter, changeTolvajKepzettseg) - SetDefaultKepzettsegek(karakter, changeKepzettseg) - + SetDefaultKepzettsegek({...karakter, tulajdonsagok: tulajdonsagokTotal}, changeKepzettseg) const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly) function levelUp() { @@ -38,15 +38,15 @@ function CreateCharacterPage() { const dice = BaseHP(karakter.osztaly) const roll = dAny(dice) console.log(`Level ${szint} HP roll on d${dice} is: ${roll}`) - changeKarakter({...karakter, szint: szint, HProlls: [...karakter.HProlls, roll]}) + changeKarakter({...karakter, szint: szint, hpRolls: [...karakter.hpRolls, roll]}) } function levelDown() { - changeKarakter({...karakter, szint: karakter.szint - 1, HProlls: karakter.HProlls.slice(0, -1)}) + changeKarakter({...karakter, szint: karakter.szint - 1, hpRolls: karakter.hpRolls.slice(0, -1)}) } const changeHProllAtSzint = (szint: number) => (newHProll: number) => { - changeKarakter({...karakter, HProlls: arraySetN(karakter.HProlls, szint-2, newHProll)}) + changeKarakter({...karakter, hpRolls: arraySetN(karakter.hpRolls, szint-2, newHProll)}) console.log(karakter) } @@ -107,7 +107,7 @@ function CreateCharacterPage() { />
- + - {karakter.HProlls.map((_, i) => ( - ) + {karakter.hpRolls.map((_, i) => i+2).map(szint => ( + ) )}
diff --git a/src/pdf/karakter_pdf_view.ts b/src/pdf/karakter_pdf_view.ts index 37ae7a7..e03d04a 100644 --- a/src/pdf/karakter_pdf_view.ts +++ b/src/pdf/karakter_pdf_view.ts @@ -1,4 +1,4 @@ -import {KarakterTulajdonsagok, TulajdonsagModosito} from "../domain-models/tulajdonsag"; +import {KarakterTulajdonsagok, TulajdonsagModosito, TulajdonsagokFajjal} from "../domain-models/tulajdonsag"; import {Mentok, MentokAlap, MentoModositok} from "../domain-models/mentok"; import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek"; import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek"; @@ -31,8 +31,10 @@ export interface KarakterPdfView { } export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfView { + const tulajdonsagok = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj) + karakter = {...karakter, tulajdonsagok} + const tulajdonsagModositok = TulajdonsagModosito(tulajdonsagok) const masodlagosErtekek = CalculateMasodlagosErtekek(karakter) - const tulajdonsagModositok = TulajdonsagModosito(karakter.tulajdonsagok) const mozgas = karakter.faj === Faj.Torpe ? 20 : 30 const kezdemenyezes = tulajdonsagModositok.t_ugy + (karakter.osztaly === Osztaly.Tolvaj ? 4 : 0)