mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-18 03:13:46 +00:00
WIP: fegyverek
This commit is contained in:
@@ -1,12 +1,28 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { KarakterFelszereles, PancelTypeLabel } from "../domain-models/felszereles";
|
import {Fegyver, KarakterFelszereles, PancelTypeLabel} from "../domain-models/felszereles";
|
||||||
import { Osztaly, OsztalyAllowedPancelTypes } from '../domain-models/osztaly'
|
import {Osztaly, OsztalyAllowedFegyver, OsztalyAllowedPancelTypes} from '../domain-models/osztaly'
|
||||||
import pancelok from '../domain-models/pancel.json'
|
import pancelok from '../domain-models/pancel.json'
|
||||||
import pajzsok from '../domain-models/pajzs.json'
|
import pajzsok from '../domain-models/pajzs.json'
|
||||||
|
import fegyverek from '../domain-models/fegyver.json'
|
||||||
|
import {arraySetN} from "../util";
|
||||||
|
|
||||||
function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly}) {
|
function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly}) {
|
||||||
const { felszereles, changeFelszereles, osztaly } = props;
|
const { felszereles, changeFelszereles, osztaly } = props;
|
||||||
const allowedPancelTypes = OsztalyAllowedPancelTypes(osztaly)
|
const allowedPancelTypes = OsztalyAllowedPancelTypes(osztaly)
|
||||||
|
const valasztottFegyverek = felszereles.fegyverIDk
|
||||||
|
.map((id, idx) => ({idx, fegyver: fegyverek.fegyverek.find(f => f.ID === id)})).filter((x) => x.fegyver != null).map(({idx, fegyver}) => ({idx, fegyver: fegyver as Fegyver}))
|
||||||
|
|
||||||
|
const osztalyAllowedFegyverek = OsztalyAllowedFegyver(osztaly)
|
||||||
|
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.fegyverek.find(x => x.ID === newID)
|
||||||
|
if (!found) {
|
||||||
|
console.log('Nem létező fegyver ID: ', newID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, fegyverIDk: arraySetN(felszereles.fegyverIDk, idx, newID)})
|
||||||
|
}
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Viselt páncél</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Viselt páncél</label>
|
||||||
@@ -28,6 +44,21 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles
|
|||||||
{allowedPancelTypes.length > 0 && (pajzsok['pajzs'].map(p => <option key={p.ID} value={p.ID}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>))}
|
{allowedPancelTypes.length > 0 && (pajzsok['pajzs'].map(p => <option key={p.ID} value={p.ID}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>))}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{valasztottFegyverek.map(({idx, fegyver}) => (
|
||||||
|
<div key={`fegyver-${idx}`} className='row m-2'>
|
||||||
|
<label className='col-md-2 col-sm-3 col-form-label'>Fegyver</label>
|
||||||
|
<select className='col form-select' value={fegyver.ID} onChange={e => changeFegyver(idx, e.target.value)}>
|
||||||
|
<optgroup label="Közelharci">
|
||||||
|
{allowedFegyverek.filter(f => f.Type === 'kozelharci').map(f => <option key={f.ID} value={f.ID}>{`${f.Name}`}</option>)}
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="Távolsági">
|
||||||
|
{allowedFegyverek.filter(f => f.Type === 'lofegyver').map(f => <option key={f.ID} value={f.ID}>{`${f.Name}`}</option>)}
|
||||||
|
</optgroup>
|
||||||
|
</select>
|
||||||
|
<button className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2' type='button' onClick={() => changeFelszereles({...felszereles, fegyverIDk: [...felszereles.fegyverIDk.slice(0, idx), ...felszereles.fegyverIDk.slice(idx+1)]})}>Elvesz</button>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<button className='btn btn-outline-dark btn btn-lg ms-2' type='button' onClick={() => changeFelszereles({...felszereles, fegyverIDk: [...felszereles.fegyverIDk, 'okol']})}>Fegyver hozzáadása</button>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,467 @@
|
|||||||
|
{
|
||||||
|
"fegyverek": [
|
||||||
|
{
|
||||||
|
"ID": "alabard",
|
||||||
|
"Name": "Alabárd és más szálfegyverek",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": true,
|
||||||
|
"Price": 10,
|
||||||
|
"DamageDice": 10,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "bot",
|
||||||
|
"Name": "Bot",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "bunko",
|
||||||
|
"Name": "Bunkó",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "buzogany",
|
||||||
|
"Name": "Buzogány és láncos buzogány",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 8,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "csatabard",
|
||||||
|
"Name": "Csatabárd",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 10,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "csatabard_2",
|
||||||
|
"Name": "Kétkezes csatabárd",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 20,
|
||||||
|
"DamageDice": 12,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "csakany",
|
||||||
|
"Name": "Csákány",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 5,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 4,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "darda",
|
||||||
|
"Name": "Dárda",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": true,
|
||||||
|
"Price": 10,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "fejsze",
|
||||||
|
"Name": "Fejsze",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 6,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "torpe_fejsze",
|
||||||
|
"Name": "Törpe fejsze",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": true,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 30,
|
||||||
|
"DamageDice": 10,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "handzsar",
|
||||||
|
"Name": "Handzsár",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 50,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 2,
|
||||||
|
"CritRangeStart": 18,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "harci_kalapacs",
|
||||||
|
"Name": "Harci kalapács",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 12,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "harci_kalapacs_2",
|
||||||
|
"Name": "Kétkezes harci kalapács",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 25,
|
||||||
|
"DamageDice": 10,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "fattyu_kard",
|
||||||
|
"Name": "Fattyú kard",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": true,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 35,
|
||||||
|
"DamageDice": 10,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "rovid_kard",
|
||||||
|
"Name": "Rövid kard",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 10,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "hosszu_kard",
|
||||||
|
"Name": "Hosszú kard",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 15,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "kard_2",
|
||||||
|
"Name": "Kétkezes kard",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 50,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 2,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "kasza",
|
||||||
|
"Name": "Kasza",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": true,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 18,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 2,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 4,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "landzsa",
|
||||||
|
"Name": "Lándzsa",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 5,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "sarlo",
|
||||||
|
"Name": "Sarló",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 3,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "szablya",
|
||||||
|
"Name": "Szablya",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 15,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 18,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "szigony",
|
||||||
|
"Name": "Háromágú szigony",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 10,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "tor",
|
||||||
|
"Name": "Tőr",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 2,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "ostor",
|
||||||
|
"Name": "Ostor",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": true,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 1,
|
||||||
|
"DamageDice": 3,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "okol",
|
||||||
|
"Name": "Ököl",
|
||||||
|
"Type": "kozelharci",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"ID": "dobodarda",
|
||||||
|
"Name": "Dobódárda",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0.1,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "dobotu",
|
||||||
|
"Name": "Dobótű",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": false,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0.5,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "rovid_ij",
|
||||||
|
"Name": "Rövid íj",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 30,
|
||||||
|
"DamageDice": 6,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "hosszu_ij",
|
||||||
|
"Name": "Hosszú íj",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 75,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 70
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "visszacsapo_ij",
|
||||||
|
"Name": "Visszacsapó íj",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": true,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 100,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 3,
|
||||||
|
"Range": 110
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "parittya",
|
||||||
|
"Name": "Parittya",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 0,
|
||||||
|
"DamageDice": 4,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 20,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "konnyu_szamszerij",
|
||||||
|
"Name": "Könnyű számszeríj",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 35,
|
||||||
|
"DamageDice": 8,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "nehez_szamszerij",
|
||||||
|
"Name": "Nehéz számszeríj",
|
||||||
|
"Type": "lofegyver",
|
||||||
|
"Ketkezes": true,
|
||||||
|
"Egzotikus": false,
|
||||||
|
"Rohamfelfogo": false,
|
||||||
|
"Price": 50,
|
||||||
|
"DamageDice": 10,
|
||||||
|
"NumberOfDamageDice": 1,
|
||||||
|
"CritRangeStart": 19,
|
||||||
|
"CritMultiplier": 2,
|
||||||
|
"Range": 120
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -24,24 +24,30 @@ export interface Pajzs {
|
|||||||
export interface Fegyver {
|
export interface Fegyver {
|
||||||
ID: string,
|
ID: string,
|
||||||
Name: string,
|
Name: string,
|
||||||
Range: 'kozelharci' | 'tavolsagi'
|
Type: 'kozelharci' | 'lofegyver'
|
||||||
Ketkezes: boolean,
|
Ketkezes: boolean,
|
||||||
Egzotikus: boolean,
|
Egzotikus: boolean,
|
||||||
Rohamtoro: boolean,
|
Rohamfelfogo: boolean,
|
||||||
|
Price: number,
|
||||||
|
DamageDice: number,
|
||||||
|
NumberOfDamageDice: number,
|
||||||
|
CritRangeStart: number,
|
||||||
|
CritMultiplier: number,
|
||||||
|
Range: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface KarakterFelszereles {
|
export interface KarakterFelszereles {
|
||||||
pancelID?: string
|
pancelID?: string
|
||||||
pajzsID?: string
|
pajzsID?: string
|
||||||
FegyverIDk: string[]
|
fegyverIDk: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DefaultFelszereles: KarakterFelszereles = {
|
export const DefaultFelszereles: KarakterFelszereles = {
|
||||||
FegyverIDk: [],
|
fegyverIDk: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PancelTypeLabel(type: PancelType): string {
|
export function PancelTypeLabel(type: PancelType): string {
|
||||||
let result = ''
|
let result: string
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case 'konnyu':
|
case 'konnyu':
|
||||||
result = 'Könnyű'
|
result = 'Könnyű'
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { GetPancel, KarakterFelszereles, PancelType } from "./felszereles";
|
import {Fegyver, GetPancel, KarakterFelszereles, PancelType} from "./felszereles";
|
||||||
|
import fegyverDB from './fegyver.json'
|
||||||
|
|
||||||
export enum Osztaly {
|
export enum Osztaly {
|
||||||
Harcos = 'o_harcos',
|
Harcos = 'o_harcos',
|
||||||
@@ -26,6 +27,25 @@ export function OsztalyAllowedPancelTypes(o: Osztaly): PancelType[] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function OsztalyAllowedFegyver(o: Osztaly): Fegyver[] {
|
||||||
|
const fegyverek = fegyverDB.fegyverek.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.fegyverek.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) {
|
export function SetFelszerelesForChangedOsztaly(o: Osztaly, felszereles: KarakterFelszereles, changeFelszereles: (f: KarakterFelszereles) => void) {
|
||||||
const allowedPancelTypes = OsztalyAllowedPancelTypes(o)
|
const allowedPancelTypes = OsztalyAllowedPancelTypes(o)
|
||||||
const pancel = GetPancel(felszereles.pancelID)
|
const pancel = GetPancel(felszereles.pancelID)
|
||||||
|
|||||||
Reference in New Issue
Block a user