allow harcos to wield specialized exotic weapon
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
import React from "react";
|
||||
import {Fegyver, KarakterFelszereles, PancelTypeLabel} from "../domain-models/felszereles";
|
||||
import {Osztaly, OsztalyAllowedFegyver} from '../domain-models/osztaly'
|
||||
import {Osztaly} from '../domain-models/osztaly'
|
||||
import {AllowedPancelTypes} from '../domain-models/allowed-pancel-types'
|
||||
import pancelok from '../domain-models/pancel.json'
|
||||
import pajzsok from '../domain-models/pajzs.json'
|
||||
import fegyverek from '../domain-models/fegyver.json'
|
||||
import {arraySetN} from "../util";
|
||||
import {AllowedFegyver} from "../domain-models/allowed-fegyver";
|
||||
|
||||
export function FegyverLabel(fegyver: Fegyver): string {
|
||||
return `${fegyver.Name}${fegyver.Ketkezes ? '+' : ''}${fegyver.Egzotikus ? '(E)' : ''} | ${
|
||||
@@ -15,13 +16,13 @@ export function FegyverLabel(fegyver: Fegyver): string {
|
||||
fegyver.Range > 0 ? ` | táv: ${fegyver.Range}` : ''}`
|
||||
}
|
||||
|
||||
function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly}) {
|
||||
const { felszereles, changeFelszereles, osztaly } = props;
|
||||
function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly, harcosSpec: Fegyver['Id'][]}) {
|
||||
const { felszereles, changeFelszereles, osztaly, harcosSpec } = props;
|
||||
const allowedPancelTypes = AllowedPancelTypes([osztaly])
|
||||
const valasztottFegyverek = felszereles.fegyverIDk
|
||||
.map((id, idx) => ({idx, fegyver: fegyverek.data.find(f => f.Id === id)})).filter((x) => x.fegyver != null).map(({idx, fegyver}) => ({idx, fegyver: fegyver as Fegyver}))
|
||||
|
||||
const osztalyAllowedFegyverek = OsztalyAllowedFegyver(osztaly)
|
||||
const osztalyAllowedFegyverek = AllowedFegyver(osztaly, harcosSpec)
|
||||
const allowedFegyverek = [...osztalyAllowedFegyverek, ...valasztottFegyverek.filter(({idx, fegyver}) => !osztalyAllowedFegyverek.map(f => f.Id).includes(fegyver.Id)).map(({fegyver}) => fegyver)]
|
||||
const changeFegyver = (idx: number, newID: string) => {
|
||||
const found = fegyverek.data.find(x => x.Id === newID)
|
||||
@@ -33,6 +34,9 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles
|
||||
}
|
||||
|
||||
return <>
|
||||
<div className='row'>
|
||||
<h5 className='col align-self-center'>Felszerelés</h5>
|
||||
</div>
|
||||
<div className='row m-2'>
|
||||
<label className='col-md-2 col-sm-3 col-form-label'>Viselt páncél</label>
|
||||
<select className='col form-select' value={felszereles.pancelID} onChange={e => changeFelszereles({...felszereles, pancelID: e.target.value === 'nincs' ? undefined : e.target.value})}>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React from "react";
|
||||
import {Osztaly, OsztalyAllowedFegyver} from "../domain-models/osztaly";
|
||||
import {Osztaly} from "../domain-models/osztaly";
|
||||
import {AllowedFegyver} from "../domain-models/allowed-fegyver";
|
||||
|
||||
function KalozKritikus(props: {
|
||||
kritFegyverId: string,
|
||||
@@ -14,7 +15,7 @@ function KalozKritikus(props: {
|
||||
szint
|
||||
} = props
|
||||
const hasError = existingKrits.filter(x => x === kritFegyverId).length > (szint < 9 ? 1 : 2)
|
||||
const fegyverek = OsztalyAllowedFegyver(Osztaly.Kaloz)
|
||||
const fegyverek = AllowedFegyver(Osztaly.Kaloz, [])
|
||||
return <>
|
||||
<div className='row m-2'>
|
||||
<label className='col-md-2 col-sm-3 col-form-label'>Kritikus</label>
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import {Fegyver, GetFegyver} from "./felszereles";
|
||||
import fegyverDB from "./fegyver.json";
|
||||
import {Osztaly} from "./osztaly";
|
||||
|
||||
export function AllowedFegyver(o: Osztaly, harcosSpec: string[]): Fegyver[] {
|
||||
const fegyverek = fegyverDB.data.map(x => x as Fegyver)
|
||||
const nemEgzotikus = fegyverek.filter(f => !f.Egzotikus)
|
||||
const varazslo = fegyverek.filter(f => ['okol', 'bot', 'bunko', 'tor', 'parittya', 'dobotu'].includes(f.Id))
|
||||
const tolvaj = fegyverek.filter(f => ['okol', 'tor', 'parittya', 'rovid_ij', 'dobotu', 'konnyu_szamszerij', 'nehez_szamszerij', 'szablya', 'hosszu_kard', 'rovid_kard' ].includes(f.Id))
|
||||
switch (o) {
|
||||
case Osztaly.Harcos:
|
||||
const harcosSpecFegyverek = harcosSpec.map(GetFegyver).filter(x => x != null && x.Egzotikus).map(x => x as Fegyver)
|
||||
return [...nemEgzotikus, ...harcosSpecFegyverek]
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Kaloz: return nemEgzotikus;
|
||||
case Osztaly.Ijasz: return [...nemEgzotikus, fegyverDB.data.find(f => f.Id === 'visszacsapo_ij') as Fegyver]
|
||||
// Note: Isteni fegyver barmi lehet istentol foggoen
|
||||
case Osztaly.Pap: return fegyverek;
|
||||
case Osztaly.Tolvaj: return tolvaj;
|
||||
case Osztaly.Illuzionista:
|
||||
case Osztaly.Varazslo: return varazslo;
|
||||
}
|
||||
}
|
||||
@@ -88,7 +88,7 @@
|
||||
"Id": "csakany",
|
||||
"Name": "Csákány",
|
||||
"Type": "kozelharci",
|
||||
"Ketkezes": true,
|
||||
"Ketkezes": false,
|
||||
"Egzotikus": false,
|
||||
"Rohamfelfogo": false,
|
||||
"Price": 5,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import {Fegyver, GetPancel, KarakterFelszereles} from "./felszereles";
|
||||
import fegyverDB from './fegyver.json'
|
||||
import {GetPancel, KarakterFelszereles} from "./felszereles";
|
||||
import {AllowedPancelTypes} from "./allowed-pancel-types";
|
||||
|
||||
export enum Osztaly {
|
||||
@@ -14,25 +13,6 @@ export enum Osztaly {
|
||||
Illuzionista = 'o_illuzionista',
|
||||
}
|
||||
|
||||
export function OsztalyAllowedFegyver(o: Osztaly): Fegyver[] {
|
||||
const fegyverek = fegyverDB.data.map(x => x as Fegyver)
|
||||
const nemEgzotikus = fegyverek.filter(f => !f.Egzotikus)
|
||||
const varazslo = fegyverek.filter(f => ['okol', 'bot', 'bunko', 'tor', 'parittya', 'dobotu'].includes(f.Id))
|
||||
const tolvaj = fegyverek.filter(f => ['okol', 'tor', 'parittya', 'rovid_ij', 'dobotu', 'konnyu_szamszerij', 'nehez_szamszerij', 'szablya', 'hosszu_kard', 'rovid_kard' ].includes(f.Id))
|
||||
switch (o) {
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Harcos:
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Kaloz: return nemEgzotikus;
|
||||
case Osztaly.Ijasz: return [...nemEgzotikus, fegyverDB.data.find(f => f.Id === 'visszacsapo_ij') as Fegyver]
|
||||
// Note: Isteni fegyver barmi lehet istentol foggoen
|
||||
case Osztaly.Pap: return fegyverek;
|
||||
case Osztaly.Tolvaj: return tolvaj;
|
||||
case Osztaly.Illuzionista:
|
||||
case Osztaly.Varazslo: return varazslo;
|
||||
}
|
||||
}
|
||||
|
||||
export function SetFelszerelesForChangedOsztaly(o: Osztaly, felszereles: KarakterFelszereles, changeFelszereles: (f: KarakterFelszereles) => void) {
|
||||
const allowedPancelTypes = AllowedPancelTypes([o])
|
||||
const pancel = GetPancel(felszereles.pancelID)
|
||||
|
||||
@@ -131,10 +131,6 @@ function CreateCharacterPage() {
|
||||
|
||||
<hr />
|
||||
|
||||
<Felszereles osztaly={karakter.osztaly} felszereles={karakter.felszereles} changeFelszereles={setFelszereles} />
|
||||
|
||||
<hr />
|
||||
|
||||
<LevelUps key={'level-ups'} karakter={karakter} changeKarakter={changeKarakter} />
|
||||
|
||||
{karakter.szint > 1 && <hr />}
|
||||
@@ -145,6 +141,11 @@ function CreateCharacterPage() {
|
||||
{karakter.szint > 1 && <button className='btn btn-dark btn-lg' type='button' onClick={levelDown}>Visszalépés! ⇩</button> }
|
||||
</div>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<Felszereles osztaly={karakter.osztaly} felszereles={karakter.felszereles} changeFelszereles={setFelszereles} harcosSpec={karakter.harcosSpecializaciok} />
|
||||
|
||||
<div className='d-grid gap-2 m-5'>
|
||||
<button className='btn btn-danger btn-lg' type='button' onClick={async () => await CreatePDF(KarakterInputToPdfView(karakter))}>Létrehozás</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user