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'
maxLength={2}
type='number'
value={karakter.HProlls[szint-2] || 1}
value={karakter.hpRolls[szint-2] || 1}
min={1}
max={12}
onChange={e => changeRolledHP(Number(e.target.value))} />
@@ -74,7 +74,7 @@ function BasicNewLevel(props: {
<div className='col-lg-6'>
<div className='row m-2'>
<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>
{isTBincreased && <div className='row m-2'>
<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 {Osztaly} from "./osztaly";
import {KarakterTulajdonsagok, TulajdonsagDefaults} from "./tulajdonsag";
import {KarakterTulajdonsagok, Tulajdonsag, TulajdonsagDefaults} from "./tulajdonsag";
import {KepzettsegId} from "./kepzettsegek";
export interface KarakterInputs {
@@ -14,7 +14,8 @@ export interface KarakterInputs {
kepzettsegek: KepzettsegId[],
tolvajKepzettsegek?: KepzettsegId[]
szint: number
HProlls: number[],
hpRolls: number[],
tulajdonsagNovekedes: Tulajdonsag[],
}
export const KarakterDefaults: KarakterInputs = {
@@ -25,6 +26,7 @@ export const KarakterDefaults: KarakterInputs = {
osztaly: Osztaly.Harcos,
kepzettsegek: [],
szint: 1,
HProlls: [],
hpRolls: [],
tulajdonsagNovekedes: []
}
+3 -3
View File
@@ -12,7 +12,7 @@ export interface MasodlagosErtekekView {
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) {
let base = 4;
@@ -40,9 +40,9 @@ export function BaseHP(osztaly: Osztaly) {
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)
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
.map(hp => Math.max(1, hp + egeszsegModifier))
.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);
}
export function FajiTulajdonsagModositok(faj: Faj) {
return (tul: Tulajdonsag) => tulajdonsagModositokPerFaj(tul, faj)
export function FajiTulajdonsagModositok(faj: Faj) : KarakterTulajdonsagok {
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 OsztalySelector from "../components/OsztalySelector";
import KarakterKepzettsegek from "../components/KarakterKepzettsegek";
import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag";
import {KarakterTulajdonsagok, TulajdonsagokFajjal} from "../domain-models/tulajdonsag";
import MasodlagosErtekek from "../components/MasodlagosErtekek";
import {
AvailableKezpettsegList,
@@ -25,12 +25,12 @@ function CreateCharacterPage() {
let [karakter, changeKarakter] = useState(KarakterDefaults)
const tulajdonsagokTotal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
const changeKepzettseg = (k: KepzettsegId[]) => changeKarakter({...karakter, kepzettsegek: k})
const changeTolvajKepzettseg = (tk?: KepzettsegId[]) => changeKarakter({...karakter, tolvajKepzettsegek: tk})
SetDefaultTolvajKepzettsegek(karakter, changeTolvajKepzettseg)
SetDefaultKepzettsegek(karakter, changeKepzettseg)
SetDefaultKepzettsegek({...karakter, tulajdonsagok: tulajdonsagokTotal}, changeKepzettseg)
const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly)
function levelUp() {
@@ -38,15 +38,15 @@ function CreateCharacterPage() {
const dice = BaseHP(karakter.osztaly)
const roll = dAny(dice)
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() {
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) => {
changeKarakter({...karakter, HProlls: arraySetN(karakter.HProlls, szint-2, newHProll)})
changeKarakter({...karakter, hpRolls: arraySetN(karakter.hpRolls, szint-2, newHProll)})
console.log(karakter)
}
@@ -107,7 +107,7 @@ function CreateCharacterPage() {
/>
<KarakterKepzettsegek
availableKepzettsegList={availableKepzettsegList}
numberOfKepzettsegek={GetNumberOfKepzettsegek(karakter.tulajdonsagok.t_int, karakter.faj, availableKepzettsegList.length)}
numberOfKepzettsegek={GetNumberOfKepzettsegek(tulajdonsagokTotal.t_int, karakter.faj, availableKepzettsegList.length)}
kepzettsegek={karakter.kepzettsegek}
changeKepzettsegek={changeKepzettseg}
tolvajKepzettsegek={karakter.tolvajKepzettsegek || []}
@@ -115,10 +115,10 @@ function CreateCharacterPage() {
/>
<hr />
<MasodlagosErtekek {...CalculateMasodlagosErtekek({...karakter, szint: 1, HProlls: []})} />
<MasodlagosErtekek {...CalculateMasodlagosErtekek({...karakter, tulajdonsagok: tulajdonsagokTotal, szint: 1, hpRolls: []})} />
{karakter.HProlls.map((_, i) => (
<BasicNewLevel karakter={{...karakter}} szint={i + 2} key={'level-'+(i+2)} changeRolledHP={changeHProllAtSzint(i+2)} />)
{karakter.hpRolls.map((_, i) => i+2).map(szint => (
<BasicNewLevel karakter={{...karakter}} szint={szint + 2} key={'level-'+(szint+2)} changeRolledHP={changeHProllAtSzint(szint+2)} />)
)}
<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 {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek";
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
@@ -31,8 +31,10 @@ export interface 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 tulajdonsagModositok = TulajdonsagModosito(karakter.tulajdonsagok)
const mozgas = karakter.faj === Faj.Torpe ? 20 : 30
const kezdemenyezes = tulajdonsagModositok.t_ugy + (karakter.osztaly === Osztaly.Tolvaj ? 4 : 0)