level up to 2 almost working
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import {Faj} from "./faj";
|
||||
import {Osztaly} from "./osztaly";
|
||||
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag";
|
||||
import {CalculateMasodlagosErtekek, KarakterMasodlagosErtekek} from "./masodlagos_ertekek";
|
||||
import {Kepzettseg, Kepzettsegek, KepzettsegId} from "./kepzettsegek";
|
||||
import TamadasBonuszTabla from './tamadas_bonus_tabla.json';
|
||||
import {ElsodlegesMento, MasodlagosMento, Mentok, MentoTipus} from "./mentok";
|
||||
|
||||
export interface Karakter {
|
||||
Name: string
|
||||
@@ -18,11 +18,11 @@ export interface Karakter {
|
||||
VO: () => number
|
||||
Mozgas: () => number
|
||||
Kezdemenyezes: () => number
|
||||
KozelharciTB: () => number[]
|
||||
CelzoTB: () => number[]
|
||||
KitartasMentoAlap: () => number
|
||||
ReflexMentoAlap: () => number
|
||||
AkarateroMentoAlap: () => number
|
||||
KozelharciTB: (szint?: number) => number[]
|
||||
CelzoTB: (szint?: number) => number[]
|
||||
ElsodlegesMentok: () => MentoTipus[]
|
||||
MentokAlap: (szint?: number) => Mentok
|
||||
MentokTulajdonsaggal: (szint?: number) => Mentok
|
||||
Kepzettsegek: Kepzettseg[]
|
||||
TolvajKepzettsegek: Kepzettseg[]
|
||||
}
|
||||
@@ -54,7 +54,6 @@ export class KarakterClass implements Karakter {
|
||||
public Kepzettsegek: Kepzettseg[]
|
||||
public TolvajKepzettsegek: Kepzettseg[]
|
||||
|
||||
private MasodlagosErtekek : KarakterMasodlagosErtekek
|
||||
private HProlls: number[]
|
||||
|
||||
constructor(inputs: KarakterInputs) {
|
||||
@@ -65,7 +64,6 @@ export class KarakterClass implements Karakter {
|
||||
this.Faj = inputs.faj
|
||||
this.Osztaly = inputs.osztaly
|
||||
this.Tulajdonsagok = inputs.tulajdonsagok
|
||||
this.MasodlagosErtekek = CalculateMasodlagosErtekek(inputs.osztaly, inputs.tulajdonsagok)
|
||||
this.Kepzettsegek = inputs.kepzettsegek.map(k => Kepzettsegek[k])
|
||||
this.TolvajKepzettsegek = (inputs.tolvajKepzettsegek || []).map(k => Kepzettsegek[k])
|
||||
this.Szint = Math.min(Math.max(1,inputs.szint), 20)
|
||||
@@ -77,7 +75,7 @@ export class KarakterClass implements Karakter {
|
||||
.map(hp => Math.max(1, hp + Modifier(this.Tulajdonsagok.t_egs)))
|
||||
.reduce((sum, val) => sum + val, 0)
|
||||
|
||||
public VO = () => this.MasodlagosErtekek.VO
|
||||
public VO = () => 10 + Modifier(this.Tulajdonsagok.t_ugy)
|
||||
|
||||
public Mozgas = () => this.Faj === Faj.Torpe ? 20 : 30
|
||||
|
||||
@@ -85,7 +83,7 @@ export class KarakterClass implements Karakter {
|
||||
return Modifier(this.Tulajdonsagok.t_ugy) + (this.Osztaly === Osztaly.Tolvaj ? 4 : 0)
|
||||
}
|
||||
|
||||
public TamadasBonusz() : number[] {
|
||||
public TamadasBonusz(szint: number = this.Szint) : number[] {
|
||||
let base = []
|
||||
switch (this.Osztaly){
|
||||
case Osztaly.Barbar:
|
||||
@@ -104,70 +102,64 @@ export class KarakterClass implements Karakter {
|
||||
base = TamadasBonuszTabla['feles'];
|
||||
break;
|
||||
}
|
||||
return base[this.Szint-1]
|
||||
return base[szint-1]
|
||||
}
|
||||
|
||||
public KozelharciTB(): number[] {
|
||||
const base = this.TamadasBonusz();
|
||||
public KozelharciTB(szint: number = this.Szint): number[] {
|
||||
const base = this.TamadasBonusz(szint);
|
||||
let modifier = Modifier(this.Tulajdonsagok.t_ero)
|
||||
if (this.Osztaly === Osztaly.Kaloz && this.Tulajdonsagok.t_ugy > this.Tulajdonsagok.t_ero) {
|
||||
modifier = Modifier(this.Tulajdonsagok.t_ugy)
|
||||
}
|
||||
return base.map(v => v + modifier)
|
||||
}
|
||||
public CelzoTB(): number[] {
|
||||
let base = this.TamadasBonusz()
|
||||
public CelzoTB(szint: number = this.Szint): number[] {
|
||||
let base = this.TamadasBonusz(szint)
|
||||
if (this.Osztaly === Osztaly.Ijasz) {
|
||||
base = [base[0], ...base]
|
||||
}
|
||||
return base.map(v => v + Modifier(this.Tulajdonsagok.t_ugy))
|
||||
}
|
||||
|
||||
public KitartasMentoAlap() : number {
|
||||
public ElsodlegesMentok() : MentoTipus[] {
|
||||
let t: MentoTipus[] = []
|
||||
switch (this.Osztaly){
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
t = ['kitartas'];
|
||||
break;
|
||||
case Osztaly.Pap:
|
||||
return 2;
|
||||
t = ['kitartas', 'akaratero'];
|
||||
break;
|
||||
case Osztaly.Tolvaj:
|
||||
t = ['reflex'];
|
||||
break;
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 0;
|
||||
t = ['akaratero']
|
||||
break;
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
public MentokAlap(szint: number = this.Szint) {
|
||||
const elsodlegesek = this.ElsodlegesMentok()
|
||||
return {
|
||||
kitartas: elsodlegesek.includes('kitartas') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||
reflex: elsodlegesek.includes('reflex') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||
akaratero: elsodlegesek.includes('akaratero') ? ElsodlegesMento(szint) : MasodlagosMento(szint),
|
||||
}
|
||||
}
|
||||
|
||||
public ReflexMentoAlap() : number {
|
||||
switch (this.Osztaly){
|
||||
case Osztaly.Tolvaj:
|
||||
return 2;
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
case Osztaly.Pap:
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public AkarateroMentoAlap() : number {
|
||||
switch (this.Osztaly){
|
||||
case Osztaly.Pap:
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 2;
|
||||
case Osztaly.Tolvaj:
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
return 0;
|
||||
public MentokTulajdonsaggal(szint: number = this.Szint) {
|
||||
const mentok = this.MentokAlap(szint)
|
||||
return {
|
||||
kitartas: mentok.kitartas + Modifier(this.Tulajdonsagok.t_egs),
|
||||
reflex: mentok.reflex + Modifier(this.Tulajdonsagok.t_ugy),
|
||||
akaratero: mentok.akaratero + Modifier(this.Tulajdonsagok.t_bol),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
import {Osztaly} from "./osztaly";
|
||||
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag";
|
||||
|
||||
export interface KarakterMasodlagosErtekek {
|
||||
HP: number
|
||||
VO: number
|
||||
CelzoTB: number
|
||||
KozelHarciTB: number
|
||||
KitartasMento: number
|
||||
ReflexMento: number
|
||||
AkarateroMento: number
|
||||
}
|
||||
|
||||
export function CalculateMasodlagosErtekek(osztaly: Osztaly, tulajdonsagok: KarakterTulajdonsagok) : KarakterMasodlagosErtekek {
|
||||
return {
|
||||
HP: HP(osztaly, tulajdonsagok.t_egs),
|
||||
VO: 10 + Modifier(tulajdonsagok.t_ugy),
|
||||
KozelHarciTB: KozelharciTB(osztaly, tulajdonsagok),
|
||||
CelzoTB: TamadasBonusz(osztaly) + Modifier(tulajdonsagok.t_ugy),
|
||||
|
||||
KitartasMento: KitartasMento(osztaly) + Modifier(tulajdonsagok.t_egs),
|
||||
ReflexMento: ReflexMento(osztaly) + Modifier(tulajdonsagok.t_ugy),
|
||||
AkarateroMento: AkarateroMento(osztaly) + Modifier(tulajdonsagok.t_bol),
|
||||
}
|
||||
}
|
||||
|
||||
function HP(osztaly: Osztaly, egeszseg: number) {
|
||||
let base = 4;
|
||||
switch (osztaly){
|
||||
case Osztaly.Barbar:
|
||||
base = 12
|
||||
break;
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
base = 10;
|
||||
break
|
||||
case Osztaly.Pap:
|
||||
base = 8;
|
||||
break;
|
||||
case Osztaly.Tolvaj:
|
||||
base = 6;
|
||||
break;
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
base = 4;
|
||||
break;
|
||||
}
|
||||
return base + Modifier(egeszseg)
|
||||
}
|
||||
|
||||
function TamadasBonusz(osztaly: Osztaly) : number {
|
||||
switch (osztaly){
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
return 2;
|
||||
case Osztaly.Pap:
|
||||
case Osztaly.Tolvaj:
|
||||
return 0;
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function KozelharciTB(osztaly: Osztaly, tulajdonsagok: KarakterTulajdonsagok): number {
|
||||
const base = TamadasBonusz(osztaly);
|
||||
if (osztaly === Osztaly.Kaloz && tulajdonsagok.t_ugy > tulajdonsagok.t_ero) {
|
||||
return base + Modifier(tulajdonsagok.t_ugy)
|
||||
}
|
||||
return base + Modifier(tulajdonsagok.t_ero)
|
||||
}
|
||||
|
||||
function KitartasMento(osztaly: Osztaly) : number {
|
||||
switch (osztaly){
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
case Osztaly.Pap:
|
||||
return 2;
|
||||
case Osztaly.Tolvaj:
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function ReflexMento(osztaly: Osztaly) : number {
|
||||
switch (osztaly){
|
||||
case Osztaly.Tolvaj:
|
||||
return 2;
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
case Osztaly.Pap:
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function AkarateroMento(osztaly: Osztaly) : number {
|
||||
switch (osztaly){
|
||||
case Osztaly.Pap:
|
||||
case Osztaly.Varazslo:
|
||||
case Osztaly.Illuzionista:
|
||||
return 2;
|
||||
case Osztaly.Tolvaj:
|
||||
case Osztaly.Barbar:
|
||||
case Osztaly.Amazon:
|
||||
case Osztaly.Ijasz:
|
||||
case Osztaly.Kaloz:
|
||||
case Osztaly.Harcos:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
export interface Mentok {
|
||||
kitartas: number
|
||||
reflex: number
|
||||
akaratero: number
|
||||
}
|
||||
export type MentoTipus = keyof Mentok
|
||||
|
||||
export function MentoTipusLabel(tipus: MentoTipus): string {
|
||||
let label: string | null = null
|
||||
switch (tipus) {
|
||||
case "akaratero":
|
||||
label = "Akaraterő";
|
||||
break;
|
||||
case "kitartas":
|
||||
label = "Kitartás";
|
||||
break;
|
||||
case "reflex":
|
||||
label = "Reflex";
|
||||
break;
|
||||
}
|
||||
return label
|
||||
}
|
||||
|
||||
export function ElsodlegesMento(szint: number): number {
|
||||
return Math.min(Math.floor(2 + szint / 2), 10);
|
||||
}
|
||||
|
||||
export function MasodlagosMento(szint: number): number {
|
||||
return Math.floor(szint / 3)
|
||||
}
|
||||
Reference in New Issue
Block a user