mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
wip second page osztaly special skills
This commit is contained in:
Binary file not shown.
@@ -158,7 +158,7 @@ export function OsztalySpecialSkills(osztaly: Osztaly) : Skill[] {
|
||||
{
|
||||
Id: 's_harcos_amazon',
|
||||
Name: 'Amazon',
|
||||
Description: 'Az amazonok barbár népe szépségéről és a karizmatikus jelenlétre építő védekező harcmodoráról ismert.'
|
||||
Description: 'Az amazonok barbár népe szépségéről és a karizmatikus jelenlétre építő védekező harcmodoráról ismert.',
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_amazon_vert',
|
||||
@@ -230,6 +230,11 @@ export function OsztalySpecialSkills(osztaly: Osztaly) : Skill[] {
|
||||
'Ha az összes szem előtt lévő élőholtat sikerült elűzni vagy irányítani és még maradt „a szent energiából”, akkor ismét el kell kezdeni a hatást a leggyengébb ellenségektől. Az így elűzött szörnyek megsemmisülnek, illetve irányítás esetén végleg a gonosz pap szolgálatába állnak.',
|
||||
'A két hatás egymás ellen is fölhasználható, például egy jó pap kiolthatja egy gonosz pap irányítását, de akár két gonosz pap is versenyezhet egy csapat sírlidérc „megtérítésén”.',
|
||||
]
|
||||
},
|
||||
{
|
||||
Id: 's_pap_invokacio',
|
||||
Name: 'Invokáció',
|
||||
Description: 'A pap kérheti istene segítségét (általában nevének kimondásával), ami +1-et, ritkábban +2-t ad hozzá dobásaihoz. A papok hetente annyiszor használhatják az invokációt, amekkora a Bölcsességbónuszuk (de legalább egyszer).'
|
||||
}
|
||||
]
|
||||
case Osztaly.Tolvaj: return [
|
||||
@@ -261,168 +266,3 @@ export function OsztalySpecialSkills(osztaly: Osztaly) : Skill[] {
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function OsztalySkillsTordelt(osztaly: Osztaly) : Skill[] {
|
||||
switch (osztaly) {
|
||||
case Osztaly.Harcos: return [{
|
||||
Id: 's_harcos_harcos',
|
||||
Name: 'Harcos',
|
||||
Description: 'Speciális harci tapasztalatuknak köszönhetően minden páratlan szinten +2-t kapnak egy\n' +
|
||||
'választott fegyvertípus (pl. csatabárd, hosszúkard, stb.) sebzésére. Ez fegyverenként csak\n' +
|
||||
'egyszer választható, s arra is fölhasználható, hogy a harcos megtanulja egy egzotikus\n' +
|
||||
'fegyver használatát, amire később specializálódhat is. 9. szinttől elérhető számukra a\n' +
|
||||
'kettős specializáció: ezzel sebzésmódosítójukat az adott fegyverre +4-re emelhetik.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Ijasz: return [
|
||||
{
|
||||
Id: 's_harcos_ijasz',
|
||||
Name: 'Íjász',
|
||||
Description: 'Íjak használatakor körönként eggyel többször támadhatnak.\n' +
|
||||
'Értenek a visszacsapó íjak használatához is.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_ijasz_vert',
|
||||
Name: 'Kötelező mozgékonyság',
|
||||
Description: 'Az íjászok nem viselhetnek nehéz vérteket.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Amazon: return [
|
||||
{
|
||||
Id: 's_harcos_amazon_vert',
|
||||
Name: 'MMO vért',
|
||||
Description: 'Az amazonok csak láncinget vagy könnyebb vérteket viselhetnek, de VO-juk Szint/2-vel\n' +
|
||||
'javul, továbbá Karizma- és Ügyességmódosítói közül a kedvezőbbet választhatják.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_amazon_csapatmunka',
|
||||
Name: 'Csapatmunka',
|
||||
Description: 'Ha kettő vagy több amazon együttesen harcol, VO-juk további 2 ponttal nő pszionikus\n' +
|
||||
'képességeik miatt.'
|
||||
},
|
||||
]
|
||||
case Osztaly.Kaloz: return [
|
||||
{
|
||||
Id: 's_harcos_kaloz_ugyes_huzas',
|
||||
Name: 'Ügyes húzás',
|
||||
Description: 'A kalózok és tengerészek ha magasabb, Ügyességbónuszukat adják hozzá közelharci\n' +
|
||||
'támadásaikhoz.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_kaloz_vasmacska',
|
||||
Name: 'Vasmacska',
|
||||
Description: 'A kalózok és tengerészek nem viselhetnek nehéz vértezetet, de VO-juk könnyű vértben\n' +
|
||||
'Szint/3-al javul.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_kaloz_kritikus',
|
||||
Name: 'Kritikus',
|
||||
Description: 'Minden harmadik szinten kiválaszthatnak egy fegyvert, amivel könnyebben okoznak\n' +
|
||||
'kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hosszúkarddal 19-20\n' +
|
||||
'helyett 18-20-on, szablyával 18-20 helyett 17-20-on, stb. Ez a képesség 9. szintig\n' +
|
||||
'fegyverenként csak egyszer választható.'
|
||||
}]
|
||||
case Osztaly.Barbar: return [
|
||||
{
|
||||
Id: 's_harcos_barbar_eletero',
|
||||
Name: 'Túlélő',
|
||||
Description: 'A barbárok 1d12-vel dobják a Hp-jüket, -5 Hp-ig öntudatuknál vannak és\n' +
|
||||
'+1 bónuszt (10. szinttől +2, 15. szinttől +4) kapnak a mentődobásaikra.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_barbar_iras',
|
||||
Name: 'Írástudatlan',
|
||||
Description: 'Minden barbár írástudatlanul kezdi a játékot, de ha kell,\n' +
|
||||
'később megtanulhatja a betűvetést.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Pap: return [
|
||||
{
|
||||
Id: 's_pap_varazslat',
|
||||
Name: 'Varázslatok',
|
||||
Description: 'A papi varázslatok általában gyógyításra, mások megsegítésére és vallási feladatok\n' +
|
||||
'ellátására szolgálnak. Minél magasabb szintűek, egy nap annál több varázslatot tudnak\n' +
|
||||
'alkalmazni. Ez a karakterlapon a Mágiánál megtalálható.'
|
||||
},
|
||||
{
|
||||
Id: 's_pap_gyogyseb',
|
||||
Name: 'Gyógyítás vagy sebokozás',
|
||||
Description:
|
||||
'A pap az aznap már memorizált (megtanult) varázslatokat gyógyításra vagy sebek\n' +
|
||||
'okozására is fölhasználhatja. Érintésével a varázslat minden szintjéért 1d8 Hp-t gyógyít\n' +
|
||||
'vagy sebez – így pl. egy Ómen elhasználásával 2d8 Hp-t. Az így konvertált varázslat\n' +
|
||||
'természetesen elvész. Az, hogy a képesség sebek gyógyítására vagy okozására szolgál, a\n' +
|
||||
'pap istenétől függ. A békésebb istenek főleg az elsőt, a harciasabbak főleg a másodikat\n' +
|
||||
'részesítik előnyben, s vannak olyanok is, akik híveikre bízzák, hogy melyik utat választják.\n' +
|
||||
'Ha azonban a pap már eldöntötte, melyik képességben járatos, döntését többé nem\n' +
|
||||
'másíthatja meg!'
|
||||
},
|
||||
{
|
||||
Id: 's_pap_elohalott',
|
||||
Name: 'Élőholtak elűzése vagy irányítása',
|
||||
Description:
|
||||
'A papok istenük dogmájának megfelelően képesek lehetnek arra, hogy élőholt szörnyeket\n' +
|
||||
'(mint például zombikat, lidérceket vagy vámpírokat) szimbólumuk felmutatásával elűzzenek\n' +
|
||||
'vagy szolgálatukba állítsanak. Ez a képesség naponta csak egyszer (5. szinttől kétszer, 10.\n' +
|
||||
'szinttől háromszor, 15. szinttől négyszer) használható. A cselekedet a harcnál leírt módon\n' +
|
||||
'működik.', //TODO!
|
||||
ExtendedDescription: [
|
||||
'A pap [1d20+Kar bónusz] próbát tesz. Ennek az értékét összeveti a standard bónusztáblázattal. Az innen kiolvasható módosítót hozzáadja saját szintjéhez (ha negatív, akkor levonja). Az eredmény jelzi, hogy a pap legfeljebb milyen szintű élőholtakra lesz hatással. Ha tehát pl. a próba végeredménye 14 és a pap ötödik szintű, akkor 5+1, azaz 6. szintű a legerősebb élőhalott, amire a kísérlet sikeres. A 20-as dobás itt is automatikus siker, az 1-es automatikus kudarc.',
|
||||
'A pap [2d6+szint] szintű élőhalottat űzhet el vagy irányíthat. Először a leggyengébb élőholtakra hat, azután a következő leggyengébbekre, stb. Az elűzött élőholtak elmenekülnek a pap szeme elől és addig nem is ártanak neki és társainak, amíg a pap csapata meg nem támadja őket! Ezzel szemben a gonosz papok parancsokat adhatnak az irányított szörnyeknek. Mindkét hatás legfeljebb pár óráig tart, az élőholtak szintjétől és a körülményektől függően.',
|
||||
'Ha az összes szem előtt lévő élőholtat sikerült elűzni vagy irányítani és még maradt „a szent energiából”, akkor ismét el kell kezdeni a hatást a leggyengébb ellenségektől. Az így elűzött szörnyek megsemmisülnek, illetve irányítás esetén végleg a gonosz pap szolgálatába állnak.',
|
||||
'A két hatás egymás ellen is fölhasználható, például egy jó pap kiolthatja egy gonosz pap irányítását, de akár két gonosz pap is versenyezhet egy csapat sírlidérc „megtérítésén”.',
|
||||
]
|
||||
}
|
||||
]
|
||||
case Osztaly.Tolvaj: return [
|
||||
{
|
||||
Id: 's_tolvaj_orvtamadas',
|
||||
Name: 'Orvtámadás',
|
||||
Description:
|
||||
'az orvtámadás akkor használható, ha a tolvaj meglepi áldozatát, tehát pl. csöndesen a\n' +
|
||||
'hátába kerül, vagy beszélgetés közben tőrt ránt és egyetlen mozdulattal gyomron szúrja.\n' +
|
||||
'Az orvtámadás minden páratlan szintért 1d6 bónusz sebzést okoz (maximuma +5d6).\n' +
|
||||
'Dobó- és lőfegyverrel is használható, és ha a tolvaj úgy dönt, illetve a használt fegyver\n' +
|
||||
'lehetővé teszi, az ellenfél elkábítására is alkalmazható.'
|
||||
},
|
||||
{
|
||||
Id: 's_tolvaj_kezdemenyezes',
|
||||
Name: 'Jobb kezdeményezés',
|
||||
Description: 'a tolvajok +4-et kapnak kezdeményezési dobásaikra.',
|
||||
},
|
||||
{
|
||||
Id: 's_tolvaj_kepzettsegek',
|
||||
Name: 'Tolvajképzettségek',
|
||||
Description:
|
||||
'Minden tolvaj jártas több olyan képzettségben, amely segíti a rejtőzködésben, a jól őrzött\n' +
|
||||
'értékek eltulajdonításában és hasonló feladatokban. A tolvajok azokat a tolvajképzettség-\n' +
|
||||
'eket is használhatják, amelyekben nem járatosak külön, de ekkor szintjük nem számít bele\n' +
|
||||
'a próbadobás módosítójába! A tolvajképzettségek listája:\n' +
|
||||
'Álcázás, Csapdák állítása és eltávolítása, Egyensúlyozás, Értékbecslés, Hallgatózás,\n' +
|
||||
'Hamisítás, Jelek olvasása, Keresés, Mászás, Megfigyelés, Méregkeverés, Osonás, Rejtőzés,\n' +
|
||||
'Szabadulóművészet, Zárnyitás és Zsebmetszés.',
|
||||
},
|
||||
]
|
||||
case Osztaly.Varazslo: return [{
|
||||
Id: 's_varazslo_varazskonyv',
|
||||
Name: 'Varázskönyv',
|
||||
Description:
|
||||
'Egy első szintű varázsló varázskönyve 6 nulladik és 3 első szintű varázslatot tartalmaz,\n' +
|
||||
'harmadik szintű kezdő karakteré ezen felül még 2 első szintűt és 2 második szintűt.\n' +
|
||||
'Az újabb varázslatokat mások könyveiből, mágikus tekercsekből vagy más módszerek\n' +
|
||||
'segítségével kell könyvébe másolnia. Az illuzionisták szintén varázskönyveket használnak\n' +
|
||||
'de eltérő mágiaformájuk miatt nem képesek a varázslói varázslatok megértésére – és viszont.'
|
||||
}]
|
||||
case Osztaly.Illuzionista: return [{
|
||||
Id: 's_illuzionista_varazskonyv',
|
||||
Name: 'Varázskönyv',
|
||||
Description:
|
||||
'Egy első szintű illuzionista varázskönyve 6 nulladik és 3 első szintű varázslatot tartalmaz,\n' +
|
||||
'harmadik szintű kezdő karakteré ezen felül még 2 első szintűt és 2 második szintűt. Az\n' +
|
||||
'újabb varázslatokat mások könyveiből, mágikus tekercsekből vagy más módszerek\n' +
|
||||
'segítségével kell könyvébe másolnia. Az varázslók szintén varázskönyveket használnak, de\n' +
|
||||
'eltérő mágiaformájuk miatt nem képesek a varázslói varázslatok megértésére – és viszont.'
|
||||
}]
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,9 @@ export async function CreatePDF(karakter: KarakterPdfView) {
|
||||
DrawMagic(page, fontSizeBase, pdfFont, karakter.NapiMemorizalhatoVarazslatok, karakter.VarazslatMentokNF)
|
||||
|
||||
const secondPage = pdfDoc.addPage()
|
||||
DrawOsztalySpecialsPage(secondPage, pdfFont, karakter)
|
||||
const fontBoldBytes = await fetch('/Merienda-Bold.ttf').then(res => res.arrayBuffer())
|
||||
const fontBold = await pdfDoc.embedFont(fontBoldBytes)
|
||||
DrawOsztalySpecialsPage(secondPage, pdfFont, fontBold, karakter)
|
||||
|
||||
const pdfBytes = await pdfDoc.save();
|
||||
download(pdfBytes, karakter.Name + ".pdf", "application/pdf");
|
||||
|
||||
@@ -3,13 +3,14 @@ import {Mentok, MentokAlap, MentoModositok} from "../domain-models/mentok";
|
||||
import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek";
|
||||
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
||||
import {Faj, FajLabel} from "../domain-models/faj";
|
||||
import {Osztaly, OsztalyLabel, OsztalySkillsTordelt, Skill} from "../domain-models/osztaly";
|
||||
import {Osztaly, OsztalyLabel, OsztalySpecialSkills, Skill} from "../domain-models/osztaly";
|
||||
import {CelzoTB, KozelharciTB} from "../domain-models/tamadas_bonusz";
|
||||
import {KarakterInputs} from "../domain-models/karakter";
|
||||
import {CalculateVarazslatMentokNF, NapiVarazslatok} from "../domain-models/memorizalt_varazslatok";
|
||||
import {GetJellem} from "../domain-models/jellem";
|
||||
import {Fegyver, GetFegyverek, GetPajzs, GetPancel} from '../domain-models/felszereles'
|
||||
import {SignedNumberToText} from "../components/Helpers";
|
||||
import {OsztalySkillsTordelt} from "./osztaly_skills";
|
||||
|
||||
export interface KepzettsegPdfView {
|
||||
KepzettsegName: string
|
||||
@@ -83,7 +84,7 @@ export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfVie
|
||||
Nem: karakter.nem || "",
|
||||
Tulajdonsagok: karakter.tulajdonsagok,
|
||||
Osztaly: OsztalyLabel(karakter.osztaly),
|
||||
OsztalySkills: OsztalySkillsTordelt(karakter.osztaly),
|
||||
OsztalySkills: OsztalySpecialSkills(karakter.osztaly),
|
||||
Szint: karakter.szint.toString(),
|
||||
Kepzettsegek: karakter.kepzettsegek.map(id => mapKepzettsegToPdfView(Kepzettsegek[id], tulajdonsagok, karakter.szint)),
|
||||
TolvajKepzettsegek: karakter.tolvajKepzettsegek?.map(id => mapKepzettsegToPdfView(Kepzettsegek[id], tulajdonsagok, karakter.szint)) || [],
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
import {Osztaly, Skill} from "../domain-models/osztaly";
|
||||
|
||||
export function OsztalySkillsTordelt(osztaly: Osztaly) : Skill[] {
|
||||
switch (osztaly) {
|
||||
case Osztaly.Harcos: return [{
|
||||
Id: 's_harcos_harcos',
|
||||
Name: 'Harcos',
|
||||
Description: 'Speciális harci tapasztalatuknak köszönhetően minden páratlan szinten +2-t kapnak egy\n' +
|
||||
'választott fegyvertípus (pl. csatabárd, hosszúkard, stb.) sebzésére. Ez fegyverenként csak\n' +
|
||||
'egyszer választható, s arra is fölhasználható, hogy a harcos megtanulja egy egzotikus\n' +
|
||||
'fegyver használatát, amire később specializálódhat is. 9. szinttől elérhető számukra a\n' +
|
||||
'kettős specializáció: ezzel sebzésmódosítójukat az adott fegyverre +4-re emelhetik.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Ijasz: return [
|
||||
{
|
||||
Id: 's_harcos_ijasz',
|
||||
Name: 'Íjász',
|
||||
Description: 'Íjak használatakor körönként eggyel többször támadhatnak.\n' +
|
||||
'Értenek a visszacsapó íjak használatához is.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_ijasz_vert',
|
||||
Name: 'Kötelező mozgékonyság',
|
||||
Description: 'Az íjászok nem viselhetnek nehéz vérteket.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Amazon: return [
|
||||
{
|
||||
Id: 's_harcos_amazon_vert',
|
||||
Name: 'MMO vért',
|
||||
Description:
|
||||
'Az amazonok csak láncinget vagy könnyebb vérteket viselhetnek, de VO-juk Szint/2-vel\n' +
|
||||
'javul, továbbá Karizma- és Ügyességmódosítói közül a kedvezőbbet választhatják.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_amazon_csapatmunka',
|
||||
Name: 'Csapatmunka',
|
||||
Description: 'Ha kettő vagy több amazon együttesen harcol, VO-juk további 2 ponttal nő pszionikus\n' +
|
||||
'képességeik miatt.'
|
||||
},
|
||||
]
|
||||
case Osztaly.Kaloz: return [
|
||||
{
|
||||
Id: 's_harcos_kaloz_ugyes_huzas',
|
||||
Name: 'Ügyes húzás',
|
||||
Description: 'A kalózok és tengerészek ha magasabb, Ügyességbónuszukat adják hozzá közelharci\n' +
|
||||
'támadásaikhoz.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_kaloz_vasmacska',
|
||||
Name: 'Vasmacska',
|
||||
Description: 'A kalózok és tengerészek nem viselhetnek nehéz vértezetet, de VO-juk könnyű vértben\n' +
|
||||
'Szint/3-al javul.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_kaloz_kritikus',
|
||||
Name: 'Kritikus',
|
||||
Description: 'Minden harmadik szinten kiválaszthatnak egy fegyvert, amivel könnyebben okoznak\n' +
|
||||
'kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hosszúkarddal 19-20\n' +
|
||||
'helyett 18-20-on, szablyával 18-20 helyett 17-20-on, stb. Ez a képesség 9. szintig\n' +
|
||||
'fegyverenként csak egyszer választható.'
|
||||
}]
|
||||
case Osztaly.Barbar: return [
|
||||
{
|
||||
Id: 's_harcos_barbar_eletero',
|
||||
Name: 'Túlélő',
|
||||
Description: 'A barbárok 1d12-vel dobják a Hp-jüket, -5 Hp-ig öntudatuknál vannak és\n' +
|
||||
'+1 bónuszt (10. szinttől +2, 15. szinttől +4) kapnak a mentődobásaikra.'
|
||||
},
|
||||
{
|
||||
Id: 's_harcos_barbar_iras',
|
||||
Name: 'Írástudatlan',
|
||||
Description: 'Minden barbár írástudatlanul kezdi a játékot, de ha kell,\n' +
|
||||
'később megtanulhatja a betűvetést.'
|
||||
}
|
||||
]
|
||||
case Osztaly.Pap: return [
|
||||
{
|
||||
Id: 's_pap_varazslat',
|
||||
Name: 'Varázslatok',
|
||||
Description: 'A papi varázslatok általában gyógyításra, mások megsegítésére és vallási feladatok\n' +
|
||||
'ellátására szolgálnak. Minél magasabb szintűek, egy nap annál több varázslatot tudnak\n' +
|
||||
'alkalmazni. Ez a karakterlapon a Mágiánál megtalálható.'
|
||||
},
|
||||
{
|
||||
Id: 's_pap_gyogyseb',
|
||||
Name: 'Gyógyítás vagy sebokozás',
|
||||
Description:
|
||||
'A pap az aznap már memorizált (megtanult) varázslatokat gyógyításra vagy sebek\n' +
|
||||
'okozására is fölhasználhatja. Érintésével a varázslat minden szintjéért 1d8 Hp-t gyógyít\n' +
|
||||
'vagy sebez – így pl. egy Ómen elhasználásával 2d8 Hp-t. Az így konvertált varázslat\n' +
|
||||
'természetesen elvész. Az, hogy a képesség sebek gyógyítására vagy okozására szolgál, a\n' +
|
||||
'pap istenétől függ. A békésebb istenek főleg az elsőt, a harciasabbak főleg a másodikat\n' +
|
||||
'részesítik előnyben, s vannak olyanok is, akik híveikre bízzák, hogy melyik utat választják.\n' +
|
||||
'Ha azonban a pap már eldöntötte, melyik képességben járatos, döntését többé nem\n' +
|
||||
'másíthatja meg!'
|
||||
},
|
||||
{
|
||||
Id: 's_pap_elohalott',
|
||||
Name: 'Élőholtak elűzése vagy irányítása',
|
||||
Description:
|
||||
'A papok istenük dogmájának megfelelően képesek lehetnek arra, hogy élőholt szörnyeket\n' +
|
||||
'(mint például zombikat, lidérceket vagy vámpírokat) szimbólumuk felmutatásával elűzzenek\n' +
|
||||
'vagy szolgálatukba állítsanak. Ez a képesség naponta csak egyszer (5. szinttől kétszer, 10.\n' +
|
||||
'szinttől háromszor, 15. szinttől négyszer) használható. A cselekedet a következő módon\n' +
|
||||
'működik:',
|
||||
ExtendedDescription: [
|
||||
'A pap [1d20+Kar bónusz] próbát tesz. Ennek az értékét összeveti a standard bónusztáblázattal. Az innen kiolvasható módosítót hozzáadja saját szintjéhez (ha negatív, akkor levonja). Az eredmény jelzi, hogy a pap legfeljebb milyen szintű élőholtakra lesz hatással. Ha tehát pl. a próba végeredménye 14 és a pap ötödik szintű, akkor 5+1, azaz 6. szintű a legerősebb élőhalott, amire a kísérlet sikeres. A 20-as dobás itt is automatikus siker, az 1-es automatikus kudarc.',
|
||||
'A pap [2d6+szint] szintű élőhalottat űzhet el vagy irányíthat. Először a leggyengébb élőholtakra hat, azután a következő leggyengébbekre, stb. Az elűzött élőholtak elmenekülnek a pap szeme elől és addig nem is ártanak neki és társainak, amíg a pap csapata meg nem támadja őket! Ezzel szemben a gonosz papok parancsokat adhatnak az irányított szörnyeknek. Mindkét hatás legfeljebb pár óráig tart, az élőholtak szintjétől és a körülményektől függően.',
|
||||
'Ha az összes szem előtt lévő élőholtat sikerült elűzni vagy irányítani és még maradt „a szent energiából”, akkor ismét el kell kezdeni a hatást a leggyengébb ellenségektől. Az így elűzött szörnyek megsemmisülnek, illetve irányítás esetén végleg a gonosz pap szolgálatába állnak.',
|
||||
'A két hatás egymás ellen is fölhasználható, például egy jó pap kiolthatja egy gonosz pap irányítását, de akár két gonosz pap is versenyezhet egy csapat sírlidérc „megtérítésén”.',
|
||||
]
|
||||
},
|
||||
{
|
||||
Id: 's_pap_invokacio',
|
||||
Name: 'Invokáció',
|
||||
Description:
|
||||
'A pap kérheti istene segítségét (általában nevének kimondásával), ami +1-et, ritkábban +2-t\n' +
|
||||
'ad hozzá dobásaihoz. A papok hetente annyiszor használhatják az invokációt, amekkora a \n' +
|
||||
'Bölcsességbónuszuk (de legalább egyszer).'
|
||||
}
|
||||
]
|
||||
case Osztaly.Tolvaj: return [
|
||||
{
|
||||
Id: 's_tolvaj_orvtamadas',
|
||||
Name: 'Orvtámadás',
|
||||
Description:
|
||||
'az orvtámadás akkor használható, ha a tolvaj meglepi áldozatát, tehát pl. csöndesen a\n' +
|
||||
'hátába kerül, vagy beszélgetés közben tőrt ránt és egyetlen mozdulattal gyomron szúrja.\n' +
|
||||
'Az orvtámadás minden páratlan szintért 1d6 bónusz sebzést okoz (maximuma +5d6).\n' +
|
||||
'Dobó- és lőfegyverrel is használható, és ha a tolvaj úgy dönt, illetve a használt fegyver\n' +
|
||||
'lehetővé teszi, az ellenfél elkábítására is alkalmazható.'
|
||||
},
|
||||
{
|
||||
Id: 's_tolvaj_kezdemenyezes',
|
||||
Name: 'Jobb kezdeményezés',
|
||||
Description: 'a tolvajok +4-et kapnak kezdeményezési dobásaikra.',
|
||||
},
|
||||
{
|
||||
Id: 's_tolvaj_kepzettsegek',
|
||||
Name: 'Tolvajképzettségek',
|
||||
Description:
|
||||
'Minden tolvaj jártas több olyan képzettségben, amely segíti a rejtőzködésben, a jól őrzött\n' +
|
||||
'értékek eltulajdonításában és hasonló feladatokban. A tolvajok azokat a tolvajképzettség-\n' +
|
||||
'eket is használhatják, amelyekben nem járatosak külön, de ekkor szintjük nem számít bele\n' +
|
||||
'a próbadobás módosítójába! A tolvajképzettségek listája:\n' +
|
||||
'Álcázás, Csapdák állítása és eltávolítása, Egyensúlyozás, Értékbecslés, Hallgatózás,\n' +
|
||||
'Hamisítás, Jelek olvasása, Keresés, Mászás, Megfigyelés, Méregkeverés, Osonás, Rejtőzés,\n' +
|
||||
'Szabadulóművészet, Zárnyitás és Zsebmetszés.',
|
||||
},
|
||||
]
|
||||
case Osztaly.Varazslo: return [{
|
||||
Id: 's_varazslo_varazskonyv',
|
||||
Name: 'Varázskönyv',
|
||||
Description:
|
||||
'Egy első szintű varázsló varázskönyve 6 nulladik és 3 első szintű varázslatot tartalmaz,\n' +
|
||||
'harmadik szintű kezdő karakteré ezen felül még 2 első szintűt és 2 második szintűt.\n' +
|
||||
'Az újabb varázslatokat mások könyveiből, mágikus tekercsekből vagy más módszerek\n' +
|
||||
'segítségével kell könyvébe másolnia. Az illuzionisták szintén varázskönyveket használnak\n' +
|
||||
'de eltérő mágiaformájuk miatt nem képesek a varázslói varázslatok megértésére – és viszont.'
|
||||
}]
|
||||
case Osztaly.Illuzionista: return [{
|
||||
Id: 's_illuzionista_varazskonyv',
|
||||
Name: 'Varázskönyv',
|
||||
Description:
|
||||
'Egy első szintű illuzionista varázskönyve 6 nulladik és 3 első szintű varázslatot tartalmaz,\n' +
|
||||
'harmadik szintű kezdő karakteré ezen felül még 2 első szintűt és 2 második szintűt. Az\n' +
|
||||
'újabb varázslatokat mások könyveiből, mágikus tekercsekből vagy más módszerek\n' +
|
||||
'segítségével kell könyvébe másolnia. Az varázslók szintén varázskönyveket használnak, de\n' +
|
||||
'eltérő mágiaformájuk miatt nem képesek a varázslói varázslatok megértésére – és viszont.'
|
||||
}]
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,36 @@
|
||||
import {PDFFont, PDFPage, rgb} from "pdf-lib";
|
||||
import {PDFFont, PDFPage, rgb, breakTextIntoLines} from "pdf-lib";
|
||||
import {KarakterPdfView} from "./karakter_pdf_view";
|
||||
import {Skill} from "../domain-models/osztaly";
|
||||
|
||||
export function DrawOsztalySpecialsPage(page: PDFPage, font: PDFFont, karakter: KarakterPdfView){
|
||||
const maxWidth = 540
|
||||
|
||||
function drawExtendedSkillDescription(skill: Skill, font: PDFFont, baseFontSize: number, page: PDFPage, rows: number) {
|
||||
const indent = 20
|
||||
for (let j = 0; j < (skill.ExtendedDescription?.length || 0); j++) {
|
||||
const paragraph = `${j + 1}. ${skill.ExtendedDescription![j]}`
|
||||
const lines = breakTextIntoLines(paragraph, [' ', '-'], maxWidth - indent, (s) => font.widthOfTextAtSize(s, baseFontSize))
|
||||
page.drawText(paragraph, {
|
||||
x: 30 + indent,
|
||||
y: 700 - rows,
|
||||
size: baseFontSize,
|
||||
font: font,
|
||||
lineHeight: 16,
|
||||
color: rgb(0, 0, 0),
|
||||
maxWidth: maxWidth - indent,
|
||||
wordBreaks: [' ', '-']
|
||||
})
|
||||
rows += lines.length * font.heightAtSize(baseFontSize)
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
export function DrawOsztalySpecialsPage(page: PDFPage, font: PDFFont, fontBold: PDFFont, karakter: KarakterPdfView): number{
|
||||
const baseFontSize = 12
|
||||
const titleFontSize = baseFontSize * 3
|
||||
const pageCenterX = page.getWidth()/2
|
||||
const titleWidth = font.widthOfTextAtSize(karakter.Osztaly, titleFontSize)
|
||||
const titleX = pageCenterX - (titleWidth / 2)
|
||||
|
||||
page.drawText(karakter.Osztaly, {
|
||||
x: titleX,
|
||||
y: 770,
|
||||
@@ -15,17 +39,16 @@ export function DrawOsztalySpecialsPage(page: PDFPage, font: PDFFont, karakter:
|
||||
color: rgb(0, 0, 0),
|
||||
})
|
||||
let rows = 0
|
||||
// const margin = 30
|
||||
// const textWidth = page.getWidth() - 2*margin;
|
||||
for (let i = 0; i < karakter.OsztalySkills.length; i++) {
|
||||
const skill = karakter.OsztalySkills[i];
|
||||
page.drawText(skill.Name, {
|
||||
x: 30,
|
||||
y: 720 - rows,
|
||||
size: baseFontSize,
|
||||
font: font,
|
||||
font: fontBold,
|
||||
color: rgb(0, 0, 0),
|
||||
})
|
||||
const lines = breakTextIntoLines(skill.Description, [' ', '-'], maxWidth, (s) => font.widthOfTextAtSize(s, baseFontSize))
|
||||
page.drawText(skill.Description, {
|
||||
x: 30,
|
||||
y: 700 - rows,
|
||||
@@ -33,10 +56,14 @@ export function DrawOsztalySpecialsPage(page: PDFPage, font: PDFFont, karakter:
|
||||
font: font,
|
||||
lineHeight: 16,
|
||||
color: rgb(0, 0, 0),
|
||||
// maxWidth: textWidth,
|
||||
// wordBreaks: [' ', '-']
|
||||
maxWidth: maxWidth,
|
||||
wordBreaks: [' ', '-']
|
||||
})
|
||||
// rows += Math.ceil(font.widthOfTextAtSize(skill.Description, baseFontSize)/textWidth)*20 + 30
|
||||
rows += skill.Description.split('\n').length*16 + 30
|
||||
// rows += skill.Description.split('\n').length*16 + 30
|
||||
rows += lines.length * font.heightAtSize(baseFontSize)
|
||||
rows = drawExtendedSkillDescription(skill, font, baseFontSize, page, rows);
|
||||
rows += 24 // for title and spacing
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user