From a7c692c0ba3436ef016dbccf27f04acd8cf59c5c Mon Sep 17 00:00:00 2001 From: morbalint Date: Fri, 17 May 2024 19:56:51 +0200 Subject: [PATCH] refactor kepzettsegek files --- .../components/KarakterKepzettsegek2E.tsx | 4 +- .../second-edition/components/LevelUps.tsx | 3 +- .../KepzettsegSelector2E.tsx | 2 +- .../domain-models/characterSlice.ts | 4 +- .../domain-models/karakter2E.ts | 2 +- .../domain-models/kepzettsegek2E.data.ts | 208 +++++++++++++++++ .../domain-models/kepzettsegek2E.test.ts | 3 +- .../domain-models/kepzettsegek2E.ts | 215 +----------------- .../domain-models/szintlepes.ts | 3 +- .../second-edition/pdf/karakter_pdf_view.ts | 6 +- 10 files changed, 231 insertions(+), 219 deletions(-) create mode 100644 frontend/src/second-edition/domain-models/kepzettsegek2E.data.ts diff --git a/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx b/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx index 8bd1347..2dfea75 100644 --- a/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx +++ b/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx @@ -3,10 +3,12 @@ import KepzettsegSelector from "../display-components/KepzettsegSelector2E"; import { GetKepzettsegListaN, GetNumberOfKepzettsegek, GetTolvajKepzettsegListaN, +} from "../domain-models/kepzettsegek2E"; +import { Kepzettseg, Kepzettsegek, KepzettsegId, -} from "../domain-models/kepzettsegek2E"; +} from "../domain-models/kepzettsegek2E.data" import {arraySetN} from "../../util"; import {useDispatch, useSelector} from "react-redux"; import {AppDispatch, RootState} from "../../store"; diff --git a/frontend/src/second-edition/components/LevelUps.tsx b/frontend/src/second-edition/components/LevelUps.tsx index 531359f..4370c75 100644 --- a/frontend/src/second-edition/components/LevelUps.tsx +++ b/frontend/src/second-edition/components/LevelUps.tsx @@ -11,7 +11,8 @@ import HarcosFegyverSpecializacio from "./HarcosFegyverSpec"; import MultiClassOsztalySelector2E from "./MultiClassOsztalySelector2E"; import {getClassLevels} from "../domain-models/szintlepes"; import KepzettsegSelector from "../display-components/KepzettsegSelector2E"; -import {GetAvailableKepzettsegek, Kepzettsegek, KepzettsegId} from "../domain-models/kepzettsegek2E"; +import {GetAvailableKepzettsegek} from "../domain-models/kepzettsegek2E"; +import { Kepzettsegek, KepzettsegId } from "../domain-models/kepzettsegek2E.data" function LevelUp(props: { szint: number, diff --git a/frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx b/frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx index 72f13df..fc021f9 100644 --- a/frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx +++ b/frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx @@ -1,5 +1,5 @@ import React from "react"; -import {Kepzettseg, KepzettsegId} from "../domain-models/kepzettsegek2E"; +import {Kepzettseg, KepzettsegId} from "../domain-models/kepzettsegek2E.data"; import {TulajdonsagLabel} from "../domain-models/tulajdonsag2E"; import {OsztalyLabel} from "../domain-models/osztaly2E"; diff --git a/frontend/src/second-edition/domain-models/characterSlice.ts b/frontend/src/second-edition/domain-models/characterSlice.ts index 42e9310..e98aea1 100644 --- a/frontend/src/second-edition/domain-models/characterSlice.ts +++ b/frontend/src/second-edition/domain-models/characterSlice.ts @@ -7,9 +7,11 @@ import {Osztaly2E} from "./osztaly2E"; import {arraySetN} from "../../util"; import { AdjustKepzettsegek, - KepzettsegId, SetDefaultTolvajKepzettsegek } from "./kepzettsegek2E"; +import { + KepzettsegId, +} from "./kepzettsegek2E.data" import {BaseHP} from "./masodlagos_ertekek"; import {KarakterFelszereles} from "./felszereles"; diff --git a/frontend/src/second-edition/domain-models/karakter2E.ts b/frontend/src/second-edition/domain-models/karakter2E.ts index 168a35e..90e49cb 100644 --- a/frontend/src/second-edition/domain-models/karakter2E.ts +++ b/frontend/src/second-edition/domain-models/karakter2E.ts @@ -1,7 +1,7 @@ import {KarakterTulajdonsagok, TulajdonsagDefaults} from "./tulajdonsag2E"; import {Faj2E} from "./faj2E"; import {Osztaly2E} from "./osztaly2E"; -import {KepzettsegId} from "./kepzettsegek2E"; +import {KepzettsegId} from "./kepzettsegek2E.data"; import {JellemID} from "./jellem"; import {DefaultFelszereles, KarakterFelszereles} from "./felszereles"; import {Szintlepes} from "./szintlepes"; diff --git a/frontend/src/second-edition/domain-models/kepzettsegek2E.data.ts b/frontend/src/second-edition/domain-models/kepzettsegek2E.data.ts new file mode 100644 index 0000000..0df2407 --- /dev/null +++ b/frontend/src/second-edition/domain-models/kepzettsegek2E.data.ts @@ -0,0 +1,208 @@ +import {Tulajdonsag2E} from "./tulajdonsag2E"; +import {Osztaly2E} from "./osztaly2E"; + +export type KepzettsegId = 'k_alkimia' | 'k_alcazas' | 'k_allatidomitas' | 'k_csapdak' | 'k_csillagjoslas' | 'k_egyensulyozas' | 'k_eloadas' | 'k_ertekbecsles' | 'k_gyogyitas' | 'k_hajozas' | 'k_hallgatozas' | 'k_hamisitas' | 'k_herbalizmus' | 'k_historia' | 'k_jelek_olvasasa' | 'k_lovaglas' | 'k_maszas' | 'k_megfigyeles' | 'k_meregkeveres' | 'k_mesterseg' | 'k_nyomkereses' | 'k_okkultizmus' | 'k_osonas' | 'k_szabadulomuveszet' | 'k_ugras' | 'k_uszas' | 'k_vadonjaras' | 'k_zarnyitas' | 'k_zsebmetszes' + +export interface Kepzettseg { + Id: KepzettsegId, + Name: string, + Description: string, + Tulajdonsag: Tulajdonsag2E[], + Osztalyok?: Osztaly2E[], +} + +export const KepzettsegLista: Kepzettseg[] = [ + { + Id: 'k_alkimia', + Name: 'Alkímia', + Description: 'Különféle különleges anyagok, pl. savak, görögtűz,és különböző varázskomponensek kikeverésére szolgál. Használatához gyakran jól felszerelt laboratórium szükséges. A képzettséggel a karakter képes beazonosítani a különféle vegyi anyagokat és mérgeket, Nehéz próbával a varázsitalokat is', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] + }, + { + Id: 'k_alcazas', + Name: 'Álcázás', + Description: 'Álöltözetek készítése és használata. Próbadobást akkor kell dobni, ha az álca hitelességét valaki kétségbe vonhatja (általában ellenpróbaként; az eredményt gyakran csak a mesélő ismerheti)', + Tulajdonsag: [Tulajdonsag2E.Karizma], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_allatidomitas', + Name: 'Állatidomítás', + Description: 'Állatok megszelídítésére és betanítására szolgál. A járatos karakter próbát tehet arra is, hogy a különféle vadállatok ne tekintsék ellenségüknek vagy prédájuknak', + Tulajdonsag: [Tulajdonsag2E.Karizma], + }, + { + Id: 'k_csapdak', + Name: 'Csapdák', + Description: 'A karakter a rendelkezésre álló idő és alapanyagok függvényében szimpla vagy komplex csapdákat készíthet. A képzettség arra is jó, hogy hatástalanítsa, tönkretegye, vagy elkerülje ezeket a szerkezeteket. Ha egy csapda eltávolítására tett próba sikertelen, az kisülhet és veszélybe sodorhatja az óvatlan próbálkozót.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_csillagjoslas', + Name: 'Csillagjóslás', + Description: 'A karakter a képzettséggel egyrészt képes meghatározni a csapat hozzávetőleges pozícióját a térképen (hexek vagy tájegység szerint), másrészt egyszerűbb jóslatokat készíthet. A jóslat sikertelen próbánál értelmezhetetlen, Közepes nehézségnél homályos, Nehéz próbánál többértelmű, Hősies próbánál pedig világos és jól értelmezhető. Egyetlen jóslat sem tárja fel a pontos jövőt, csak segítséget vagy jelet ad annak értelmezéséhez. A képzettséget csak tiszta, csillagos égbolt alatt vagy ritka asztrológiai térképek birtokában lehet használni (ezek ára 2000 at vagy több, és így is -2 jár a próbára).', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] + }, + { + Id: 'k_egyensulyozas', + Name: 'Egyensúlyozás', + Description: 'Omlatag talajon, kötélen vagy keskeny párkányon való átjutáshoz szükséges képzettség. Ha a próba sikertelen, a karakter lezuhan.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_eloadas', + Name: 'Előadás', + Description: 'A képzettséggel rendelkező karakter járatos a hangszerek használatában, éneklésben, eposzmondásban, stb.', + Tulajdonsag: [Tulajdonsag2E.Karizma], + }, + { + Id: 'k_ertekbecsles', + Name: 'Értékbecslés', + Description: 'Sikeres próba esetén a karakter hozzávetőlegesen felméri egy tárgy pénzbeli értékét, és Nehéz vagy jobb próbán kiszúrja a hamisítványokat.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + }, + { + Id: 'k_gyogyitas', + Name: 'Gyógyítás', + Description: 'A sebek bekötözésének, mérgek és betegségek semlegesítésének vagy enyhítésének tudománya. Harc vagy más sérülés után alkalmazva a bekötözött karakter siker esetén visszanyer 1d4 elvesztett Hp-t, Nehéz próba megdobása esetén 1d4+2-t, Hősies esetén pedig 1d4+4-et. 1-es dobáson 1d4 pontot veszít. A képzettség hatékony alkalmazásához egy adag gyógyfű vagy egy orvosló készlet szükséges; nélkülük legfeljebb 1d4 Hp adható vissza.', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_hajozas', + Name: 'Hajózás', + Description: 'A karakter ismeri a hajózás fogásait, tehát elkormányoz kisebb vitorlásokat vagy gályákat, tudja hogyan kell elkerülni a zátonyokat és épen kikerülni egy viharból, képes javításokat végezni stb.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + }, + { + Id: 'k_hallgatozas', + Name: 'Hallgatózás', + Description: 'Nehezen hallható zajok, beszéd meghallása és kihallgatása.', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_hamisitas', + Name: 'Hamisítás', + Description: 'A képzettséggel néhány óra vagy nap munkájával hamis pénz, iratok, pecsétek és értéktárgyak készíthetők. Ellenpróbát akkor kell dobni, ha a hamisítvány hitelességét valaki kétségbe vonná.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_herbalizmus', + Name: 'Herbalizmus', + Description: 'A képzettség sikeres alkalmazásával (Közepes, Nehéz és Hősies eredménnyel) 1d3 / 1d3+1 / 1d3+2 adag, a Gyógyítás vagy Méregkeverés képzettséghez hasznos fű gyűjthető össze, az utóbbinál -2, terméketlen vidékeken -3 módosítóval. Utazás közben naponta egy, táborozva két próba dobható.', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_historia', + Name: 'História', + Description: 'A karakter ismeri a történetírók munkáit vagy a szóhagyományt. Az ismeretek mértékét és pontosságát a képzettségpróba eredménye mutatja. Természetesen gyakran vannak olyan helyezetek, amikor a képzettség nem ad használható ismeretet.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + }, + { + Id: 'k_jelek_olvasasa', + Name: 'Jelek Olvasása', + Description: 'A képzettséggel a karakter el tud olvasni más nyelven írt írásokat és feliratokat.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor, Osztaly2E.Tolvaj] + }, + { + Id: 'k_lovaglas', + Name: 'Lovaglás', + Description: 'A karakter kiemelkedően jól ért a lovagláshoz; harcban és nehéz helyzetekben is csodákra képes sarkallni hátasát.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + }, + { + Id: 'k_maszas', + Name: 'Mászás', + Description: 'A képzettség olyan falakra való felmászásra alkalmas, ami egy átlagembernek komol gondot jelentene. Sikertelen próba esetén a karakter lezuhan, vagy a feladat meghaladja a képességeit.', + Tulajdonsag: [Tulajdonsag2E.Ero], + }, + { + Id: 'k_megfigyeles', + Name: 'Megfigyelés', + Description: 'A karakter észreveszi a szabad szemmel látható veszélyforrásokat, a rá leselkedő támadókat, és a csak az avatott megfigyelő számára látható részleteket. (A szobák átkutatásához vagy pl. titkosajtók megtalálásához azonban nem szükséges ez a képzettség.)', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_meregkeveres', + Name: 'Méregkeverés', + Description: 'A megfelelő eszközök és alapanyagok birtokában különféle mérgek készíthetők. Sikertelen próbadobás esetén a keverék hatástalan, és a méregkeverő 1:6 eséllyel veszélybe sodorja önmagát.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_mesterseg', + Name: 'Mesterség', + Description: 'A karakter járatos egy kiválasztott mesterségben – pl. kovácsolás, adószedés vagy építészet. A kézügyességet igénylő mesterségekhez Ügyesség, a szellemi foglalkozásokhoz Intelligencia szükséges.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia, Tulajdonsag2E.Ugyesseg], + }, + { + Id: 'k_nyomkereses', + Name: 'Nyomkeresés', + Description: 'A karakter képes a nyomok követésére és hozzávetőleges azonosítására, vagyis megtudhatja, milyen régiek, miféle szerzet hagyta őket, milyen gyorsan haladt a nyomokat hagyó stb.', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_okkultizmus', + Name: 'Okkultizmus', + Description: 'A képzettség a mágikus tanok elméleti és gyakorlati ismeretét jelenti. Számos hasznán belül a karakter Közepes próbával azonosíthatja az elmondás alatt álló varázslatokat, Nehéz próbával pedig a mágikus effektusokat és csapdákat.', + Tulajdonsag: [Tulajdonsag2E.Intelligencia], + Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] + }, + { + Id: 'k_osonas', + Name: 'Osonás', + Description: 'Csöndes és gyors mozgást tesz lehetővé, s azt, hogy a karakter elrejtőzzön a figyelmes tekintetek elől – nagy szakértelemmel akár sötét sarkokban vagy árnyékokban is. Nehéz próba megdobásával az aktívan nem figyelő ellenfelek nem is dobhatnak ellenpróbát a felfedésére, Hősies próba esetén a karakter gyakorlatilag „mintha ott sem lenne”.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + }, + { + Id: 'k_szabadulomuveszet', + Name: 'Szabadulóművészet', + Description: 'A karakter képes kiszabadulni kötelékeiből és láncaiból, és ami még fontosabb, ellenségei gyűrűjéből (lásd harcrendszer).', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_ugras', + Name: 'Ugrás', + Description: 'A karakter képes átugrani szélesebb vagy magasabb akadályokat is, és tompíthatja az esésből származó sebesüléseket (sikeres próbával egy kocka, Nehéz próbával kettő, Hősiessel három). Ha a próba sikertelen, a karakter lezuhan.', + Tulajdonsag: [Tulajdonsag2E.Ero], + }, + { + Id: 'k_uszas', + Name: 'Úszás', + Description: 'A karakter jól tud úszni, akár nehéz körülmények között (zajló vízben, megterhelten stb.) is képes a felszínen maradni.', + Tulajdonsag: [Tulajdonsag2E.Ero], + }, + { + Id: 'k_vadonjaras', + Name: 'Vadonjárás', + Description: 'A képzettség segít a vadonbeli megélhetésben, tájékozódásban és túlélésben. Sikeres képzettségpróbával (Közepes, Nehéz és Hősies nehézség megdobása esetén) 1d3 / 1d3+2 / 1d3+4 adag élelmet eredményez, terméketlen vidékeken az utóbbi dobásra -3 módosítóval. Utazás közben naponta egy, táborozva két próba dobható. A képzettség segít abban is, hogy a csapat ne tévedjen el a sűrű erdőkben, kietlen sivatagokban vagy zegzugos szurdokvölgyekben. Végül a képzettségpróba sikere befolyásolja, hogy milyen táborhelyet sikerül találni a vadonban: ha a mesélő máshogy nem határoz, sikeres próbával kettőre, Nehéz próbával egyre csökkenti, Hősies próbával teljesen elkerüli az éjszakai találkozási esélyeket.', + Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], + }, + { + Id: 'k_zarnyitas', + Name: 'Zárnyitás', + Description: 'Tolvajszerszámok segítségével a karakter felnyithatja a különféle mechanikus zárakat. Sikertelen próba esetén nem képes az adott zár felnyitására – egészen addig, amíg új tapasztalatokat nem szerez (vagyis a következő szintlépéséig).', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + Osztalyok: [Osztaly2E.Tolvaj], + }, + { + Id: 'k_zsebmetszes', + Name: 'Zsebmetszés', + Description: 'Őrizetlenül hagyott vagy övön, zsebben található kisebb tárgyak észrevétlen eltulajdonítása. Ha a próba sikertelen, a karaktert észreveszik vagy legalábbis gyanút kelt. Másféle, kézügyességet igénylő fogásokra is alkalmas.', + Tulajdonsag: [Tulajdonsag2E.Ugyesseg], + Osztalyok: [Osztaly2E.Tolvaj], + }, +] + +export const TolvajKepzettsegList = KepzettsegLista.filter(x => x.Osztalyok?.includes(Osztaly2E.Tolvaj)) + +export const Kepzettsegek: Record = + KepzettsegLista.reduce( + (acc: Record, k) => { acc[k.Id] = k; return acc; }, + {} as Record); diff --git a/frontend/src/second-edition/domain-models/kepzettsegek2E.test.ts b/frontend/src/second-edition/domain-models/kepzettsegek2E.test.ts index 1519d0c..30471b6 100644 --- a/frontend/src/second-edition/domain-models/kepzettsegek2E.test.ts +++ b/frontend/src/second-edition/domain-models/kepzettsegek2E.test.ts @@ -1,4 +1,5 @@ -import {GetAvailableKepzettsegek, GetNumberOfKepzettsegek, Kepzettsegek, KepzettsegLista} from "./kepzettsegek2E"; +import {GetAvailableKepzettsegek, GetNumberOfKepzettsegek} from "./kepzettsegek2E"; +import { Kepzettsegek, KepzettsegLista } from './kepzettsegek2E.data' import {Faj2E} from "./faj2E"; import {DefaultKarakter} from "./karakter2E"; import {Osztaly2E} from "./osztaly2E"; diff --git a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts index 31b7ce5..d936cf6 100644 --- a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts +++ b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts @@ -1,213 +1,8 @@ import {Osztaly2E} from "./osztaly2E"; import {Faj2E} from "./faj2E"; import {Karakter2E} from "./karakter2E"; -import {Modifier, Tulajdonsag2E, TulajdonsagokTotal} from "./tulajdonsag2E"; - -export type KepzettsegId = 'k_alkimia' | 'k_alcazas' | 'k_allatidomitas' | 'k_csapdak' | 'k_csillagjoslas' | 'k_egyensulyozas' | 'k_eloadas' | 'k_ertekbecsles' | 'k_gyogyitas' | 'k_hajozas' | 'k_hallgatozas' | 'k_hamisitas' | 'k_herbalizmus' | 'k_historia' | 'k_jelek_olvasasa' | 'k_lovaglas' | 'k_maszas' | 'k_megfigyeles' | 'k_meregkeveres' | 'k_mesterseg' | 'k_nyomkereses' | 'k_okkultizmus' | 'k_osonas' | 'k_szabadulomuveszet' | 'k_ugras' | 'k_uszas' | 'k_vadonjaras' | 'k_zarnyitas' | 'k_zsebmetszes' - -export interface Kepzettseg { - Id: KepzettsegId, - Name: string, - Description: string, - Tulajdonsag: Tulajdonsag2E[], - Osztalyok?: Osztaly2E[], -} - -export const KepzettsegLista: Kepzettseg[] = [ - { - Id: 'k_alkimia', - Name: 'Alkímia', - Description: 'Különféle különleges anyagok, pl. savak, görögtűz,és különböző varázskomponensek kikeverésére szolgál. Használatához gyakran jól felszerelt laboratórium szükséges. A képzettséggel a karakter képes beazonosítani a különféle vegyi anyagokat és mérgeket, Nehéz próbával a varázsitalokat is', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] - }, - { - Id: 'k_alcazas', - Name: 'Álcázás', - Description: 'Álöltözetek készítése és használata. Próbadobást akkor kell dobni, ha az álca hitelességét valaki kétségbe vonhatja (általában ellenpróbaként; az eredményt gyakran csak a mesélő ismerheti)', - Tulajdonsag: [Tulajdonsag2E.Karizma], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_allatidomitas', - Name: 'Állatidomítás', - Description: 'Állatok megszelídítésére és betanítására szolgál. A járatos karakter próbát tehet arra is, hogy a különféle vadállatok ne tekintsék ellenségüknek vagy prédájuknak', - Tulajdonsag: [Tulajdonsag2E.Karizma], - }, - { - Id: 'k_csapdak', - Name: 'Csapdák', - Description: 'A karakter a rendelkezésre álló idő és alapanyagok függvényében szimpla vagy komplex csapdákat készíthet. A képzettség arra is jó, hogy hatástalanítsa, tönkretegye, vagy elkerülje ezeket a szerkezeteket. Ha egy csapda eltávolítására tett próba sikertelen, az kisülhet és veszélybe sodorhatja az óvatlan próbálkozót.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_csillagjoslas', - Name: 'Csillagjóslás', - Description: 'A karakter a képzettséggel egyrészt képes meghatározni a csapat hozzávetőleges pozícióját a térképen (hexek vagy tájegység szerint), másrészt egyszerűbb jóslatokat készíthet. A jóslat sikertelen próbánál értelmezhetetlen, Közepes nehézségnél homályos, Nehéz próbánál többértelmű, Hősies próbánál pedig világos és jól értelmezhető. Egyetlen jóslat sem tárja fel a pontos jövőt, csak segítséget vagy jelet ad annak értelmezéséhez. A képzettséget csak tiszta, csillagos égbolt alatt vagy ritka asztrológiai térképek birtokában lehet használni (ezek ára 2000 at vagy több, és így is -2 jár a próbára).', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] - }, - { - Id: 'k_egyensulyozas', - Name: 'Egyensúlyozás', - Description: 'Omlatag talajon, kötélen vagy keskeny párkányon való átjutáshoz szükséges képzettség. Ha a próba sikertelen, a karakter lezuhan.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_eloadas', - Name: 'Előadás', - Description: 'A képzettséggel rendelkező karakter járatos a hangszerek használatában, éneklésben, eposzmondásban, stb.', - Tulajdonsag: [Tulajdonsag2E.Karizma], - }, - { - Id: 'k_ertekbecsles', - Name: 'Értékbecslés', - Description: 'Sikeres próba esetén a karakter hozzávetőlegesen felméri egy tárgy pénzbeli értékét, és Nehéz vagy jobb próbán kiszúrja a hamisítványokat.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - }, - { - Id: 'k_gyogyitas', - Name: 'Gyógyítás', - Description: 'A sebek bekötözésének, mérgek és betegségek semlegesítésének vagy enyhítésének tudománya. Harc vagy más sérülés után alkalmazva a bekötözött karakter siker esetén visszanyer 1d4 elvesztett Hp-t, Nehéz próba megdobása esetén 1d4+2-t, Hősies esetén pedig 1d4+4-et. 1-es dobáson 1d4 pontot veszít. A képzettség hatékony alkalmazásához egy adag gyógyfű vagy egy orvosló készlet szükséges; nélkülük legfeljebb 1d4 Hp adható vissza.', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_hajozas', - Name: 'Hajózás', - Description: 'A karakter ismeri a hajózás fogásait, tehát elkormányoz kisebb vitorlásokat vagy gályákat, tudja hogyan kell elkerülni a zátonyokat és épen kikerülni egy viharból, képes javításokat végezni stb.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - }, - { - Id: 'k_hallgatozas', - Name: 'Hallgatózás', - Description: 'Nehezen hallható zajok, beszéd meghallása és kihallgatása.', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_hamisitas', - Name: 'Hamisítás', - Description: 'A képzettséggel néhány óra vagy nap munkájával hamis pénz, iratok, pecsétek és értéktárgyak készíthetők. Ellenpróbát akkor kell dobni, ha a hamisítvány hitelességét valaki kétségbe vonná.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_herbalizmus', - Name: 'Herbalizmus', - Description: 'A képzettség sikeres alkalmazásával (Közepes, Nehéz és Hősies eredménnyel) 1d3 / 1d3+1 / 1d3+2 adag, a Gyógyítás vagy Méregkeverés képzettséghez hasznos fű gyűjthető össze, az utóbbinál -2, terméketlen vidékeken -3 módosítóval. Utazás közben naponta egy, táborozva két próba dobható.', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_historia', - Name: 'História', - Description: 'A karakter ismeri a történetírók munkáit vagy a szóhagyományt. Az ismeretek mértékét és pontosságát a képzettségpróba eredménye mutatja. Természetesen gyakran vannak olyan helyezetek, amikor a képzettség nem ad használható ismeretet.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - }, - { - Id: 'k_jelek_olvasasa', - Name: 'Jelek Olvasása', - Description: 'A képzettséggel a karakter el tud olvasni más nyelven írt írásokat és feliratokat.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor, Osztaly2E.Tolvaj] - }, - { - Id: 'k_lovaglas', - Name: 'Lovaglás', - Description: 'A karakter kiemelkedően jól ért a lovagláshoz; harcban és nehéz helyzetekben is csodákra képes sarkallni hátasát.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - }, - { - Id: 'k_maszas', - Name: 'Mászás', - Description: 'A képzettség olyan falakra való felmászásra alkalmas, ami egy átlagembernek komol gondot jelentene. Sikertelen próba esetén a karakter lezuhan, vagy a feladat meghaladja a képességeit.', - Tulajdonsag: [Tulajdonsag2E.Ero], - }, - { - Id: 'k_megfigyeles', - Name: 'Megfigyelés', - Description: 'A karakter észreveszi a szabad szemmel látható veszélyforrásokat, a rá leselkedő támadókat, és a csak az avatott megfigyelő számára látható részleteket. (A szobák átkutatásához vagy pl. titkosajtók megtalálásához azonban nem szükséges ez a képzettség.)', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_meregkeveres', - Name: 'Méregkeverés', - Description: 'A megfelelő eszközök és alapanyagok birtokában különféle mérgek készíthetők. Sikertelen próbadobás esetén a keverék hatástalan, és a méregkeverő 1:6 eséllyel veszélybe sodorja önmagát.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_mesterseg', - Name: 'Mesterség', - Description: 'A karakter járatos egy kiválasztott mesterségben – pl. kovácsolás, adószedés vagy építészet. A kézügyességet igénylő mesterségekhez Ügyesség, a szellemi foglalkozásokhoz Intelligencia szükséges.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia, Tulajdonsag2E.Ugyesseg], - }, - { - Id: 'k_nyomkereses', - Name: 'Nyomkeresés', - Description: 'A karakter képes a nyomok követésére és hozzávetőleges azonosítására, vagyis megtudhatja, milyen régiek, miféle szerzet hagyta őket, milyen gyorsan haladt a nyomokat hagyó stb.', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_okkultizmus', - Name: 'Okkultizmus', - Description: 'A képzettség a mágikus tanok elméleti és gyakorlati ismeretét jelenti. Számos hasznán belül a karakter Közepes próbával azonosíthatja az elmondás alatt álló varázslatokat, Nehéz próbával pedig a mágikus effektusokat és csapdákat.', - Tulajdonsag: [Tulajdonsag2E.Intelligencia], - Osztalyok: [Osztaly2E.Druida, Osztaly2E.Illuzionista, Osztaly2E.Pap, Osztaly2E.Varazslo, Osztaly2E.Vandor] - }, - { - Id: 'k_osonas', - Name: 'Osonás', - Description: 'Csöndes és gyors mozgást tesz lehetővé, s azt, hogy a karakter elrejtőzzön a figyelmes tekintetek elől – nagy szakértelemmel akár sötét sarkokban vagy árnyékokban is. Nehéz próba megdobásával az aktívan nem figyelő ellenfelek nem is dobhatnak ellenpróbát a felfedésére, Hősies próba esetén a karakter gyakorlatilag „mintha ott sem lenne”.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - }, - { - Id: 'k_szabadulomuveszet', - Name: 'Szabadulóművészet', - Description: 'A karakter képes kiszabadulni kötelékeiből és láncaiból, és ami még fontosabb, ellenségei gyűrűjéből (lásd harcrendszer).', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_ugras', - Name: 'Ugrás', - Description: 'A karakter képes átugrani szélesebb vagy magasabb akadályokat is, és tompíthatja az esésből származó sebesüléseket (sikeres próbával egy kocka, Nehéz próbával kettő, Hősiessel három). Ha a próba sikertelen, a karakter lezuhan.', - Tulajdonsag: [Tulajdonsag2E.Ero], - }, - { - Id: 'k_uszas', - Name: 'Úszás', - Description: 'A karakter jól tud úszni, akár nehéz körülmények között (zajló vízben, megterhelten stb.) is képes a felszínen maradni.', - Tulajdonsag: [Tulajdonsag2E.Ero], - }, - { - Id: 'k_vadonjaras', - Name: 'Vadonjárás', - Description: 'A képzettség segít a vadonbeli megélhetésben, tájékozódásban és túlélésben. Sikeres képzettségpróbával (Közepes, Nehéz és Hősies nehézség megdobása esetén) 1d3 / 1d3+2 / 1d3+4 adag élelmet eredményez, terméketlen vidékeken az utóbbi dobásra -3 módosítóval. Utazás közben naponta egy, táborozva két próba dobható. A képzettség segít abban is, hogy a csapat ne tévedjen el a sűrű erdőkben, kietlen sivatagokban vagy zegzugos szurdokvölgyekben. Végül a képzettségpróba sikere befolyásolja, hogy milyen táborhelyet sikerül találni a vadonban: ha a mesélő máshogy nem határoz, sikeres próbával kettőre, Nehéz próbával egyre csökkenti, Hősies próbával teljesen elkerüli az éjszakai találkozási esélyeket.', - Tulajdonsag: [Tulajdonsag2E.Bolcsesseg], - }, - { - Id: 'k_zarnyitas', - Name: 'Zárnyitás', - Description: 'Tolvajszerszámok segítségével a karakter felnyithatja a különféle mechanikus zárakat. Sikertelen próba esetén nem képes az adott zár felnyitására – egészen addig, amíg új tapasztalatokat nem szerez (vagyis a következő szintlépéséig).', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - Osztalyok: [Osztaly2E.Tolvaj], - }, - { - Id: 'k_zsebmetszes', - Name: 'Zsebmetszés', - Description: 'Őrizetlenül hagyott vagy övön, zsebben található kisebb tárgyak észrevétlen eltulajdonítása. Ha a próba sikertelen, a karaktert észreveszik vagy legalábbis gyanút kelt. Másféle, kézügyességet igénylő fogásokra is alkalmas.', - Tulajdonsag: [Tulajdonsag2E.Ugyesseg], - Osztalyok: [Osztaly2E.Tolvaj], - }, -] - -export const TolvajKepzettsegList = KepzettsegLista.filter(x => x.Osztalyok?.includes(Osztaly2E.Tolvaj)) - -export const Kepzettsegek: Record = - KepzettsegLista.reduce( - (acc: Record, k) => { acc[k.Id] = k; return acc; }, - {} as Record); +import {Modifier, TulajdonsagokTotal} from "./tulajdonsag2E"; +import {Kepzettseg, Kepzettsegek, KepzettsegId, KepzettsegLista, TolvajKepzettsegList} from "./kepzettsegek2E.data"; function availableKezpettsegListFajjal(faj: Faj2E, ...osztalyok: Osztaly2E[]): Kepzettseg[] { const birodalmiKepzettsegek : KepzettsegId[] = ["k_alkimia", "k_meregkeveres", "k_okkultizmus"] @@ -261,7 +56,8 @@ export function SetDefaultTolvajKepzettsegek(karakter: Pick) { return (n: number): Kepzettseg[] => { if (karakter.kepzettsegek.length > n){ - return [Kepzettsegek[karakter.kepzettsegek[n]], ...GetAvailableKepzettsegek(karakter)] + const kepzettsegIndexN: KepzettsegId = karakter.kepzettsegek[n]; + return [Kepzettsegek[kepzettsegIndexN], ...GetAvailableKepzettsegek(karakter)] } else { return GetAvailableKepzettsegek(karakter); @@ -272,7 +68,8 @@ export function GetKepzettsegListaN(karakter: Pick) { return (n: number): Kepzettseg[] => { if (karakter.tolvajKepzettsegek != null && karakter.tolvajKepzettsegek.length > n){ - return [Kepzettsegek[karakter.tolvajKepzettsegek[n]], ...GetAvailableKepzettsegek(karakter)] + const kepzettsegIndexN: KepzettsegId = karakter.tolvajKepzettsegek[n]; + return [Kepzettsegek[kepzettsegIndexN], ...GetAvailableKepzettsegek(karakter)] } else { return GetAvailableKepzettsegek(karakter); diff --git a/frontend/src/second-edition/domain-models/szintlepes.ts b/frontend/src/second-edition/domain-models/szintlepes.ts index 61c3030..db2cb43 100644 --- a/frontend/src/second-edition/domain-models/szintlepes.ts +++ b/frontend/src/second-edition/domain-models/szintlepes.ts @@ -1,10 +1,11 @@ import {Tulajdonsag2E, TulajdonsagIDs, TulajdonsagokTotal} from "./tulajdonsag2E"; -import {GetAvailableKepzettsegek, KepzettsegId} from "./kepzettsegek2E"; +import {GetAvailableKepzettsegek} from "./kepzettsegek2E"; import {Osztaly2E} from "./osztaly2E"; import {Karakter2E} from "./karakter2E"; import {BaseHP} from "./masodlagos_ertekek"; import {dAny} from "../../shared/domain-models/kockak"; import {AllowedFegyver} from "./allowed-fegyver"; +import {KepzettsegId} from "./kepzettsegek2E.data"; export interface Szintlepes { osztaly: Osztaly2E; diff --git a/frontend/src/second-edition/pdf/karakter_pdf_view.ts b/frontend/src/second-edition/pdf/karakter_pdf_view.ts index 094894c..154a32c 100644 --- a/frontend/src/second-edition/pdf/karakter_pdf_view.ts +++ b/frontend/src/second-edition/pdf/karakter_pdf_view.ts @@ -12,7 +12,7 @@ import { TulajdonsagModosito } from "../domain-models/tulajdonsag2E"; import {SignedNumberToText} from "../../shared/components/Helpers"; -import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek2E"; +import {Kepzettseg, KepzettsegId, Kepzettsegek} from "../domain-models/kepzettsegek2E.data"; import {getClassLevels} from "../domain-models/szintlepes"; import {FegyverFlags} from "../domain-models/fegyver"; @@ -118,9 +118,9 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView { EgyebVO: SignedNumberToText(VOegyeb(karakter)), Kepzettsegek: - karakter.kepzettsegek.map(k => + karakter.kepzettsegek.map((k : KepzettsegId) => mapKepzettsegToPdfView(Kepzettsegek[k], tulajdonsagok, karakter.szint)) - .concat(karakter.tolvajKepzettsegek?.map(k => + .concat(karakter.tolvajKepzettsegek?.map((k: KepzettsegId) => mapKepzettsegToPdfView(Kepzettsegek[k], tulajdonsagok, classLevels[Osztaly2E.Tolvaj])) || []), Fegyverek: karakter.felszereles.fegyverIDk.slice(0, 4).map(fid => {