level up to 2 almost working
This commit is contained in:
@@ -1,6 +1,29 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import {KarakterClass, KarakterInputs} from "../domain-models/karakter";
|
import {KarakterClass, KarakterInputs} from "../domain-models/karakter";
|
||||||
import {SignedNumberToText} from "./Helpers";
|
import {SignedNumberToText} from "./Helpers";
|
||||||
|
import {Mentok, MentoTipus, MentoTipusLabel} from "../domain-models/mentok";
|
||||||
|
|
||||||
|
function MentoNovekedes(props : {tipus: MentoTipus, ujMentok: Mentok, regiMentok: Mentok}) {
|
||||||
|
const {tipus, ujMentok, regiMentok} = props
|
||||||
|
if (ujMentok[tipus] === regiMentok[tipus]) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return <div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label'>{MentoTipusLabel(tipus)} mentő növekedés{' '}</label>
|
||||||
|
<span className='col col-form-label'>{SignedNumberToText(ujMentok[tipus] - regiMentok[tipus])}</span>
|
||||||
|
</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UjMento(props : {tipus: MentoTipus, ujMentok: Mentok, regiMentok: Mentok}) {
|
||||||
|
const {tipus, ujMentok, regiMentok} = props
|
||||||
|
if (ujMentok[tipus] === regiMentok[tipus]) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return <div className='row m-2'>
|
||||||
|
<label className='col-sm-6 col-8 col-form-label'>{MentoTipusLabel(tipus)} mentő új értéke{' '}</label>
|
||||||
|
<span className='col col-form-label'>{SignedNumberToText(ujMentok[tipus])}</span>
|
||||||
|
</div>;
|
||||||
|
}
|
||||||
|
|
||||||
function Level2(props: {
|
function Level2(props: {
|
||||||
karakter: KarakterInputs
|
karakter: KarakterInputs
|
||||||
@@ -9,6 +32,8 @@ function Level2(props: {
|
|||||||
}) {
|
}) {
|
||||||
const {karakter, rolledHP, changeRolledHP} = props
|
const {karakter, rolledHP, changeRolledHP} = props
|
||||||
const karakterClass = new KarakterClass(karakter)
|
const karakterClass = new KarakterClass(karakter)
|
||||||
|
const regiMentok = karakterClass.MentokTulajdonsaggal(karakter.szint - 1)
|
||||||
|
const ujMentok = karakterClass.MentokTulajdonsaggal(karakter.szint)
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
@@ -33,10 +58,9 @@ function Level2(props: {
|
|||||||
<label className='col-sm-6 col-8 col-form-label'>Támadás bónusz növekedés{' '}</label>
|
<label className='col-sm-6 col-8 col-form-label'>Támadás bónusz növekedés{' '}</label>
|
||||||
<span className='col col-form-label'>+1</span>
|
<span className='col col-form-label'>+1</span>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<MentoNovekedes tipus={'kitartas'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
<label className='col-sm-6 col-8 col-form-label'>Elsődleges mentő{' '}</label>
|
<MentoNovekedes tipus={'reflex'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
<span className='col col-form-label'>+1</span>
|
<MentoNovekedes tipus={'akaratero'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div className='col-lg-6'>
|
<div className='col-lg-6'>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
@@ -47,10 +71,9 @@ function Level2(props: {
|
|||||||
<label className='col-sm-6 col-8 col-form-label'>Új Támadás bónusz{' '}</label>
|
<label className='col-sm-6 col-8 col-form-label'>Új Támadás bónusz{' '}</label>
|
||||||
<span className='col col-form-label'>{karakterClass.TamadasBonusz().map(SignedNumberToText).join("/")}</span>
|
<span className='col col-form-label'>{karakterClass.TamadasBonusz().map(SignedNumberToText).join("/")}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<UjMento tipus={'kitartas'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
<label className='col-sm-6 col-8 col-form-label'>Új Mentő{' '}</label>
|
<UjMento tipus={'reflex'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
<span className='col col-form-label'>{SignedNumberToText(karakterClass.KitartasMentoAlap())}</span>
|
<UjMento tipus={'akaratero'} ujMentok={ujMentok} regiMentok={regiMentok} />
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
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 "./Helpers";
|
||||||
import {KarakterMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
import {Karakter} from "../domain-models/karakter";
|
||||||
|
|
||||||
|
|
||||||
function MasodlagosErtekek(props: {ertekek: KarakterMasodlagosErtekek}) {
|
function MasodlagosErtekek(props: {karakter: Karakter}) {
|
||||||
|
|
||||||
const { ertekek } = props
|
const { karakter } = props
|
||||||
|
|
||||||
const tooltip = (
|
const tooltip = (
|
||||||
<Tooltip id="tooltip">
|
<Tooltip id="tooltip">
|
||||||
<strong>Hentelési Potenciál</strong>
|
<strong>Hentelési Potenciál</strong>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
);
|
);
|
||||||
|
const mentok = karakter.MentokTulajdonsaggal(1)
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
@@ -26,33 +27,33 @@ function MasodlagosErtekek(props: {ertekek: KarakterMasodlagosErtekek}) {
|
|||||||
<span>(HP)</span>
|
<span>(HP)</span>
|
||||||
</OverlayTrigger>
|
</OverlayTrigger>
|
||||||
</label>
|
</label>
|
||||||
<p className='col col-form-label'>{ertekek.HP}</p>
|
<p className='col col-form-label'>{karakter.HP()}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Védekezési Osztály (VO)</label>
|
<label className='col-sm-6 col-8 col-form-label' >Védekezési Osztály (VO)</label>
|
||||||
<p className='col col-form-label'>{ertekek.VO}</p>
|
<p className='col col-form-label'>{karakter.VO()}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Közelharci támadás</label>
|
<label className='col-sm-6 col-8 col-form-label' >Közelharci támadás</label>
|
||||||
<p className='col col-form-label'>{SignedNumberToText(ertekek.KozelHarciTB)}</p>
|
<p className='col col-form-label'>{SignedNumberToText(karakter.KozelharciTB(1)[0])}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Célzó támadás</label>
|
<label className='col-sm-6 col-8 col-form-label' >Célzó támadás</label>
|
||||||
<p className='col col-form-label'>{SignedNumberToText(ertekek.CelzoTB)}</p>
|
<p className='col col-form-label'>{SignedNumberToText(karakter.CelzoTB(1)[0])}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='col-lg-6'>
|
<div className='col-lg-6'>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Kitartás mentő</label>
|
<label className='col-sm-6 col-8 col-form-label' >Kitartás mentő</label>
|
||||||
<p className='col col-form-label'>{SignedNumberToText(ertekek.KitartasMento)}</p>
|
<p className='col col-form-label'>{SignedNumberToText(mentok.kitartas)}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Reflex mentő</label>
|
<label className='col-sm-6 col-8 col-form-label' >Reflex mentő</label>
|
||||||
<p className='col col-form-label'>{SignedNumberToText(ertekek.ReflexMento)}</p>
|
<p className='col col-form-label'>{SignedNumberToText(mentok.reflex)}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label' >Akaraterő mentő </label>
|
<label className='col-sm-6 col-8 col-form-label' >Akaraterő mentő </label>
|
||||||
<p className='col col-form-label'>{SignedNumberToText(ertekek.AkarateroMento)}</p>
|
<p className='col col-form-label'>{SignedNumberToText(mentok.akaratero)}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {Faj} from "./faj";
|
import {Faj} from "./faj";
|
||||||
import {Osztaly} from "./osztaly";
|
import {Osztaly} from "./osztaly";
|
||||||
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag";
|
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag";
|
||||||
import {CalculateMasodlagosErtekek, KarakterMasodlagosErtekek} from "./masodlagos_ertekek";
|
|
||||||
import {Kepzettseg, Kepzettsegek, KepzettsegId} from "./kepzettsegek";
|
import {Kepzettseg, Kepzettsegek, KepzettsegId} from "./kepzettsegek";
|
||||||
import TamadasBonuszTabla from './tamadas_bonus_tabla.json';
|
import TamadasBonuszTabla from './tamadas_bonus_tabla.json';
|
||||||
|
import {ElsodlegesMento, MasodlagosMento, Mentok, MentoTipus} from "./mentok";
|
||||||
|
|
||||||
export interface Karakter {
|
export interface Karakter {
|
||||||
Name: string
|
Name: string
|
||||||
@@ -18,11 +18,11 @@ export interface Karakter {
|
|||||||
VO: () => number
|
VO: () => number
|
||||||
Mozgas: () => number
|
Mozgas: () => number
|
||||||
Kezdemenyezes: () => number
|
Kezdemenyezes: () => number
|
||||||
KozelharciTB: () => number[]
|
KozelharciTB: (szint?: number) => number[]
|
||||||
CelzoTB: () => number[]
|
CelzoTB: (szint?: number) => number[]
|
||||||
KitartasMentoAlap: () => number
|
ElsodlegesMentok: () => MentoTipus[]
|
||||||
ReflexMentoAlap: () => number
|
MentokAlap: (szint?: number) => Mentok
|
||||||
AkarateroMentoAlap: () => number
|
MentokTulajdonsaggal: (szint?: number) => Mentok
|
||||||
Kepzettsegek: Kepzettseg[]
|
Kepzettsegek: Kepzettseg[]
|
||||||
TolvajKepzettsegek: Kepzettseg[]
|
TolvajKepzettsegek: Kepzettseg[]
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,6 @@ export class KarakterClass implements Karakter {
|
|||||||
public Kepzettsegek: Kepzettseg[]
|
public Kepzettsegek: Kepzettseg[]
|
||||||
public TolvajKepzettsegek: Kepzettseg[]
|
public TolvajKepzettsegek: Kepzettseg[]
|
||||||
|
|
||||||
private MasodlagosErtekek : KarakterMasodlagosErtekek
|
|
||||||
private HProlls: number[]
|
private HProlls: number[]
|
||||||
|
|
||||||
constructor(inputs: KarakterInputs) {
|
constructor(inputs: KarakterInputs) {
|
||||||
@@ -65,7 +64,6 @@ export class KarakterClass implements Karakter {
|
|||||||
this.Faj = inputs.faj
|
this.Faj = inputs.faj
|
||||||
this.Osztaly = inputs.osztaly
|
this.Osztaly = inputs.osztaly
|
||||||
this.Tulajdonsagok = inputs.tulajdonsagok
|
this.Tulajdonsagok = inputs.tulajdonsagok
|
||||||
this.MasodlagosErtekek = CalculateMasodlagosErtekek(inputs.osztaly, inputs.tulajdonsagok)
|
|
||||||
this.Kepzettsegek = inputs.kepzettsegek.map(k => Kepzettsegek[k])
|
this.Kepzettsegek = inputs.kepzettsegek.map(k => Kepzettsegek[k])
|
||||||
this.TolvajKepzettsegek = (inputs.tolvajKepzettsegek || []).map(k => Kepzettsegek[k])
|
this.TolvajKepzettsegek = (inputs.tolvajKepzettsegek || []).map(k => Kepzettsegek[k])
|
||||||
this.Szint = Math.min(Math.max(1,inputs.szint), 20)
|
this.Szint = Math.min(Math.max(1,inputs.szint), 20)
|
||||||
@@ -77,7 +75,7 @@ export class KarakterClass implements Karakter {
|
|||||||
.map(hp => Math.max(1, hp + Modifier(this.Tulajdonsagok.t_egs)))
|
.map(hp => Math.max(1, hp + Modifier(this.Tulajdonsagok.t_egs)))
|
||||||
.reduce((sum, val) => sum + val, 0)
|
.reduce((sum, val) => sum + val, 0)
|
||||||
|
|
||||||
public VO = () => this.MasodlagosErtekek.VO
|
public VO = () => 10 + Modifier(this.Tulajdonsagok.t_ugy)
|
||||||
|
|
||||||
public Mozgas = () => this.Faj === Faj.Torpe ? 20 : 30
|
public Mozgas = () => this.Faj === Faj.Torpe ? 20 : 30
|
||||||
|
|
||||||
@@ -85,7 +83,7 @@ export class KarakterClass implements Karakter {
|
|||||||
return Modifier(this.Tulajdonsagok.t_ugy) + (this.Osztaly === Osztaly.Tolvaj ? 4 : 0)
|
return Modifier(this.Tulajdonsagok.t_ugy) + (this.Osztaly === Osztaly.Tolvaj ? 4 : 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
public TamadasBonusz() : number[] {
|
public TamadasBonusz(szint: number = this.Szint) : number[] {
|
||||||
let base = []
|
let base = []
|
||||||
switch (this.Osztaly){
|
switch (this.Osztaly){
|
||||||
case Osztaly.Barbar:
|
case Osztaly.Barbar:
|
||||||
@@ -104,70 +102,64 @@ export class KarakterClass implements Karakter {
|
|||||||
base = TamadasBonuszTabla['feles'];
|
base = TamadasBonuszTabla['feles'];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return base[this.Szint-1]
|
return base[szint-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
public KozelharciTB(): number[] {
|
public KozelharciTB(szint: number = this.Szint): number[] {
|
||||||
const base = this.TamadasBonusz();
|
const base = this.TamadasBonusz(szint);
|
||||||
let modifier = Modifier(this.Tulajdonsagok.t_ero)
|
let modifier = Modifier(this.Tulajdonsagok.t_ero)
|
||||||
if (this.Osztaly === Osztaly.Kaloz && this.Tulajdonsagok.t_ugy > this.Tulajdonsagok.t_ero) {
|
if (this.Osztaly === Osztaly.Kaloz && this.Tulajdonsagok.t_ugy > this.Tulajdonsagok.t_ero) {
|
||||||
modifier = Modifier(this.Tulajdonsagok.t_ugy)
|
modifier = Modifier(this.Tulajdonsagok.t_ugy)
|
||||||
}
|
}
|
||||||
return base.map(v => v + modifier)
|
return base.map(v => v + modifier)
|
||||||
}
|
}
|
||||||
public CelzoTB(): number[] {
|
public CelzoTB(szint: number = this.Szint): number[] {
|
||||||
let base = this.TamadasBonusz()
|
let base = this.TamadasBonusz(szint)
|
||||||
if (this.Osztaly === Osztaly.Ijasz) {
|
if (this.Osztaly === Osztaly.Ijasz) {
|
||||||
base = [base[0], ...base]
|
base = [base[0], ...base]
|
||||||
}
|
}
|
||||||
return base.map(v => v + Modifier(this.Tulajdonsagok.t_ugy))
|
return base.map(v => v + Modifier(this.Tulajdonsagok.t_ugy))
|
||||||
}
|
}
|
||||||
|
|
||||||
public KitartasMentoAlap() : number {
|
public ElsodlegesMentok() : MentoTipus[] {
|
||||||
|
let t: MentoTipus[] = []
|
||||||
switch (this.Osztaly){
|
switch (this.Osztaly){
|
||||||
case Osztaly.Barbar:
|
case Osztaly.Barbar:
|
||||||
case Osztaly.Amazon:
|
case Osztaly.Amazon:
|
||||||
case Osztaly.Ijasz:
|
case Osztaly.Ijasz:
|
||||||
case Osztaly.Kaloz:
|
case Osztaly.Kaloz:
|
||||||
case Osztaly.Harcos:
|
case Osztaly.Harcos:
|
||||||
|
t = ['kitartas'];
|
||||||
|
break;
|
||||||
case Osztaly.Pap:
|
case Osztaly.Pap:
|
||||||
return 2;
|
t = ['kitartas', 'akaratero'];
|
||||||
|
break;
|
||||||
case Osztaly.Tolvaj:
|
case Osztaly.Tolvaj:
|
||||||
|
t = ['reflex'];
|
||||||
|
break;
|
||||||
case Osztaly.Varazslo:
|
case Osztaly.Varazslo:
|
||||||
case Osztaly.Illuzionista:
|
case Osztaly.Illuzionista:
|
||||||
return 0;
|
t = ['akaratero']
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
public MentokAlap(szint: number = this.Szint) {
|
||||||
|
const elsodlegesek = this.ElsodlegesMentok()
|
||||||
|
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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReflexMentoAlap() : number {
|
public MentokTulajdonsaggal(szint: number = this.Szint) {
|
||||||
switch (this.Osztaly){
|
const mentok = this.MentokAlap(szint)
|
||||||
case Osztaly.Tolvaj:
|
return {
|
||||||
return 2;
|
kitartas: mentok.kitartas + Modifier(this.Tulajdonsagok.t_egs),
|
||||||
case Osztaly.Barbar:
|
reflex: mentok.reflex + Modifier(this.Tulajdonsagok.t_ugy),
|
||||||
case Osztaly.Amazon:
|
akaratero: mentok.akaratero + Modifier(this.Tulajdonsagok.t_bol),
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
case Osztaly.Pap:
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public AkarateroMentoAlap() : number {
|
|
||||||
switch (this.Osztaly){
|
|
||||||
case Osztaly.Pap:
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 2;
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
import {Osztaly} from "./osztaly";
|
|
||||||
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag";
|
|
||||||
|
|
||||||
export interface KarakterMasodlagosErtekek {
|
|
||||||
HP: number
|
|
||||||
VO: number
|
|
||||||
CelzoTB: number
|
|
||||||
KozelHarciTB: number
|
|
||||||
KitartasMento: number
|
|
||||||
ReflexMento: number
|
|
||||||
AkarateroMento: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export function CalculateMasodlagosErtekek(osztaly: Osztaly, tulajdonsagok: KarakterTulajdonsagok) : KarakterMasodlagosErtekek {
|
|
||||||
return {
|
|
||||||
HP: HP(osztaly, tulajdonsagok.t_egs),
|
|
||||||
VO: 10 + Modifier(tulajdonsagok.t_ugy),
|
|
||||||
KozelHarciTB: KozelharciTB(osztaly, tulajdonsagok),
|
|
||||||
CelzoTB: TamadasBonusz(osztaly) + Modifier(tulajdonsagok.t_ugy),
|
|
||||||
|
|
||||||
KitartasMento: KitartasMento(osztaly) + Modifier(tulajdonsagok.t_egs),
|
|
||||||
ReflexMento: ReflexMento(osztaly) + Modifier(tulajdonsagok.t_ugy),
|
|
||||||
AkarateroMento: AkarateroMento(osztaly) + Modifier(tulajdonsagok.t_bol),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function HP(osztaly: Osztaly, egeszseg: number) {
|
|
||||||
let base = 4;
|
|
||||||
switch (osztaly){
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
base = 12
|
|
||||||
break;
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
base = 10;
|
|
||||||
break
|
|
||||||
case Osztaly.Pap:
|
|
||||||
base = 8;
|
|
||||||
break;
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
base = 6;
|
|
||||||
break;
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
base = 4;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return base + Modifier(egeszseg)
|
|
||||||
}
|
|
||||||
|
|
||||||
function TamadasBonusz(osztaly: Osztaly) : number {
|
|
||||||
switch (osztaly){
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
return 2;
|
|
||||||
case Osztaly.Pap:
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
return 0;
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function KozelharciTB(osztaly: Osztaly, tulajdonsagok: KarakterTulajdonsagok): number {
|
|
||||||
const base = TamadasBonusz(osztaly);
|
|
||||||
if (osztaly === Osztaly.Kaloz && tulajdonsagok.t_ugy > tulajdonsagok.t_ero) {
|
|
||||||
return base + Modifier(tulajdonsagok.t_ugy)
|
|
||||||
}
|
|
||||||
return base + Modifier(tulajdonsagok.t_ero)
|
|
||||||
}
|
|
||||||
|
|
||||||
function KitartasMento(osztaly: Osztaly) : number {
|
|
||||||
switch (osztaly){
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
case Osztaly.Pap:
|
|
||||||
return 2;
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function ReflexMento(osztaly: Osztaly) : number {
|
|
||||||
switch (osztaly){
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
return 2;
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
case Osztaly.Pap:
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function AkarateroMento(osztaly: Osztaly) : number {
|
|
||||||
switch (osztaly){
|
|
||||||
case Osztaly.Pap:
|
|
||||||
case Osztaly.Varazslo:
|
|
||||||
case Osztaly.Illuzionista:
|
|
||||||
return 2;
|
|
||||||
case Osztaly.Tolvaj:
|
|
||||||
case Osztaly.Barbar:
|
|
||||||
case Osztaly.Amazon:
|
|
||||||
case Osztaly.Ijasz:
|
|
||||||
case Osztaly.Kaloz:
|
|
||||||
case Osztaly.Harcos:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
export interface Mentok {
|
||||||
|
kitartas: number
|
||||||
|
reflex: number
|
||||||
|
akaratero: number
|
||||||
|
}
|
||||||
|
export type MentoTipus = keyof Mentok
|
||||||
|
|
||||||
|
export function MentoTipusLabel(tipus: MentoTipus): string {
|
||||||
|
let label: string | null = null
|
||||||
|
switch (tipus) {
|
||||||
|
case "akaratero":
|
||||||
|
label = "Akaraterő";
|
||||||
|
break;
|
||||||
|
case "kitartas":
|
||||||
|
label = "Kitartás";
|
||||||
|
break;
|
||||||
|
case "reflex":
|
||||||
|
label = "Reflex";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ElsodlegesMento(szint: number): number {
|
||||||
|
return Math.min(Math.floor(2 + szint / 2), 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function MasodlagosMento(szint: number): number {
|
||||||
|
return Math.floor(szint / 3)
|
||||||
|
}
|
||||||
@@ -9,7 +9,6 @@ import KarakterKepzettsegek from "../components/KarakterKepzettsegek";
|
|||||||
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
|
||||||
import MasodlagosErtekek from "../components/MasodlagosErtekek";
|
import MasodlagosErtekek from "../components/MasodlagosErtekek";
|
||||||
import {AvailableKezpettsegList, TolvajKepzettsegList} from "../domain-models/kepzettsegek";
|
import {AvailableKezpettsegList, TolvajKepzettsegList} from "../domain-models/kepzettsegek";
|
||||||
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
|
|
||||||
import {CreatePDF} from "../pdf/character.pdf";
|
import {CreatePDF} from "../pdf/character.pdf";
|
||||||
import {KarakterClass, KarakterInputs} from "../domain-models/karakter";
|
import {KarakterClass, KarakterInputs} from "../domain-models/karakter";
|
||||||
import Level2 from "../components/Level2";
|
import Level2 from "../components/Level2";
|
||||||
@@ -52,6 +51,7 @@ function getNumberOfKepzettsegek(t_int: number, faj: Faj, max: number) {
|
|||||||
function CreateCharacterPage() {
|
function CreateCharacterPage() {
|
||||||
|
|
||||||
let [karakter, changeKarakter] = useState(karakterDefaults)
|
let [karakter, changeKarakter] = useState(karakterDefaults)
|
||||||
|
const karakterClass = new KarakterClass(karakter)
|
||||||
|
|
||||||
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
|
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ function CreateCharacterPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function levelUp() {
|
function levelUp() {
|
||||||
const dice = new KarakterClass(karakter).baseHP()
|
const dice = karakterClass.baseHP()
|
||||||
const roll = getRandomInt(dice)
|
const roll = getRandomInt(dice)
|
||||||
console.log(`Level 2 HP roll on d${dice} is: ${roll}`)
|
console.log(`Level 2 HP roll on d${dice} is: ${roll}`)
|
||||||
changeKarakter({...karakter, szint: karakter.szint + 1, HProlls: [...karakter.HProlls, roll]})
|
changeKarakter({...karakter, szint: karakter.szint + 1, HProlls: [...karakter.HProlls, roll]})
|
||||||
@@ -144,7 +144,7 @@ function CreateCharacterPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<MasodlagosErtekek ertekek={CalculateMasodlagosErtekek(karakter.osztaly, karakter.tulajdonsagok)} />
|
<MasodlagosErtekek karakter={karakterClass} />
|
||||||
|
|
||||||
{karakter.szint > 1 && <Level2 karakter={{...karakter}} rolledHP={karakter.HProlls[0]} changeRolledHP={chageLevel2HProll} /> }
|
{karakter.szint > 1 && <Level2 karakter={{...karakter}} rolledHP={karakter.HProlls[0]} changeRolledHP={chageLevel2HProll} /> }
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ function CreateCharacterPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='d-grid gap-2 m-5'>
|
<div className='d-grid gap-2 m-5'>
|
||||||
<button className='btn btn-danger btn-lg' type='button' onClick={async () => await CreatePDF(new KarakterClass(karakter))}>Létrehozás</button>
|
<button className='btn btn-danger btn-lg' type='button' onClick={async () => await CreatePDF(karakterClass)}>Létrehozás</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -96,21 +96,22 @@ function drawTulajdonsagok(page: PDFPage, tulajdonsagok: KarakterTulajdonsagok,
|
|||||||
}
|
}
|
||||||
|
|
||||||
function drawMentok(page: PDFPage, karakter: Karakter, fontSizeBase: number, pdfFont: PDFFont) {
|
function drawMentok(page: PDFPage, karakter: Karakter, fontSizeBase: number, pdfFont: PDFFont) {
|
||||||
page.drawText(SignedNumberToText(karakter.KitartasMentoAlap()), {
|
const mentokAlap = karakter.MentokAlap()
|
||||||
|
page.drawText(SignedNumberToText(mentokAlap.kitartas), {
|
||||||
x: 435,
|
x: 435,
|
||||||
y: 613,
|
y: 613,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
font: pdfFont,
|
font: pdfFont,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
})
|
})
|
||||||
page.drawText(SignedNumberToText(karakter.ReflexMentoAlap()), {
|
page.drawText(SignedNumberToText(mentokAlap.reflex), {
|
||||||
x: 435,
|
x: 435,
|
||||||
y: 580,
|
y: 580,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
font: pdfFont,
|
font: pdfFont,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
})
|
})
|
||||||
page.drawText(SignedNumberToText(karakter.AkarateroMentoAlap()), {
|
page.drawText(SignedNumberToText(mentokAlap.akaratero), {
|
||||||
x: 435,
|
x: 435,
|
||||||
y: 547,
|
y: 547,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
@@ -138,21 +139,22 @@ function drawMentok(page: PDFPage, karakter: Karakter, fontSizeBase: number, pdf
|
|||||||
font: pdfFont,
|
font: pdfFont,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
})
|
})
|
||||||
page.drawText(SignedNumberToText(karakter.KitartasMentoAlap() + Modifier(karakter.Tulajdonsagok.t_egs)), {
|
const mentok = karakter.MentokTulajdonsaggal()
|
||||||
|
page.drawText(SignedNumberToText(mentok.kitartas), {
|
||||||
x: 515,
|
x: 515,
|
||||||
y: 613,
|
y: 613,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
font: pdfFont,
|
font: pdfFont,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
})
|
})
|
||||||
page.drawText(SignedNumberToText(karakter.ReflexMentoAlap() + Modifier(karakter.Tulajdonsagok.t_ugy)), {
|
page.drawText(SignedNumberToText(mentok.reflex), {
|
||||||
x: 515,
|
x: 515,
|
||||||
y: 580,
|
y: 580,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
font: pdfFont,
|
font: pdfFont,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
})
|
})
|
||||||
page.drawText(SignedNumberToText(karakter.AkarateroMentoAlap() + Modifier(karakter.Tulajdonsagok.t_bol)), {
|
page.drawText(SignedNumberToText(mentok.akaratero), {
|
||||||
x: 515,
|
x: 515,
|
||||||
y: 547,
|
y: 547,
|
||||||
size: fontSizeBase,
|
size: fontSizeBase,
|
||||||
|
|||||||
Reference in New Issue
Block a user