add masodlagos ertekek at level 1 for 2E create character
This commit is contained in:
@@ -14,5 +14,23 @@
|
|||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Host=127.0.0.1;Port=5432;User Id=kemkas;Password=kemkas-dev42"
|
"DefaultConnection": "Host=127.0.0.1;Port=5432;User Id=kemkas;Password=kemkas-dev42"
|
||||||
|
},
|
||||||
|
"Email": {
|
||||||
|
"DomainName": "mail.kemkas.hu",
|
||||||
|
"ApiKey": "fake"
|
||||||
|
},
|
||||||
|
"Authentication": {
|
||||||
|
"Google": {
|
||||||
|
"ClientId": "fake",
|
||||||
|
"ClientSecret": "fake"
|
||||||
|
},
|
||||||
|
"Facebook": {
|
||||||
|
"ClientId": "fake",
|
||||||
|
"ClientSecret": "fake"
|
||||||
|
},
|
||||||
|
"Discord": {
|
||||||
|
"ClientId": "fake",
|
||||||
|
"ClientSecret": "fake"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import {KarakterInputs} from "../domain-models/karakter";
|
import {KarakterInputs} from "../domain-models/karakter";
|
||||||
import {SignedNumberToText} from "./Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import {Mentok, MentoTipus, MentoTipusLabel, MentokTotal} from "../domain-models/mentok";
|
import {Mentok, MentoTipus, MentoTipusLabel, MentokTotal} from "../domain-models/mentok";
|
||||||
import {BaseHP, HP} from "../domain-models/masodlagos_ertekek";
|
import {BaseHP, HP} from "../domain-models/masodlagos_ertekek";
|
||||||
import {TamadasBonusz} from "../domain-models/tamadas_bonusz";
|
import {TamadasBonusz} from "../domain-models/tamadas_bonusz";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import {OverlayTrigger, Tooltip} from "react-bootstrap";
|
import {OverlayTrigger, Tooltip} from "react-bootstrap";
|
||||||
import {SignedNumberToText} from "./Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import {MasodlagosErtekekView} from "../domain-models/masodlagos_ertekek";
|
import {MasodlagosErtekekView} from "../domain-models/masodlagos_ertekek";
|
||||||
|
|
||||||
function MasodlagosErtekek(props: MasodlagosErtekekView) {
|
function MasodlagosErtekek(props: MasodlagosErtekekView) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React from "react";
|
|||||||
|
|
||||||
import {Faj, FajLabel} from "../domain-models/faj";
|
import {Faj, FajLabel} from "../domain-models/faj";
|
||||||
import {Modifier} from "../domain-models/tulajdonsag";
|
import {Modifier} from "../domain-models/tulajdonsag";
|
||||||
import {SignedNumberToText} from "./Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
|
||||||
|
|
||||||
function fajiModositoText(faj: Faj, szamolas: (f: Faj) => number) : string {
|
function fajiModositoText(faj: Faj, szamolas: (f: Faj) => number) : string {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
TulajdonsagIDs,
|
TulajdonsagIDs,
|
||||||
TulajdonsagLabel
|
TulajdonsagLabel
|
||||||
} from "../domain-models/tulajdonsag";
|
} from "../domain-models/tulajdonsag";
|
||||||
import {SignedNumberToText} from "./Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
|
||||||
function TulajdonsagNoveles(props: {tulajdonsagok: KarakterTulajdonsagok, szint: number, tulajdonsagNovelesek: Tulajdonsag[], changeTulajdonsagNoveles: (tulajdonsag: Tulajdonsag) => void}) {
|
function TulajdonsagNoveles(props: {tulajdonsagok: KarakterTulajdonsagok, szint: number, tulajdonsagNovelesek: Tulajdonsag[], changeTulajdonsagNoveles: (tulajdonsag: Tulajdonsag) => void}) {
|
||||||
const {tulajdonsagok, szint, tulajdonsagNovelesek, changeTulajdonsagNoveles} = props
|
const {tulajdonsagok, szint, tulajdonsagNovelesek, changeTulajdonsagNoveles} = props
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {KarakterPdfView, KepzettsegPdfView} from "./karakter_pdf_view";
|
import {KarakterPdfView, KepzettsegPdfView} from "./karakter_pdf_view";
|
||||||
import {PDFDocument, rgb} from "pdf-lib";
|
import {PDFDocument, rgb} from "pdf-lib";
|
||||||
import fontkit from '@pdf-lib/fontkit'
|
import fontkit from '@pdf-lib/fontkit'
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import download from "downloadjs";
|
import download from "downloadjs";
|
||||||
import {DrawTulajdonsagok} from "./tulajdonsagok.pdf";
|
import {DrawTulajdonsagok} from "./tulajdonsagok.pdf";
|
||||||
import {DrawMentok} from "./mentok.pdf";
|
import {DrawMentok} from "./mentok.pdf";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {KarakterPdfView} from "./karakter_pdf_view";
|
import {KarakterPdfView} from "./karakter_pdf_view";
|
||||||
import {PDFFont, PDFPage} from "pdf-lib";
|
import {PDFFont, PDFPage} from "pdf-lib";
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
|
||||||
function fitTextInWidth(font: PDFFont, text: string, startingSize: number, maxWidth: number): number {
|
function fitTextInWidth(font: PDFFont, text: string, startingSize: number, maxWidth: number): number {
|
||||||
let size = startingSize
|
let size = startingSize
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {KarakterInputs} from "../domain-models/karakter";
|
|||||||
import {CalculateVarazslatMentokNF, NapiVarazslatok} from "../domain-models/memorizalt_varazslatok";
|
import {CalculateVarazslatMentokNF, NapiVarazslatok} from "../domain-models/memorizalt_varazslatok";
|
||||||
import {GetJellem} from "../domain-models/jellem";
|
import {GetJellem} from "../domain-models/jellem";
|
||||||
import {Fegyver, GetFegyverek, GetPajzs, GetPancel} from '../domain-models/felszereles'
|
import {Fegyver, GetFegyverek, GetPajzs, GetPancel} from '../domain-models/felszereles'
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import {OsztalySkillsTordelt} from "./osztaly_skills";
|
import {OsztalySkillsTordelt} from "./osztaly_skills";
|
||||||
import {
|
import {
|
||||||
KarakterTulajdonsagok,
|
KarakterTulajdonsagok,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {PDFFont, PDFPage} from "pdf-lib";
|
import {PDFFont, PDFPage} from "pdf-lib";
|
||||||
import {KarakterPdfView} from "./karakter_pdf_view";
|
import {KarakterPdfView} from "./karakter_pdf_view";
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
|
||||||
export function DrawMasodlagosErtekek(
|
export function DrawMasodlagosErtekek(
|
||||||
page: PDFPage,
|
page: PDFPage,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {PDFFont, PDFPage, rgb} from "pdf-lib";
|
import {PDFFont, PDFPage, rgb} from "pdf-lib";
|
||||||
import {KarakterPdfView} from "./karakter_pdf_view";
|
import {KarakterPdfView} from "./karakter_pdf_view";
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import {Modifier} from "../domain-models/tulajdonsag";
|
import {Modifier} from "../domain-models/tulajdonsag";
|
||||||
|
|
||||||
export function DrawMentok(page: PDFPage, karakter: KarakterPdfView, fontSizeBase: number, pdfFont: PDFFont) {
|
export function DrawMentok(page: PDFPage, karakter: KarakterPdfView, fontSizeBase: number, pdfFont: PDFFont) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {PDFFont, PDFPage, rgb} from "pdf-lib";
|
import {PDFFont, PDFPage, rgb} from "pdf-lib";
|
||||||
import {SignedNumberToText} from "../components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
||||||
|
|
||||||
export function DrawTulajdonsagok(page: PDFPage, tulajdonsagok: KarakterTulajdonsagok, fontSizeBase: number, pdfFont: PDFFont) {
|
export function DrawTulajdonsagok(page: PDFPage, tulajdonsagok: KarakterTulajdonsagok, fontSizeBase: number, pdfFont: PDFFont) {
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import React from "react";
|
||||||
|
import {OverlayTrigger, Tooltip} from "react-bootstrap";
|
||||||
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
import {MasodlagosErtekekView} from "../domain-models/masodlagos_ertekek";
|
||||||
|
|
||||||
|
function MasodlagosErtekek(props: MasodlagosErtekekView) {
|
||||||
|
|
||||||
|
const { HP, VO, CelzoTB, Mentok, KozelharciTB } = props
|
||||||
|
|
||||||
|
const tooltip = (
|
||||||
|
<Tooltip id="tooltip">
|
||||||
|
<strong>Hentelési Potenciál</strong>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <>
|
||||||
|
<div className='row'>
|
||||||
|
<h5 className='col align-self-center'>Másodlagos értékek</h5>
|
||||||
|
</div>
|
||||||
|
<div className='row'>
|
||||||
|
<div className='col-lg-6'>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label'>Életerő{' '}
|
||||||
|
<OverlayTrigger placement='top' overlay={tooltip} delay={0} defaultShow={false} flip={false}>
|
||||||
|
<span>(HP)</span>
|
||||||
|
</OverlayTrigger>
|
||||||
|
</label>
|
||||||
|
<p className='col col-form-label'>{HP}</p>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Védekezési Osztály (VO)</label>
|
||||||
|
<p className='col col-form-label'>{VO}</p>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Közelharci támadás</label>
|
||||||
|
<p className='col col-form-label'>{KozelharciTB.map(SignedNumberToText).join(" / ")}</p>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Célzó támadás</label>
|
||||||
|
<p className='col col-form-label'>{CelzoTB.map(SignedNumberToText).join(" / ")}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className='col-lg-6'>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Kitartás mentő</label>
|
||||||
|
<p className='col col-form-label'>{SignedNumberToText(Mentok.kitartas)}</p>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Reflex mentő</label>
|
||||||
|
<p className='col col-form-label'>{SignedNumberToText(Mentok.reflex)}</p>
|
||||||
|
</div>
|
||||||
|
<div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label' >Akaraterő mentő </label>
|
||||||
|
<p className='col col-form-label'>{SignedNumberToText(Mentok.akaratero)}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MasodlagosErtekek
|
||||||
@@ -17,6 +17,8 @@ export interface Karakter2E {
|
|||||||
kalozKritikus: string[],
|
kalozKritikus: string[],
|
||||||
kepzettsegek: KepzettsegId[]
|
kepzettsegek: KepzettsegId[]
|
||||||
tolvajKepzettsegek?: KepzettsegId[]
|
tolvajKepzettsegek?: KepzettsegId[]
|
||||||
|
szint: number,
|
||||||
|
hpRolls: number[]
|
||||||
}
|
}
|
||||||
export const DefaultKarakter: Karakter2E = {
|
export const DefaultKarakter: Karakter2E = {
|
||||||
name: 'Névtelen Kalandozó',
|
name: 'Névtelen Kalandozó',
|
||||||
@@ -29,4 +31,6 @@ export const DefaultKarakter: Karakter2E = {
|
|||||||
kalozKritikus: [],
|
kalozKritikus: [],
|
||||||
kepzettsegek: [],
|
kepzettsegek: [],
|
||||||
tolvajKepzettsegek: [],
|
tolvajKepzettsegek: [],
|
||||||
|
szint: 1,
|
||||||
|
hpRolls: []
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
import {Mentok, MentokTotal} from "./mentok";
|
||||||
|
import {Osztaly2E} from "./osztaly2E";
|
||||||
|
import {Karakter2E} from "./karakter2E";
|
||||||
|
import {CelzoTB, KozelharciTB} from "./tamadas_bonusz";
|
||||||
|
import {Faj2E} from "./faj2E";
|
||||||
|
// import { GetPajzs, GetPancel, MaxAbilityVO } from "./felszereles";
|
||||||
|
import {Modifier} from "./tulajdonsag2E";
|
||||||
|
|
||||||
|
export interface MasodlagosErtekekView {
|
||||||
|
HP: number
|
||||||
|
VO: number
|
||||||
|
KozelharciTB: number[]
|
||||||
|
CelzoTB: number[]
|
||||||
|
Mentok: Mentok
|
||||||
|
}
|
||||||
|
|
||||||
|
export type KarakterpickForMasodlagosErtekek = Pick<Karakter2E, 'osztaly' | 'hpRolls' | 'tulajdonsagok' | 'szint' | 'faj'>
|
||||||
|
|
||||||
|
export function BaseHP(osztaly: Osztaly2E) {
|
||||||
|
let base = 4;
|
||||||
|
switch (osztaly){
|
||||||
|
case Osztaly2E.Barbar:
|
||||||
|
base = 12
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Amazon:
|
||||||
|
case Osztaly2E.Ijasz:
|
||||||
|
case Osztaly2E.Tengeresz:
|
||||||
|
case Osztaly2E.Harcos:
|
||||||
|
case Osztaly2E.Vandor:
|
||||||
|
base = 10;
|
||||||
|
break
|
||||||
|
case Osztaly2E.Pap:
|
||||||
|
case Osztaly2E.Druida:
|
||||||
|
base = 8;
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Tolvaj:
|
||||||
|
case Osztaly2E.Dalnok:
|
||||||
|
base = 6;
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Varazslo:
|
||||||
|
case Osztaly2E.Illuzionista:
|
||||||
|
base = 4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
|
||||||
|
export function HP(karakter: Pick<Karakter2E, 'osztaly' | 'tulajdonsagok' | 'hpRolls'>): number {
|
||||||
|
const egeszsegModifier = Modifier(karakter.tulajdonsagok.t_egs)
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function VO(karakter: Pick<Karakter2E, 'tulajdonsagok' | 'faj' | 'osztaly' | 'szint'>): number {
|
||||||
|
// const pancel = GetPancel(karakter.felszereles.pancelID)
|
||||||
|
// const pancelVO = pancel?.VO ?? 0
|
||||||
|
// const pajzsVO = GetPajzs(karakter.felszereles.pajzsID)?.VO ?? 0
|
||||||
|
// let vo = 10 + pajzsVO + pancelVO
|
||||||
|
let vo = 10
|
||||||
|
let abilityVO = Modifier(karakter.tulajdonsagok.t_ugy)
|
||||||
|
if (karakter.osztaly === Osztaly2E.Tengeresz) {
|
||||||
|
vo += Math.floor(karakter.szint / 3)
|
||||||
|
}
|
||||||
|
if (karakter.osztaly === Osztaly2E.Amazon) {
|
||||||
|
if (karakter.tulajdonsagok.t_kar > karakter.tulajdonsagok.t_ugy) {
|
||||||
|
abilityVO = Modifier(karakter.tulajdonsagok.t_kar)
|
||||||
|
}
|
||||||
|
vo += Math.floor(karakter.szint / 2)
|
||||||
|
}
|
||||||
|
if (karakter.faj === Faj2E.Felszerzet || karakter.faj === Faj2E.Gnom){
|
||||||
|
vo += 1
|
||||||
|
}
|
||||||
|
// if (pancel) {
|
||||||
|
// abilityVO = Math.min(MaxAbilityVO(pancel.Type), abilityVO)
|
||||||
|
// }
|
||||||
|
vo += abilityVO
|
||||||
|
|
||||||
|
return vo
|
||||||
|
}
|
||||||
|
|
||||||
|
export function CalculateMasodlagosErtekek(karakter: KarakterpickForMasodlagosErtekek): MasodlagosErtekekView {
|
||||||
|
return {
|
||||||
|
HP: HP(karakter),
|
||||||
|
VO: VO(karakter),
|
||||||
|
CelzoTB: CelzoTB(karakter),
|
||||||
|
KozelharciTB: KozelharciTB(karakter),
|
||||||
|
Mentok: MentokTotal(karakter)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
import {Osztaly2E} from "./osztaly2E";
|
||||||
|
import {Karakter2E} from "./karakter2E";
|
||||||
|
import {KarakterTulajdonsagok, TulajdonsagModosito} from "./tulajdonsag2E";
|
||||||
|
|
||||||
|
export interface Mentok {
|
||||||
|
kitartas: number
|
||||||
|
reflex: number
|
||||||
|
akaratero: number
|
||||||
|
}
|
||||||
|
export type MentoTipus = keyof Mentok
|
||||||
|
|
||||||
|
export function MentoTipusLabel(tipus: MentoTipus): string {
|
||||||
|
switch (tipus) {
|
||||||
|
case "akaratero":
|
||||||
|
return "Akaraterő";
|
||||||
|
case "kitartas":
|
||||||
|
return "Kitartás";
|
||||||
|
case "reflex":
|
||||||
|
return "Reflex";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ElsodlegesMento(szint: number): number {
|
||||||
|
return 2 + Math.floor(szint / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function MasodlagosMento(szint: number): number {
|
||||||
|
return Math.floor(szint / 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ElsodlegesMentok(osztaly: Osztaly2E) : MentoTipus[] {
|
||||||
|
let t: MentoTipus[] = []
|
||||||
|
switch (osztaly){
|
||||||
|
case Osztaly2E.Barbar:
|
||||||
|
case Osztaly2E.Amazon:
|
||||||
|
case Osztaly2E.Ijasz:
|
||||||
|
case Osztaly2E.Tengeresz:
|
||||||
|
case Osztaly2E.Harcos:
|
||||||
|
case Osztaly2E.Vandor:
|
||||||
|
t = ['kitartas'];
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Druida:
|
||||||
|
case Osztaly2E.Pap:
|
||||||
|
t = ['kitartas', 'akaratero'];
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Tolvaj:
|
||||||
|
case Osztaly2E.Dalnok:
|
||||||
|
t = ['reflex'];
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Varazslo:
|
||||||
|
case Osztaly2E.Illuzionista:
|
||||||
|
t = ['akaratero']
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function MentokAlap(osztaly: Osztaly2E, szint: number = 1) {
|
||||||
|
const elsodlegesek = ElsodlegesMentok(osztaly)
|
||||||
|
return {
|
||||||
|
kitartas: elsodlegesek.includes('kitartas') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||||
|
reflex: elsodlegesek.includes('reflex') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||||
|
akaratero: elsodlegesek.includes('akaratero') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function MentoModositok(tulajdonsagModositok: KarakterTulajdonsagok) {
|
||||||
|
return {
|
||||||
|
kitartas: tulajdonsagModositok.t_egs,
|
||||||
|
reflex: tulajdonsagModositok.t_ugy,
|
||||||
|
akaratero: tulajdonsagModositok.t_bol,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function MentokTotal(karakter: Pick<Karakter2E, 'osztaly' | 'szint' | 'tulajdonsagok'>) {
|
||||||
|
const alap = MentokAlap(karakter.osztaly, karakter.szint)
|
||||||
|
const modositok = MentoModositok(TulajdonsagModosito(karakter.tulajdonsagok))
|
||||||
|
return {
|
||||||
|
kitartas: alap.kitartas + modositok.kitartas,
|
||||||
|
reflex: alap.reflex + modositok.reflex,
|
||||||
|
akaratero: alap.akaratero + modositok.akaratero,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import {Osztaly2E} from "./osztaly2E";
|
||||||
|
import {Karakter2E} from "./karakter2E";
|
||||||
|
import {Modifier} from "./tulajdonsag2E";
|
||||||
|
|
||||||
|
/// Finally second edition doesn't mess with the extra attack of high level clerics rouges and wizards!
|
||||||
|
function ExtraAttack(attack: number): number[] {
|
||||||
|
if (attack < 6) {
|
||||||
|
return [attack]
|
||||||
|
}
|
||||||
|
return [Math.min(attack, 10), ...ExtraAttack(attack - 5)]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function TamadasBonusz(osztaly: Osztaly2E, szint: number = 1) : number[] {
|
||||||
|
let base = 0
|
||||||
|
switch (osztaly){
|
||||||
|
case Osztaly2E.Barbar:
|
||||||
|
case Osztaly2E.Amazon:
|
||||||
|
case Osztaly2E.Ijasz:
|
||||||
|
case Osztaly2E.Tengeresz:
|
||||||
|
case Osztaly2E.Harcos:
|
||||||
|
case Osztaly2E.Vandor:
|
||||||
|
base = szint;
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Pap:
|
||||||
|
case Osztaly2E.Tolvaj:
|
||||||
|
case Osztaly2E.Dalnok:
|
||||||
|
case Osztaly2E.Druida:
|
||||||
|
base = Math.floor(szint * 2 / 3);
|
||||||
|
break;
|
||||||
|
case Osztaly2E.Varazslo:
|
||||||
|
case Osztaly2E.Illuzionista:
|
||||||
|
base = Math.floor(szint / 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ExtraAttack(base)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function KozelharciTB(karakter : Pick<Karakter2E, 'szint' | 'tulajdonsagok' | 'osztaly'>): number[] {
|
||||||
|
const base = TamadasBonusz(karakter.osztaly, karakter.szint);
|
||||||
|
let modifier = Modifier(karakter.tulajdonsagok.t_ero)
|
||||||
|
return base.map(v => v + modifier)
|
||||||
|
}
|
||||||
|
export function CelzoTB(karakter : Pick<Karakter2E, 'szint' | 'tulajdonsagok' | 'osztaly'>): number[] {
|
||||||
|
let base = TamadasBonusz(karakter.osztaly, karakter.szint)
|
||||||
|
return base.map(v => v + Modifier(karakter.tulajdonsagok.t_ugy))
|
||||||
|
}
|
||||||
@@ -16,6 +16,8 @@ import {
|
|||||||
import KarakterKepzettsegek from "../components/KarakterKepzettsegek2E";
|
import KarakterKepzettsegek from "../components/KarakterKepzettsegek2E";
|
||||||
import {TulajdonsagokFajjal} from "../domain-models/faj2E";
|
import {TulajdonsagokFajjal} from "../domain-models/faj2E";
|
||||||
import JellemSelector from "../components/JellemSelector";
|
import JellemSelector from "../components/JellemSelector";
|
||||||
|
import MasodlagosErtekek from "../components/MasodlagosErtekek";
|
||||||
|
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
||||||
|
|
||||||
function CreateCharacter2E(props: {}) {
|
function CreateCharacter2E(props: {}) {
|
||||||
|
|
||||||
@@ -109,6 +111,14 @@ function CreateCharacter2E(props: {}) {
|
|||||||
changeTolvajKepzettsegek={changeTolvajKepzettseg}
|
changeTolvajKepzettsegek={changeTolvajKepzettseg}
|
||||||
/>
|
/>
|
||||||
<hr />
|
<hr />
|
||||||
|
{/* 1. szinten */}
|
||||||
|
<MasodlagosErtekek {...CalculateMasodlagosErtekek({
|
||||||
|
...karakter,
|
||||||
|
tulajdonsagok: tulajdonsagokFajjal,
|
||||||
|
szint: 1,
|
||||||
|
hpRolls: []
|
||||||
|
})} />
|
||||||
|
<hr />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function Header(props: {}) {
|
|||||||
<Navbar expand="sm" className="navbar-light bg-white border-bottom box-shadow mb-3">
|
<Navbar expand="sm" className="navbar-light bg-white border-bottom box-shadow mb-3">
|
||||||
<Container className="ps-4 pe-4">
|
<Container className="ps-4 pe-4">
|
||||||
<Navbar.Brand href="/">Kemkas</Navbar.Brand>
|
<Navbar.Brand href="/">Kemkas</Navbar.Brand>
|
||||||
<Nav.Link className="text-dark" href="/karaktereim">Karaktereim</Nav.Link>
|
{fetchedUser.data != null && <Nav.Link className="text-dark" href="/karaktereim">Karaktereim</Nav.Link>}
|
||||||
<Navbar.Toggle aria-controls="basic-navbar-nav" />
|
<Navbar.Toggle aria-controls="basic-navbar-nav" />
|
||||||
<Navbar.Collapse id="basic-navbar-nav" className="d-sm-inline-flex flex-sm-row-reverse">
|
<Navbar.Collapse id="basic-navbar-nav" className="d-sm-inline-flex flex-sm-row-reverse">
|
||||||
<Nav>
|
<Nav>
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// TODO: move to shared!
|
|
||||||
export function SignedNumberToText(val: number) : string {
|
export function SignedNumberToText(val: number) : string {
|
||||||
return val === 0 ? " 0" : (val > 0 ? '+'+val : val.toString())
|
return val === 0 ? " 0" : (val > 0 ? '+'+val : val.toString())
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user