mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
Add jellem
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
## Fixes
|
## Fixes
|
||||||
- Kötelező képezettségek
|
- Kötelező képezettségek - Birodalmi tolvaj
|
||||||
- Jellem
|
|
||||||
|
|
||||||
## Level up
|
## Level up
|
||||||
|
- Faji szint korlatok
|
||||||
- Harcos fegyver specializáció választás szintlépéskor (free text)
|
- Harcos fegyver specializáció választás szintlépéskor (free text)
|
||||||
- Kalóz kritikus fegyver választás szintlépéskor (free text)
|
- Kalóz kritikus fegyver választás szintlépéskor (free text)
|
||||||
- Tolvaj 9.ik szinttől tiltott képzettségek
|
- Tolvaj 9.ik szinttől tiltott képzettségek
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import React from "react";
|
||||||
|
import {AllJellemIDs, GetJellem, JellemID} from "../domain-models/jellem";
|
||||||
|
|
||||||
|
function JellemSelector(props: {selected: JellemID, changeJellem: (val: JellemID) => void}) {
|
||||||
|
const { selected, changeJellem } = props
|
||||||
|
const jellem = GetJellem(selected)
|
||||||
|
return <>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-md-2 col-sm-3 col-form-label'>Jellem</label>
|
||||||
|
<select className='col form-select' value={selected} onChange={e => changeJellem(e.target.value as JellemID)}>
|
||||||
|
{AllJellemIDs.map((id) => (
|
||||||
|
<option key={id} value={id}>{GetJellem(id).Label}</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-md-2 col-sm-3 form-label'></label>
|
||||||
|
<div className='col'>
|
||||||
|
<p className='row pt-2'>
|
||||||
|
{jellem.Description}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
|
||||||
|
export default JellemSelector
|
||||||
@@ -55,22 +55,17 @@ function InternalKepzettsegekSelector(props: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function KarakterKepzettsegek (props: {
|
function KarakterKepzettsegek (props: {
|
||||||
availableKepzettsegList: Kepzettseg[],
|
|
||||||
numberOfKepzettsegek: number
|
numberOfKepzettsegek: number
|
||||||
kepzettsegek: KepzettsegId[],
|
kepzettsegek: KepzettsegId[],
|
||||||
changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
|
changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
|
||||||
tolvajKepzettsegek: KepzettsegId[],
|
tolvajKepzettsegek: KepzettsegId[],
|
||||||
changeTolvajKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
|
changeTolvajKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
|
||||||
|
getKepzettsegListaN: (n: number) => Kepzettseg[]
|
||||||
}) {
|
}) {
|
||||||
const { kepzettsegek, numberOfKepzettsegek, availableKepzettsegList, changeKepzettsegek, tolvajKepzettsegek, changeTolvajKepzettsegek} = props
|
const { kepzettsegek, numberOfKepzettsegek, getKepzettsegListaN, changeKepzettsegek, tolvajKepzettsegek, changeTolvajKepzettsegek} = props
|
||||||
|
|
||||||
// TODO: Eszakinak es Kaloznak hajozas, Birodalminak Alikmia, vagy Meregkeveres, Etuniainak Lovaglas
|
// TODO: Eszakinak es Kaloznak hajozas, Birodalminak Alikmia, vagy Meregkeveres, Etuniainak Lovaglas
|
||||||
|
|
||||||
const getKepzettsegListaN = (n: number) => {
|
|
||||||
const kepzettsegekWithoutN = [...kepzettsegek.slice(0, n), ...kepzettsegek.slice(n+1)]
|
|
||||||
return availableKepzettsegList.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !tolvajKepzettsegek.includes(x.Id))
|
|
||||||
}
|
|
||||||
|
|
||||||
const getTolvajKepzettsegListaN = (n: number) : Kepzettseg[] => {
|
const getTolvajKepzettsegListaN = (n: number) : Kepzettseg[] => {
|
||||||
const tolvajKepzettsegekWithoutN = [...tolvajKepzettsegek.slice(0, n), ...tolvajKepzettsegek.slice(n+1)]
|
const tolvajKepzettsegekWithoutN = [...tolvajKepzettsegek.slice(0, n), ...tolvajKepzettsegek.slice(n+1)]
|
||||||
return TolvajKepzettsegList.filter(x => !kepzettsegek.includes(x.Id) && !tolvajKepzettsegekWithoutN.includes(x.Id))
|
return TolvajKepzettsegList.filter(x => !kepzettsegek.includes(x.Id) && !tolvajKepzettsegekWithoutN.includes(x.Id))
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
export type JellemID = 'TJ' | 'SJ' | 'KJ' | 'TS' | 'S' | 'KS' | 'TG' | 'SG' | 'KG'
|
||||||
|
|
||||||
|
export const AllJellemIDs: JellemID[] = ['TJ', 'SJ', 'KJ', 'TS', 'S', 'KS', 'TG', 'SG', 'KG']
|
||||||
|
|
||||||
|
export interface Jellem {
|
||||||
|
ID: JellemID
|
||||||
|
Label: string
|
||||||
|
Description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GetJellem(id: JellemID): Jellem {
|
||||||
|
switch (id) {
|
||||||
|
case "TJ": return {
|
||||||
|
ID: "TJ",
|
||||||
|
Label: "Törvényes Jó",
|
||||||
|
Description: "A törvényes jó karakterek betartják és fontosnak tartják az igazságos törvényeket, valamint a kiérdemelt tekintély tiszteletét. Viselkedésükben lehetőleg egyenesek, és nem okoznak szükségtelen károkat másnak; továbbá segítenek a kevésbé szerencséseken.",
|
||||||
|
}
|
||||||
|
case "SJ": return {
|
||||||
|
ID: "SJ",
|
||||||
|
Label: "Semleges Jó",
|
||||||
|
Description: "A semleges jó karakterek általában jóindulatúak, de nem jellemző rájuk sem a törvényes jók szigora, sem a kaotikus jók kiszámíthatatlansága.",
|
||||||
|
}
|
||||||
|
case "KJ": return {
|
||||||
|
ID: "KJ",
|
||||||
|
Label: "Kaotikus Jó",
|
||||||
|
Description: "A kaotikus jó karakterek nagy súlyt fektetnek az egyéni szabadságra és a jótéteményekre – akkor is, ha ezek a nézetek és tettek ellentétesek a társadalmi szokásokkal és írott törvényekkel.",
|
||||||
|
}
|
||||||
|
case "TS": return {
|
||||||
|
ID: "TS",
|
||||||
|
Label: "Törvényes Semleges",
|
||||||
|
Description: "A törvényes semleges karakterek szigorúan betartják a törvényeket és adott szavukat, de ez a törvénytisztelet nem altruizmusból, hanem elsősorban önzésből, közömbösségből vagy a törvények öncélú tiszteletéből fakad.",
|
||||||
|
}
|
||||||
|
case "S": return {
|
||||||
|
ID: "S",
|
||||||
|
Label: "Semleges",
|
||||||
|
Description: "A semleges karakterek vagy nem törődnek a fontos erkölcsi kérdésekkel – azaz nem kötelezik el magukat egyes ügyek mellett – vagy éppen ellenkezőleg, aktívan a különféle nézetek közötti egyensúlyra és harmóniára törekednek. Az átlagemberek többsége ehhez a jellemhez tartozik.",
|
||||||
|
}
|
||||||
|
case "KS": return {
|
||||||
|
ID: "KS",
|
||||||
|
Label: "Kaotikus Semleges",
|
||||||
|
Description: "A kaotikus semleges karakterek kiszámíthatatlanok, saját boldogulásukra törekednek akár mások ellenében is. A kalandozók igen jelentős része kaotikus semleges jellemű"
|
||||||
|
}
|
||||||
|
case "TG": return {
|
||||||
|
ID: "TG",
|
||||||
|
Label: "Törvényes Gonosz",
|
||||||
|
Description: "A törvényes gonosz karakterek lételeme a törvényadta lehetőségek kihasználása mások kisemmizésére és önmaguk gyarapítására. Nem csoda, hogy számos zsarnok és kiskirály e jellem képviselője.",
|
||||||
|
}
|
||||||
|
case "SG": return {
|
||||||
|
ID: "SG",
|
||||||
|
Label: "Semleges Gonosz",
|
||||||
|
Description: "A semleges gonosz karakterek döntően aljasak és rosszindulatúak, s céljaikat hol a törvények kijátszásával, hol a rájuk való hivatkozással érik el."
|
||||||
|
}
|
||||||
|
case "KG": return {
|
||||||
|
ID: "KG",
|
||||||
|
Label: "Kaotikus Gonosz",
|
||||||
|
Description: "A kaotikus gonosz karakterek kíméletlenül, mindenen és mindenkin átgázolva hajszolják a hatalmat vagy a vagyont, s ennek érdekében bármilyen gaztettre képesek."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,11 +2,13 @@ import {Faj} from "./faj";
|
|||||||
import {Osztaly} from "./osztaly";
|
import {Osztaly} from "./osztaly";
|
||||||
import {KarakterTulajdonsagok, Tulajdonsag, TulajdonsagDefaults} from "./tulajdonsag";
|
import {KarakterTulajdonsagok, Tulajdonsag, TulajdonsagDefaults} from "./tulajdonsag";
|
||||||
import {KepzettsegId} from "./kepzettsegek";
|
import {KepzettsegId} from "./kepzettsegek";
|
||||||
|
import {JellemID} from "./jellem";
|
||||||
|
|
||||||
export interface KarakterInputs {
|
export interface KarakterInputs {
|
||||||
name: string,
|
name: string,
|
||||||
nem?: string,
|
nem?: string,
|
||||||
kor: number,
|
kor: number,
|
||||||
|
jellem: JellemID,
|
||||||
isten?: string,
|
isten?: string,
|
||||||
faj: Faj,
|
faj: Faj,
|
||||||
osztaly: Osztaly,
|
osztaly: Osztaly,
|
||||||
@@ -22,6 +24,7 @@ export const KarakterDefaults: KarakterInputs = {
|
|||||||
name: "Névtelen Kalandozó",
|
name: "Névtelen Kalandozó",
|
||||||
faj: Faj.Ember,
|
faj: Faj.Ember,
|
||||||
kor: 20,
|
kor: 20,
|
||||||
|
jellem: 'S',
|
||||||
tulajdonsagok: TulajdonsagDefaults,
|
tulajdonsagok: TulajdonsagDefaults,
|
||||||
osztaly: Osztaly.Harcos,
|
osztaly: Osztaly.Harcos,
|
||||||
kepzettsegek: [],
|
kepzettsegek: [],
|
||||||
|
|||||||
@@ -238,25 +238,60 @@ export function SetDefaultTolvajKepzettsegek(karakter: Pick<KarakterInputs, 'osz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function GetKepzettsegListaN(karakter: Pick<KarakterInputs, 'osztaly' | 'faj' | 'kepzettsegek' | 'tolvajKepzettsegek'>) {
|
||||||
|
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
|
||||||
|
return (n: number): Kepzettseg[] => {
|
||||||
|
let available = [...availableKepzettsegList]
|
||||||
|
if (n === 0) {
|
||||||
|
if (karakter.faj === Faj.Eszaki) {
|
||||||
|
return [Kepzettsegek.k_hajozas]
|
||||||
|
}
|
||||||
|
if (karakter.faj === Faj.Etuniai) {
|
||||||
|
return [Kepzettsegek.k_lovaglas]
|
||||||
|
}
|
||||||
|
if (karakter.faj === Faj.Birodalmi && karakter.osztaly !== Osztaly.Tolvaj) {
|
||||||
|
available = [Kepzettsegek.k_meregkeveres, Kepzettsegek.k_alkimia]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const kepzettsegekWithoutN = [...karakter.kepzettsegek.slice(0, n), ...karakter.kepzettsegek.slice(n + 1)]
|
||||||
|
return available.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !karakter.tolvajKepzettsegek?.includes(x.Id))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function SetDefaultKepzettsegek(karakter: Pick<KarakterInputs, 'osztaly' | 'faj' | 'tulajdonsagok' | 'kepzettsegek' | 'tolvajKepzettsegek'>, changeKepzettsegek: (k: KepzettsegId[]) => void) {
|
export function SetDefaultKepzettsegek(karakter: Pick<KarakterInputs, 'osztaly' | 'faj' | 'tulajdonsagok' | 'kepzettsegek' | 'tolvajKepzettsegek'>, changeKepzettsegek: (k: KepzettsegId[]) => void) {
|
||||||
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
|
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
|
||||||
const numberOfKepzettsegek = GetNumberOfKepzettsegek(karakter.tulajdonsagok.t_int, karakter.faj, availableKepzettsegList.length)
|
const numberOfKepzettsegek = GetNumberOfKepzettsegek(karakter.tulajdonsagok.t_int, karakter.faj, availableKepzettsegList.length)
|
||||||
let kepzettsegek = karakter.kepzettsegek
|
let kepzettsegek = [...karakter.kepzettsegek]
|
||||||
const getKepzettsegListaN = (n: number) => {
|
|
||||||
const kepzettsegekWithoutN = [...kepzettsegek.slice(0, n), ...kepzettsegek.slice(n+1)]
|
let mustChangeKepzettsegek = false
|
||||||
return availableKepzettsegList.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !karakter.tolvajKepzettsegek?.includes(x.Id))
|
|
||||||
|
const restrictedKepzettsegek = GetKepzettsegListaN(karakter)(0)
|
||||||
|
if (kepzettsegek.length === 0) {
|
||||||
|
if (restrictedKepzettsegek.length > 0) {
|
||||||
|
kepzettsegek.push(restrictedKepzettsegek[0].Id)
|
||||||
|
mustChangeKepzettsegek = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!restrictedKepzettsegek.includes(Kepzettsegek[kepzettsegek[0]])) {
|
||||||
|
kepzettsegek[0] = restrictedKepzettsegek[0].Id
|
||||||
|
mustChangeKepzettsegek = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kepzettsegek.length < numberOfKepzettsegek) {
|
if (kepzettsegek.length < numberOfKepzettsegek) {
|
||||||
for (let i = kepzettsegek.length; i < numberOfKepzettsegek; i++) {
|
for (let i = kepzettsegek.length; i < numberOfKepzettsegek; i++) {
|
||||||
const kepzettsegLista = getKepzettsegListaN(i)
|
const kepzettsegLista = GetKepzettsegListaN({...karakter, kepzettsegek})(i)
|
||||||
if (kepzettsegLista.length > 0) {
|
if (kepzettsegLista.length > 0) {
|
||||||
kepzettsegek.push(kepzettsegLista[0].Id)
|
kepzettsegek.push(kepzettsegLista[0].Id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
changeKepzettsegek(kepzettsegek)
|
mustChangeKepzettsegek = true
|
||||||
}
|
}
|
||||||
if (kepzettsegek.length > numberOfKepzettsegek){
|
if (kepzettsegek.length > numberOfKepzettsegek){
|
||||||
kepzettsegek = kepzettsegek.slice(0, numberOfKepzettsegek)
|
kepzettsegek = kepzettsegek.slice(0, numberOfKepzettsegek)
|
||||||
|
mustChangeKepzettsegek = true
|
||||||
|
}
|
||||||
|
if (mustChangeKepzettsegek){
|
||||||
changeKepzettsegek(kepzettsegek)
|
changeKepzettsegek(kepzettsegek)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
} from "../domain-models/tulajdonsag";
|
} from "../domain-models/tulajdonsag";
|
||||||
import MasodlagosErtekek from "../components/MasodlagosErtekek";
|
import MasodlagosErtekek from "../components/MasodlagosErtekek";
|
||||||
import {
|
import {
|
||||||
AvailableKezpettsegList,
|
AvailableKezpettsegList, GetKepzettsegListaN,
|
||||||
GetNumberOfKepzettsegek, KepzettsegId, SetDefaultKepzettsegek,
|
GetNumberOfKepzettsegek, KepzettsegId, SetDefaultKepzettsegek,
|
||||||
SetDefaultTolvajKepzettsegek,
|
SetDefaultTolvajKepzettsegek,
|
||||||
} from "../domain-models/kepzettsegek";
|
} from "../domain-models/kepzettsegek";
|
||||||
@@ -27,6 +27,7 @@ import {BaseHP, CalculateMasodlagosErtekek} from "../domain-models/masodlagos_er
|
|||||||
import {KarakterInputToPdfView} from "../pdf/karakter_pdf_view";
|
import {KarakterInputToPdfView} from "../pdf/karakter_pdf_view";
|
||||||
import {arraySetN} from "../util";
|
import {arraySetN} from "../util";
|
||||||
import TulajdonsagNoveles from "../components/TulajdonsagNoveles";
|
import TulajdonsagNoveles from "../components/TulajdonsagNoveles";
|
||||||
|
import JellemSelector from "../components/JellemSelector";
|
||||||
|
|
||||||
function CreateCharacterPage() {
|
function CreateCharacterPage() {
|
||||||
|
|
||||||
@@ -104,6 +105,7 @@ function CreateCharacterPage() {
|
|||||||
type={"number"}
|
type={"number"}
|
||||||
onChange={(e) => changeKarakter({...karakter, kor: Number(e.target.value)})}/>
|
onChange={(e) => changeKarakter({...karakter, kor: Number(e.target.value)})}/>
|
||||||
</div>
|
</div>
|
||||||
|
<JellemSelector selected={karakter.jellem} changeJellem={(val) => changeKarakter({...karakter, jellem: val})} />
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label' >Választott istenség</label>
|
<label className='col-md-2 col-sm-3 col-form-label' >Választott istenség</label>
|
||||||
<input className='col form-control'
|
<input className='col form-control'
|
||||||
@@ -130,7 +132,7 @@ function CreateCharacterPage() {
|
|||||||
changeOsztaly={(o: Osztaly) => changeKarakter({...karakter, osztaly: o})}
|
changeOsztaly={(o: Osztaly) => changeKarakter({...karakter, osztaly: o})}
|
||||||
/>
|
/>
|
||||||
<KarakterKepzettsegek
|
<KarakterKepzettsegek
|
||||||
availableKepzettsegList={availableKepzettsegList}
|
getKepzettsegListaN={GetKepzettsegListaN(karakter)}
|
||||||
numberOfKepzettsegek={GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, karakter.faj, availableKepzettsegList.length)}
|
numberOfKepzettsegek={GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, karakter.faj, availableKepzettsegList.length)}
|
||||||
kepzettsegek={karakter.kepzettsegek}
|
kepzettsegek={karakter.kepzettsegek}
|
||||||
changeKepzettsegek={changeKepzettseg}
|
changeKepzettsegek={changeKepzettseg}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import {KarakterPdfView} from "./karakter_pdf_view";
|
import {KarakterPdfView} from "./karakter_pdf_view";
|
||||||
import {PDFDocument, PDFFont, PDFPage, rgb} from "pdf-lib";
|
import {PDFDocument, PDFFont, PDFPage, rgb} from "pdf-lib";
|
||||||
import fontkit from '@pdf-lib/fontkit'
|
import fontkit from '@pdf-lib/fontkit'
|
||||||
import {OsztalyLabel} from "../domain-models/osztaly";
|
|
||||||
import {FajLabel} from "../domain-models/faj";
|
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../components/Helpers";
|
||||||
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
||||||
import download from "downloadjs";
|
import download from "downloadjs";
|
||||||
@@ -168,21 +166,16 @@ function drawBaseInfo(karakter: KarakterPdfView, draw: (text: string, x : number
|
|||||||
draw(karakter.Nem, 454, 710, 1)
|
draw(karakter.Nem, 454, 710, 1)
|
||||||
draw(karakter.Kor.toString(), 454, 690, 1)
|
draw(karakter.Kor.toString(), 454, 690, 1)
|
||||||
draw(karakter.Isten, 454, 670, 1)
|
draw(karakter.Isten, 454, 670, 1)
|
||||||
draw(OsztalyLabel(karakter.Osztaly), 60, 672, 1)
|
draw(karakter.Osztaly, 60, 672, 1)
|
||||||
draw(karakter.Szint.toString(), 264, 682, 3)
|
draw(karakter.Szint.toString(), 264, 682, 3)
|
||||||
draw(FajLabel(karakter.Faj), 304, 710, 1)
|
draw(karakter.Faj, 302, 710, 1)
|
||||||
|
draw(karakter.Jellem, 302, 672, karakter.Jellem.length > 17 ? 11/12 : 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
function DrawKepzettsegek(page: PDFPage, fontSizeBase: number, pdfFont: PDFFont, kepzettsegek: Kepzettseg[], tulajdonsagok: KarakterTulajdonsagok, szint: number, startFrom: number) {
|
function DrawKepzettsegek(draw: (text: string, x: number, y: number) => void, kepzettsegek: Kepzettseg[], tulajdonsagok: KarakterTulajdonsagok, szint: number, startFrom: number) {
|
||||||
for (let i = 0; i < kepzettsegek.length; i++) {
|
for (let i = 0; i < kepzettsegek.length; i++) {
|
||||||
let kepzettseg = kepzettsegek[i]
|
let kepzettseg = kepzettsegek[i]
|
||||||
page.drawText(kepzettseg.Name, {
|
draw(kepzettseg.Name, 60, startFrom - (i * 18))
|
||||||
x: 60,
|
|
||||||
y: startFrom - (i * 18),
|
|
||||||
size: fontSizeBase,
|
|
||||||
font: pdfFont,
|
|
||||||
color: rgb(0, 0, 0),
|
|
||||||
})
|
|
||||||
const tulajdonsagErtek = kepzettseg.Tulajdonsag.reduce((maxTulajdonsagErtek, currentTulajdonsag) =>
|
const tulajdonsagErtek = kepzettseg.Tulajdonsag.reduce((maxTulajdonsagErtek, currentTulajdonsag) =>
|
||||||
(tulajdonsagok[currentTulajdonsag] > maxTulajdonsagErtek)
|
(tulajdonsagok[currentTulajdonsag] > maxTulajdonsagErtek)
|
||||||
? tulajdonsagok[kepzettseg.Tulajdonsag[i]]
|
? tulajdonsagok[kepzettseg.Tulajdonsag[i]]
|
||||||
@@ -190,13 +183,7 @@ function DrawKepzettsegek(page: PDFPage, fontSizeBase: number, pdfFont: PDFFont,
|
|||||||
tulajdonsagok[kepzettseg.Tulajdonsag[0]])
|
tulajdonsagok[kepzettseg.Tulajdonsag[0]])
|
||||||
|
|
||||||
const kepzettsegModifier = SignedNumberToText(Modifier(tulajdonsagErtek) + szint)
|
const kepzettsegModifier = SignedNumberToText(Modifier(tulajdonsagErtek) + szint)
|
||||||
page.drawText(kepzettsegModifier, {
|
draw(kepzettsegModifier, kepzettsegModifier.length > 2 ? 172 : 175, startFrom - (i * 18))
|
||||||
x: kepzettsegModifier.length > 2 ? 172 : 175,
|
|
||||||
y: startFrom - (i * 18),
|
|
||||||
size: fontSizeBase,
|
|
||||||
font: pdfFont,
|
|
||||||
color: rgb(0, 0, 0),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,9 +290,9 @@ export async function CreatePDF(karakter: KarakterPdfView) {
|
|||||||
|
|
||||||
drawMentok(page, karakter, fontSizeBase, pdfFont);
|
drawMentok(page, karakter, fontSizeBase, pdfFont);
|
||||||
|
|
||||||
DrawKepzettsegek(page, fontSizeBase, pdfFont, karakter.Kepzettsegek, karakter.Tulajdonsagok, karakter.Szint, 337);
|
DrawKepzettsegek(drawText, karakter.Kepzettsegek, karakter.Tulajdonsagok, karakter.Szint, 337);
|
||||||
const nextKepzettsegFrom = 337 - (karakter.Kepzettsegek.length * 18)
|
const nextKepzettsegFrom = 337 - (karakter.Kepzettsegek.length * 18)
|
||||||
DrawKepzettsegek(page, fontSizeBase, pdfFont, karakter.TolvajKepzettsegek, karakter.Tulajdonsagok, karakter.Szint, nextKepzettsegFrom)
|
DrawKepzettsegek(drawText, karakter.TolvajKepzettsegek, karakter.Tulajdonsagok, karakter.Szint, nextKepzettsegFrom)
|
||||||
|
|
||||||
DrawMagic(page, fontSizeBase, pdfFont, karakter.NapiMemorizalhatoVarazslatok, karakter.VarazslatMentokNF)
|
DrawMagic(page, fontSizeBase, pdfFont, karakter.NapiMemorizalhatoVarazslatok, karakter.VarazslatMentokNF)
|
||||||
|
|
||||||
|
|||||||
@@ -6,19 +6,21 @@ import {
|
|||||||
import {Mentok, MentokAlap, MentoModositok} from "../domain-models/mentok";
|
import {Mentok, MentokAlap, MentoModositok} from "../domain-models/mentok";
|
||||||
import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek";
|
import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek";
|
||||||
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
||||||
import {Faj} from "../domain-models/faj";
|
import {Faj, FajLabel} from "../domain-models/faj";
|
||||||
import {Osztaly} from "../domain-models/osztaly";
|
import {Osztaly, OsztalyLabel} from "../domain-models/osztaly";
|
||||||
import {CelzoTB, KozelharciTB} from "../domain-models/tamadas_bonusz";
|
import {CelzoTB, KozelharciTB} from "../domain-models/tamadas_bonusz";
|
||||||
import {KarakterInputs} from "../domain-models/karakter";
|
import {KarakterInputs} from "../domain-models/karakter";
|
||||||
import {NapiVarazslatok, CalculateVarazslatMentokNF} from "../domain-models/memorizalt_varazslatok";
|
import {NapiVarazslatok, CalculateVarazslatMentokNF} from "../domain-models/memorizalt_varazslatok";
|
||||||
|
import {GetJellem} from "../domain-models/jellem";
|
||||||
|
|
||||||
export interface KarakterPdfView {
|
export interface KarakterPdfView {
|
||||||
Name: string
|
Name: string
|
||||||
Nem: string
|
Nem: string
|
||||||
Kor: number
|
Kor: number
|
||||||
Isten: string
|
Isten: string
|
||||||
Faj: Faj
|
Jellem: string
|
||||||
Osztaly: Osztaly
|
Faj: string
|
||||||
|
Osztaly: string
|
||||||
Tulajdonsagok: KarakterTulajdonsagok,
|
Tulajdonsagok: KarakterTulajdonsagok,
|
||||||
TulajdonsagModositok: KarakterTulajdonsagok,
|
TulajdonsagModositok: KarakterTulajdonsagok,
|
||||||
Szint: number
|
Szint: number
|
||||||
@@ -52,13 +54,14 @@ export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfVie
|
|||||||
const VarazslatMentokNF = CalculateVarazslatMentokNF(karakter)
|
const VarazslatMentokNF = CalculateVarazslatMentokNF(karakter)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
Faj: karakter.faj,
|
Faj: FajLabel(karakter.faj),
|
||||||
Isten: karakter.isten || "",
|
Isten: karakter.isten || "",
|
||||||
|
Jellem: GetJellem(karakter.jellem).Label,
|
||||||
Kor: karakter.kor,
|
Kor: karakter.kor,
|
||||||
Name: karakter.name,
|
Name: karakter.name,
|
||||||
Nem: karakter.nem || "",
|
Nem: karakter.nem || "",
|
||||||
Tulajdonsagok: karakter.tulajdonsagok,
|
Tulajdonsagok: karakter.tulajdonsagok,
|
||||||
Osztaly: karakter.osztaly,
|
Osztaly: OsztalyLabel(karakter.osztaly),
|
||||||
Szint: karakter.szint,
|
Szint: karakter.szint,
|
||||||
Kepzettsegek: karakter.kepzettsegek.map(id => Kepzettsegek[id]),
|
Kepzettsegek: karakter.kepzettsegek.map(id => Kepzettsegek[id]),
|
||||||
TolvajKepzettsegek: karakter.tolvajKepzettsegek?.map(id => Kepzettsegek[id]) || [],
|
TolvajKepzettsegek: karakter.tolvajKepzettsegek?.map(id => Kepzettsegek[id]) || [],
|
||||||
|
|||||||
Reference in New Issue
Block a user