add kaloz kritikus fegyverek

This commit is contained in:
2023-10-05 21:33:32 +02:00
parent dbd77a9fcf
commit 324a7896a4
7 changed files with 100 additions and 20 deletions
+3 -6
View File
@@ -3,18 +3,15 @@
## Fixes ## Fixes
- Kötelező képezettségek - Birodalmi tolvaj - Kötelező képezettségek - Birodalmi tolvaj
- PDF pretty: Tamadas bonuszok +10/+5 - PDF pretty: Tamadas bonuszok +10/+5
## Level up
- 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
- multiclass characters
## PDF ## Features
- specialis kepessegek 2ik oldalra nyomtatasa - specialis kepessegek 2ik oldalra nyomtatasa
- multiclass characters
## Epics ## Epics
- Backend - Backend
- Varazslatok - Varazslatok
- Felszerelés - Felszerelés
- Klikkelésre dobás
- KéM 2.0-ra felkészülés - KéM 2.0-ra felkészülés
- Klikkelésre dobás
+14 -4
View File
@@ -1,15 +1,25 @@
import React from "react"; import React from "react";
function HarcosFegyverSpecializacio(props: {specialization: string, existingSpecializations: string[], changeSpecialization: (specialization: string) => void }) { function HarcosFegyverSpecializacio(props: {
const {specialization, existingSpecializations, changeSpecialization} = props specialization: string,
const hasError = existingSpecializations.filter(x => x === specialization).length > 1 existingSpecializations: string[],
changeSpecialization: (specialization: string) => void
szint: number
}) {
const {
specialization,
existingSpecializations,
changeSpecialization,
szint
} = props
const hasError = existingSpecializations.filter(x => x === specialization).length > (szint < 9 ? 1 : 2)
return <> return <>
<div className='row m-2'> <div className='row m-2'>
<label className='col-md-2 col-sm-3 col-form-label' >Fegyver specializáció</label> <label className='col-md-2 col-sm-3 col-form-label' >Fegyver specializáció</label>
<input className='col form-control' <input className='col form-control'
value={specialization} value={specialization}
onChange={(e) => changeSpecialization(e.target.value)}/> onChange={(e) => changeSpecialization(e.target.value)}/>
{hasError && <span className='form-field-error'>Már választottad ezt a specializaciót!</span>} {hasError && <span className='form-field-error'>Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!</span>}
</div> </div>
</> </>
} }
+27
View File
@@ -0,0 +1,27 @@
import React from "react";
function KalozKritikus(props: {
krit: string,
existingKrits: string[],
changeKrit: (specialization: string) => void,
szint: number
}) {
const {
krit,
existingKrits,
changeKrit,
szint
} = props
const hasError = existingKrits.filter(x => x === krit).length > (szint < 9 ? 1 : 2)
return <>
<div className='row m-2'>
<label className='col-md-2 col-sm-3 col-form-label'>Kritikus</label>
<input className='col form-control'
value={krit}
onChange={(e) => changeKrit(e.target.value)}/>
{hasError && <span className='form-field-error'>Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!</span>}
</div>
</>
}
export default KalozKritikus
+38 -3
View File
@@ -6,14 +6,30 @@ import {Tulajdonsag, TulajdonsagokTotal} from "../domain-models/tulajdonsag";
import {arraySetN} from "../util"; import {arraySetN} from "../util";
import {Osztaly} from "../domain-models/osztaly"; import {Osztaly} from "../domain-models/osztaly";
import HarcosFegyverSpecializacio from "./HarcosFegyverSpecializacio"; import HarcosFegyverSpecializacio from "./HarcosFegyverSpecializacio";
import KalozKritikus from "./KalozKritikus";
function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdonsagNoveles: (t: Tulajdonsag) => void, changeRolledHP: (rolledHP: number) => void, changeHarcosSpec: (spec: string) => void}) { function LevelUp(props: {
const {szint, karakter, changeTulajdonsagNoveles, changeRolledHP, changeHarcosSpec} = props szint: number,
karakter: KarakterInputs,
changeTulajdonsagNoveles: (t: Tulajdonsag) => void,
changeRolledHP: (rolledHP: number) => void,
changeHarcosSpec: (spec: string) => void,
changeKalozKritikus: (krit: string) => void,
}) {
const {
szint,
karakter,
changeTulajdonsagNoveles,
changeRolledHP,
changeHarcosSpec,
changeKalozKritikus,
} = props
const specializationIndex = Math.floor((szint-1) / 2) const specializationIndex = Math.floor((szint-1) / 2)
console.log('Specialization index: ' + specializationIndex.toString()) console.log('Specialization index: ' + specializationIndex.toString())
const specialization = karakter.harcosSpecializaciok[specializationIndex] const specialization = karakter.harcosSpecializaciok[specializationIndex]
console.log(specialization) console.log(specialization)
const krit = karakter.kalozKritikus[Math.floor(szint/3)]
return <div key={`level-up-${szint}`}> return <div key={`level-up-${szint}`}>
<div className='row mt-3'> <div className='row mt-3'>
@@ -31,7 +47,21 @@ function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdon
changeRolledHP={changeRolledHP} changeRolledHP={changeRolledHP}
/> />
{karakter.osztaly === Osztaly.Harcos && szint % 2 === 1 && {karakter.osztaly === Osztaly.Harcos && szint % 2 === 1 &&
<HarcosFegyverSpecializacio specialization={specialization} existingSpecializations={karakter.harcosSpecializaciok} changeSpecialization={changeHarcosSpec} />} <HarcosFegyverSpecializacio
specialization={specialization}
existingSpecializations={karakter.harcosSpecializaciok}
changeSpecialization={changeHarcosSpec}
szint={szint}
/>
}
{karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0 &&
<KalozKritikus
krit={krit}
existingKrits={karakter.kalozKritikus}
changeKrit={changeKalozKritikus}
szint={szint}
/>
}
</div> </div>
} }
@@ -50,6 +80,10 @@ export function LevelUps(props: {karakter: KarakterInputs, changeKarakter: (inpu
changeKarakter({...karakter, harcosSpecializaciok: arraySetN(karakter.harcosSpecializaciok, Math.floor((szint-1) / 2), spec)}) changeKarakter({...karakter, harcosSpecializaciok: arraySetN(karakter.harcosSpecializaciok, Math.floor((szint-1) / 2), spec)})
} }
const changeKalozKritikusAtSzint = (szint: number) => (spec: string) => {
changeKarakter({...karakter, kalozKritikus: arraySetN(karakter.kalozKritikus, Math.floor(szint / 3), spec)})
}
return <> return <>
{karakter.hpRolls.map((_, i) => i+2).map(szint => <> {karakter.hpRolls.map((_, i) => i+2).map(szint => <>
<LevelUp <LevelUp
@@ -59,6 +93,7 @@ export function LevelUps(props: {karakter: KarakterInputs, changeKarakter: (inpu
changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)} changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)}
changeRolledHP={changeRolledHPAtSzint(szint)} changeRolledHP={changeRolledHPAtSzint(szint)}
changeHarcosSpec={changeHarcosSpecializacioAtSzint(szint)} changeHarcosSpec={changeHarcosSpecializacioAtSzint(szint)}
changeKalozKritikus={changeKalozKritikusAtSzint(szint)}
/> />
</> </>
)} )}
+3 -3
View File
@@ -28,11 +28,11 @@ export const KarakterDefaults: KarakterInputs = {
kor: 20, kor: 20,
jellem: 'S', jellem: 'S',
tulajdonsagok: TulajdonsagDefaults, tulajdonsagok: TulajdonsagDefaults,
osztaly: Osztaly.Harcos, osztaly: Osztaly.Kaloz,
kepzettsegek: [], kepzettsegek: [],
szint: 1, szint: 1,
hpRolls: [], hpRolls: [],
tulajdonsagNovelesek: [], tulajdonsagNovelesek: [],
harcosSpecializaciok: ['szablya'], harcosSpecializaciok: [],
kalozKritikus: [], kalozKritikus: ['szablya'],
} }
+6 -2
View File
@@ -24,9 +24,13 @@ export function LevelUp(karakter: KarakterInputs, changeKarakter: (input: Karakt
} }
let harcosSpecializaciok = karakter.harcosSpecializaciok let harcosSpecializaciok = karakter.harcosSpecializaciok
if(karakter.osztaly === Osztaly.Harcos && szint % 2 === 1) { if(karakter.osztaly === Osztaly.Harcos && szint % 2 === 1) {
harcosSpecializaciok = [...harcosSpecializaciok, "szablya"] harcosSpecializaciok = [...harcosSpecializaciok, "Csatabárd"]
} }
changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok}) let kalozKritikus = karakter.kalozKritikus
if(karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0) {
kalozKritikus = [...kalozKritikus, "Szablya"]
}
changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok, kalozKritikus})
} }
export function LevelDown(karakter: KarakterInputs, changeKarakter: (input: KarakterInputs) => void) { export function LevelDown(karakter: KarakterInputs, changeKarakter: (input: KarakterInputs) => void) {
+8 -1
View File
@@ -97,7 +97,13 @@ function CreateCharacterPage() {
<OsztalySelector <OsztalySelector
currentFaj={karakter.faj} currentFaj={karakter.faj}
currentOsztaly={karakter.osztaly} currentOsztaly={karakter.osztaly}
changeOsztaly={(o: Osztaly) => changeKarakter({...karakter, osztaly: o, harcosSpecializaciok: o === Osztaly.Harcos ? ['szablya'] : []})} changeOsztaly={(o: Osztaly) =>
changeKarakter({
...karakter,
osztaly: o,
harcosSpecializaciok: o === Osztaly.Harcos ? ['kard'] : [],
kalozKritikus: o === Osztaly.Kaloz ? ['szablya'] : [],
})}
/> />
{karakter.osztaly === Osztaly.Harcos && {karakter.osztaly === Osztaly.Harcos &&
<div className='mb-6'> <div className='mb-6'>
@@ -105,6 +111,7 @@ function CreateCharacterPage() {
specialization={karakter.harcosSpecializaciok[0]} specialization={karakter.harcosSpecializaciok[0]}
existingSpecializations={karakter.harcosSpecializaciok} existingSpecializations={karakter.harcosSpecializaciok}
changeSpecialization={(spec: string) => changeKarakter({...karakter, harcosSpecializaciok: [spec, ...karakter.harcosSpecializaciok.slice(1)]})} changeSpecialization={(spec: string) => changeKarakter({...karakter, harcosSpecializaciok: [spec, ...karakter.harcosSpecializaciok.slice(1)]})}
szint={1}
/> />
</div>} </div>}
<KarakterKepzettsegek <KarakterKepzettsegek