bugfix: effective faji tulajdonsag modositok

This commit is contained in:
2023-09-24 09:04:12 +02:00
parent df283ed196
commit 5008629d87
6 changed files with 45 additions and 23 deletions
+2 -2
View File
@@ -57,7 +57,7 @@ function BasicNewLevel(props: {
className='form-control' className='form-control'
maxLength={2} maxLength={2}
type='number' type='number'
value={karakter.HProlls[szint-2] || 1} value={karakter.hpRolls[szint-2] || 1}
min={1} min={1}
max={12} max={12}
onChange={e => changeRolledHP(Number(e.target.value))} /> onChange={e => changeRolledHP(Number(e.target.value))} />
@@ -74,7 +74,7 @@ function BasicNewLevel(props: {
<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'>Új HP{' '}</label> <label className='col-sm-6 col-8 col-form-label'>Új HP{' '}</label>
<span className='col col-form-label'>{HP({...karakter, HProlls: karakter.HProlls.slice(0, szint-1)})}</span> <span className='col col-form-label'>{HP({...karakter, hpRolls: karakter.hpRolls.slice(0, szint-1)})}</span>
</div> </div>
{isTBincreased && <div className='row m-2'> {isTBincreased && <div className='row m-2'>
<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>
+5 -3
View File
@@ -1,6 +1,6 @@
import {Faj} from "./faj"; import {Faj} from "./faj";
import {Osztaly} from "./osztaly"; import {Osztaly} from "./osztaly";
import {KarakterTulajdonsagok, TulajdonsagDefaults} from "./tulajdonsag"; import {KarakterTulajdonsagok, Tulajdonsag, TulajdonsagDefaults} from "./tulajdonsag";
import {KepzettsegId} from "./kepzettsegek"; import {KepzettsegId} from "./kepzettsegek";
export interface KarakterInputs { export interface KarakterInputs {
@@ -14,7 +14,8 @@ export interface KarakterInputs {
kepzettsegek: KepzettsegId[], kepzettsegek: KepzettsegId[],
tolvajKepzettsegek?: KepzettsegId[] tolvajKepzettsegek?: KepzettsegId[]
szint: number szint: number
HProlls: number[], hpRolls: number[],
tulajdonsagNovekedes: Tulajdonsag[],
} }
export const KarakterDefaults: KarakterInputs = { export const KarakterDefaults: KarakterInputs = {
@@ -25,6 +26,7 @@ export const KarakterDefaults: KarakterInputs = {
osztaly: Osztaly.Harcos, osztaly: Osztaly.Harcos,
kepzettsegek: [], kepzettsegek: [],
szint: 1, szint: 1,
HProlls: [], hpRolls: [],
tulajdonsagNovekedes: []
} }
+3 -3
View File
@@ -12,7 +12,7 @@ export interface MasodlagosErtekekView {
Mentok: Mentok Mentok: Mentok
} }
export type KarakterpickForMasodlagosErtekek = Pick<KarakterInputs, 'osztaly' | 'HProlls' | 'tulajdonsagok' | 'szint'> export type KarakterpickForMasodlagosErtekek = Pick<KarakterInputs, 'osztaly' | 'hpRolls' | 'tulajdonsagok' | 'szint'>
export function BaseHP(osztaly: Osztaly) { export function BaseHP(osztaly: Osztaly) {
let base = 4; let base = 4;
@@ -40,9 +40,9 @@ export function BaseHP(osztaly: Osztaly) {
return base return base
} }
export function HP(karakter: Pick<KarakterInputs, 'osztaly' | 'tulajdonsagok' | 'HProlls'>): number { export function HP(karakter: Pick<KarakterInputs, 'osztaly' | 'tulajdonsagok' | 'hpRolls'>): number {
const egeszsegModifier = Modifier(karakter.tulajdonsagok.t_egs) const egeszsegModifier = Modifier(karakter.tulajdonsagok.t_egs)
return BaseHP(karakter.osztaly) + egeszsegModifier + karakter.HProlls return BaseHP(karakter.osztaly) + egeszsegModifier + karakter.hpRolls
// https://lfg.hu/forum/topic/15079-kard-es-magia/page/219/#comment-2218333 // https://lfg.hu/forum/topic/15079-kard-es-magia/page/219/#comment-2218333
.map(hp => Math.max(1, hp + egeszsegModifier)) .map(hp => Math.max(1, hp + egeszsegModifier))
.reduce((sum, val) => sum + val, 0) .reduce((sum, val) => sum + val, 0)
+20 -2
View File
@@ -131,6 +131,24 @@ export function TulajdonsagModositokFajokra(tul: Tulajdonsag) {
return (faj: Faj) => tulajdonsagModositokPerFaj(tul, faj); return (faj: Faj) => tulajdonsagModositokPerFaj(tul, faj);
} }
export function FajiTulajdonsagModositok(faj: Faj) { export function FajiTulajdonsagModositok(faj: Faj) : KarakterTulajdonsagok {
return (tul: Tulajdonsag) => tulajdonsagModositokPerFaj(tul, faj) return {
[Tulajdonsag.Ero]: tulajdonsagModositokPerFaj(Tulajdonsag.Ero, faj),
[Tulajdonsag.Ugyesseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Ugyesseg, faj),
[Tulajdonsag.Egeszseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Egeszseg, faj),
[Tulajdonsag.Intelligencia]: tulajdonsagModositokPerFaj(Tulajdonsag.Intelligencia, faj),
[Tulajdonsag.Bolcsesseg]: tulajdonsagModositokPerFaj(Tulajdonsag.Bolcsesseg, faj),
[Tulajdonsag.Karizma]: tulajdonsagModositokPerFaj(Tulajdonsag.Karizma, faj),
}
}
export function TulajdonsagokFajjal(tulajdonsagok: KarakterTulajdonsagok, faj: Faj): KarakterTulajdonsagok {
return {
[Tulajdonsag.Ero]: tulajdonsagok.t_ero + tulajdonsagModositokPerFaj(Tulajdonsag.Ero, faj),
[Tulajdonsag.Ugyesseg]: tulajdonsagok.t_ugy + tulajdonsagModositokPerFaj(Tulajdonsag.Ugyesseg, faj),
[Tulajdonsag.Egeszseg]: tulajdonsagok.t_egs + tulajdonsagModositokPerFaj(Tulajdonsag.Egeszseg, faj),
[Tulajdonsag.Intelligencia]: tulajdonsagok.t_int + tulajdonsagModositokPerFaj(Tulajdonsag.Intelligencia, faj),
[Tulajdonsag.Bolcsesseg]: tulajdonsagok.t_bol + tulajdonsagModositokPerFaj(Tulajdonsag.Bolcsesseg, faj),
[Tulajdonsag.Karizma]: tulajdonsagok.t_kar + tulajdonsagModositokPerFaj(Tulajdonsag.Karizma, faj),
}
} }
+11 -11
View File
@@ -6,7 +6,7 @@ import FajSelector from "../components/FajSelector";
import Tulajdonsagok from "../components/Tulajdonsagok"; import Tulajdonsagok from "../components/Tulajdonsagok";
import OsztalySelector from "../components/OsztalySelector"; import OsztalySelector from "../components/OsztalySelector";
import KarakterKepzettsegek from "../components/KarakterKepzettsegek"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek";
import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag"; import {KarakterTulajdonsagok, TulajdonsagokFajjal} from "../domain-models/tulajdonsag";
import MasodlagosErtekek from "../components/MasodlagosErtekek"; import MasodlagosErtekek from "../components/MasodlagosErtekek";
import { import {
AvailableKezpettsegList, AvailableKezpettsegList,
@@ -25,12 +25,12 @@ function CreateCharacterPage() {
let [karakter, changeKarakter] = useState(KarakterDefaults) let [karakter, changeKarakter] = useState(KarakterDefaults)
const tulajdonsagokTotal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
const changeKepzettseg = (k: KepzettsegId[]) => changeKarakter({...karakter, kepzettsegek: k}) const changeKepzettseg = (k: KepzettsegId[]) => changeKarakter({...karakter, kepzettsegek: k})
const changeTolvajKepzettseg = (tk?: KepzettsegId[]) => changeKarakter({...karakter, tolvajKepzettsegek: tk}) const changeTolvajKepzettseg = (tk?: KepzettsegId[]) => changeKarakter({...karakter, tolvajKepzettsegek: tk})
SetDefaultTolvajKepzettsegek(karakter, changeTolvajKepzettseg) SetDefaultTolvajKepzettsegek(karakter, changeTolvajKepzettseg)
SetDefaultKepzettsegek(karakter, changeKepzettseg) SetDefaultKepzettsegek({...karakter, tulajdonsagok: tulajdonsagokTotal}, changeKepzettseg)
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly) const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
function levelUp() { function levelUp() {
@@ -38,15 +38,15 @@ function CreateCharacterPage() {
const dice = BaseHP(karakter.osztaly) const dice = BaseHP(karakter.osztaly)
const roll = dAny(dice) const roll = dAny(dice)
console.log(`Level ${szint} HP roll on d${dice} is: ${roll}`) console.log(`Level ${szint} HP roll on d${dice} is: ${roll}`)
changeKarakter({...karakter, szint: szint, HProlls: [...karakter.HProlls, roll]}) changeKarakter({...karakter, szint: szint, hpRolls: [...karakter.hpRolls, roll]})
} }
function levelDown() { function levelDown() {
changeKarakter({...karakter, szint: karakter.szint - 1, HProlls: karakter.HProlls.slice(0, -1)}) changeKarakter({...karakter, szint: karakter.szint - 1, hpRolls: karakter.hpRolls.slice(0, -1)})
} }
const changeHProllAtSzint = (szint: number) => (newHProll: number) => { const changeHProllAtSzint = (szint: number) => (newHProll: number) => {
changeKarakter({...karakter, HProlls: arraySetN(karakter.HProlls, szint-2, newHProll)}) changeKarakter({...karakter, hpRolls: arraySetN(karakter.hpRolls, szint-2, newHProll)})
console.log(karakter) console.log(karakter)
} }
@@ -107,7 +107,7 @@ function CreateCharacterPage() {
/> />
<KarakterKepzettsegek <KarakterKepzettsegek
availableKepzettsegList={availableKepzettsegList} availableKepzettsegList={availableKepzettsegList}
numberOfKepzettsegek={GetNumberOfKepzettsegek(karakter.tulajdonsagok.t_int, karakter.faj, availableKepzettsegList.length)} numberOfKepzettsegek={GetNumberOfKepzettsegek(tulajdonsagokTotal.t_int, karakter.faj, availableKepzettsegList.length)}
kepzettsegek={karakter.kepzettsegek} kepzettsegek={karakter.kepzettsegek}
changeKepzettsegek={changeKepzettseg} changeKepzettsegek={changeKepzettseg}
tolvajKepzettsegek={karakter.tolvajKepzettsegek || []} tolvajKepzettsegek={karakter.tolvajKepzettsegek || []}
@@ -115,10 +115,10 @@ function CreateCharacterPage() {
/> />
<hr /> <hr />
<MasodlagosErtekek {...CalculateMasodlagosErtekek({...karakter, szint: 1, HProlls: []})} /> <MasodlagosErtekek {...CalculateMasodlagosErtekek({...karakter, tulajdonsagok: tulajdonsagokTotal, szint: 1, hpRolls: []})} />
{karakter.HProlls.map((_, i) => ( {karakter.hpRolls.map((_, i) => i+2).map(szint => (
<BasicNewLevel karakter={{...karakter}} szint={i + 2} key={'level-'+(i+2)} changeRolledHP={changeHProllAtSzint(i+2)} />) <BasicNewLevel karakter={{...karakter}} szint={szint + 2} key={'level-'+(szint+2)} changeRolledHP={changeHProllAtSzint(szint+2)} />)
)} )}
<div className='d-grid gap-2 m-5'> <div className='d-grid gap-2 m-5'>
+4 -2
View File
@@ -1,4 +1,4 @@
import {KarakterTulajdonsagok, TulajdonsagModosito} from "../domain-models/tulajdonsag"; import {KarakterTulajdonsagok, TulajdonsagModosito, TulajdonsagokFajjal} from "../domain-models/tulajdonsag";
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";
@@ -31,8 +31,10 @@ export interface KarakterPdfView {
} }
export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfView { export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfView {
const tulajdonsagok = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
karakter = {...karakter, tulajdonsagok}
const tulajdonsagModositok = TulajdonsagModosito(tulajdonsagok)
const masodlagosErtekek = CalculateMasodlagosErtekek(karakter) const masodlagosErtekek = CalculateMasodlagosErtekek(karakter)
const tulajdonsagModositok = TulajdonsagModosito(karakter.tulajdonsagok)
const mozgas = karakter.faj === Faj.Torpe ? 20 : 30 const mozgas = karakter.faj === Faj.Torpe ? 20 : 30
const kezdemenyezes = tulajdonsagModositok.t_ugy + (karakter.osztaly === Osztaly.Tolvaj ? 4 : 0) const kezdemenyezes = tulajdonsagModositok.t_ugy + (karakter.osztaly === Osztaly.Tolvaj ? 4 : 0)