Files
kemkas-frontend/frontend/src/second-edition/domain-models/faj2E.ts
T

337 lines
18 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {KarakterTulajdonsagok, Tulajdonsag2E} from "./tulajdonsag2E";
export enum Faj2E {
Ember = 'f_2e_ember',
Amazon = 'f_2e_amazon',
Birodalmi = 'f_2e_birodalmi',
Nomad = 'f_2e_nomad',
Eszaki = 'f_2e_eszaki',
Osember = 'f_2e_osember',
Elf = 'f_2e_elf',
Felelf = 'f_2e_felelf',
Felork = 'f_2e_felork',
Felszerzet = 'f_2e_felszerzet',
Gnom = 'f_2e_gnom',
Torpe = 'f_2e_torpe',
}
export function FajLabel(faj: Faj2E) : string {
switch (faj) {
case Faj2E.Ember: return 'Ember';
case Faj2E.Amazon: return 'Amazon';
case Faj2E.Birodalmi: return 'Birodalmi';
case Faj2E.Nomad: return 'Nomád';
case Faj2E.Eszaki: return 'Északi';
case Faj2E.Osember: return 'Ősember';
case Faj2E.Elf: return 'Elf';
case Faj2E.Felelf: return 'Félelf';
case Faj2E.Felork: return 'Félork';
case Faj2E.Felszerzet: return 'Félszerzet';
case Faj2E.Gnom: return 'Gnóm';
case Faj2E.Torpe: return 'Törpe';
}
}
export function FajDescription(faj: Faj2E) : string {
switch (faj) {
case Faj2E.Ember: return "Az emberi népek sokfélesége és szaporasága, valamint a bennük élő felfedezői hajlam és erkölcsi rugalmasság hatására képviselőik majdnem minden földön megtalálhatók. A legtöbb ember a lenti vonásokkal rendelkezik.";
case Faj2E.Amazon: return "Bár az amazonok barbár népe igen kis létszámú, harciasságuk miatt mégis félik őket. Az amazonok nyúlánk termetűek, hajuk általában vöröses vagy világosbarna, bőrük világos. Társadalmukban teljes a nőuralom; a férfiakat rabszolgaságban tartják és megtiltják számukra a fegyverek viselését. Képzett tengeri rablók, de a szárazföldön is megállják a helyüket. Az amazon nők kivétel nélkül értenek a harchoz és soha, soha nem hagyják megtorlatlanul az őket ért sérelmeket. Technikailag fejletlenek. Kis erejű passzív pszionikus (elmebeli) képességeik vannak.";
case Faj2E.Birodalmi: return "Dekadens, hanyatló birodalmak előkelő lakói. Életüket többnyire dekadens élvezetek habzsolásával, kábítószeres mámorban töltik; soraikban a beltenyészet és a degeneráció miatt gyakoriak az örökletes betegségek. Városaik számtalan titkot és mesés kincseket rejtenek.";
case Faj2E.Eszaki: return "Az északi kultúra lételeme a harc és a hajózás. Még nőik is kiválóan forgatják a harci fejszét vagy a hosszú nyelű bárdot, s bár rabszolgatartók kegyetlenségnek tartják rabszolgáikat a legelemibb védekező eszközöktől, mint a késtől vagy a rövidkardtól megfosztani, vagy fegyvertelenekre támadni. Ettől eltekintve vérszomjasak, és általában semleges vagy gonosz jelleműek. Testalkatuk magas és erős, hajuk vöröses, szőke vagy világosbarna. A férfiak szakállat vagy bajuszt, a nők hosszú hajat viselnek. A déli vidékeken civilizálatlanságuk és faragatlanságuk miatt gyakran megvetik őket.";
case Faj2E.Nomad: return "A lovas nomádok kultúrája mindmáig megőrizte primitívségét. Az alkalomnak megfelelően állattartásból, lovas portyázásból, kereskedésből vagy ezek kombinációjából élnek. Eszközeik is egyszerűek: fegyvereik főleg hosszú lándzsák és íjak, és bár kedvelik a kardokat és láncvérteket, nem jeleskednek azok előállításában (a vas megmunkálását kovácsaik féltett titokként őrzik). Többnyire semleges jelleműek, de otthonuktól elszakadva mindenhol feltalálják magukat, és hajlamosak a gonoszra. A nomádok középtermetűek, bőrük cserzett, hajuk olajos fekete, amit leggyakrabban copfban fognak össze. A férfiak kedvelik a bajusz viseletét." ;
case Faj2E.Osember: return "Vad földek primitív őslakói. Máig megőrizték görnyedt tartásukat, szőrös küllemüket és loboncos fekete hajukat. A fémmegmunkálást még sokan nem ismerik, s kőeszközöket esetleg rezet használnak. Írásuk egyáltalán nincs. Félistenekként tisztelik hátasaikat, a hatalmas mamutokat. Sokan értelem nélküli vagy gyermeki vadaknak hiszik őket, nagy kárukra: az ősemberekben gyakran lakozik bestiális ravaszság, és a civilizált ember eszközeihez jutva rendkívül veszedelmesek.";
case Faj2E.Elf: return "Az elfek szépségükről, 150-200 éves élettartamukról és fejlett civilizációjukról ismertek, amely ötvözi a városi és természeti élet előnyeit. Termetük nyúlánk, vonásaik az embernél finomabbak, de egyben törékenyebbek. Kiváló íjászok és varázslók. Általában visszahúzódók, csak ritkán lépnek kapcsolatba a rövidebb életű népekkel legjobban az emberekkel és a félszerzetekkel jönnek ki. Jellemük általában kaotikus jó.";
case Faj2E.Felelf: return "A félelfek elf és ember szülők gyermekei, akik nem tartoznak egyik közösséghez sem jellemvonásaik általában az elfekhez húznak, de élettartamuk emberi. Kis számuk miatt nem alkotnak külön nemzetségeket, többségük magányos utazó.";
case Faj2E.Felork: return "A félorkok többsége külsejében inkább rút emberre hasonlít (bár termetük gyakran görnyedt, arcvonásaik pedig disznószerűek), belsőleg azonban számos ork vonással rendelkeznek: számítók, magányosak és bizalmatlanok a szebb fajokkal, de legtöbbször fajtársaikkal is. Különösen sok közöttük az orgyilkos és a közönséges gonosztevő; egyikük-másikuk ezt némi mágikus erővel vegyíti. Nem alkotnak különálló közösségeket, életük általában rövid és erőszakos. A legtöbb félork gonosz jellemű.";
case Faj2E.Felszerzet: return "A félszerzetek általában megelégszenek a nyugodt vidéki élettel. Termetük az emberi fele, élettartamuk a másfélszerese. Hajlamosak az elhízásra, s lábukat vastag szőr borítja. Általában mezítláb járnak. Mivel lusták és kényelemszeretők, csak ritkán adják fejüket kalandokra ekkor azonban kiváló tolvajokká válhatnak.";
case Faj2E.Gnom: return "A gnómok különösen ritka, elsősorban az embernéppel együtt élő Faj2E. A gnómokat alacsony termetükről, vékony végtagjaikról és tömpe, húsos orrukról lehet fölismerni. Élettartamuk az emberi másfélszerese. A gnómok jó kézművesek és van érzékük a mágiához is elsősorban az illuzionisták trükkjeihez vonzódnak. A legtöbb gnóm semleges jó vagy semleges jellemű.";
case Faj2E.Torpe: return "A törpék elsősorban hegyek között és dombvidékeken élnek. Termetük kicsi, de testük tömzsi és igen szívós. Bozontos szakállat viselnek, amely a férfiak esetén dús és sörteszerű, a nőknél finomabb és ritkásabb. A törpék kiemelkedőek a mindenféle mesterségekben, különösen a fémmunkákban, de harcban is megállják helyüket. Nagy nemzetségekbe szerveződnek és híresek igazságérzetükről, makacsságukról és kapzsiságukról. A legtöbb törpe törvényes jó vagy törvényes semleges jellemű..";
}
}
export function FajSpecials(faj : Faj2E) : string[] {
switch (faj) {
case Faj2E.Ember: return [
"A játék kezdetén egy extra képzettséggel kezdenek",
"Korlátlanul fejlődhetnek minden osztályban",
];
case Faj2E.Amazon: return [
"+1-et kapnak kezdeményezésükre",
"Ha két vagy több amazon együttesen harcol, VO-juk 2-vel nő pszionikus képességeik miatt",
"Szintkorlátok: Harcos 9, Pap 5, Tolvaj 3, Varázsló 3",
];
case Faj2E.Birodalmi: return [
"+1 Intelligencia, -1 Egészség",
"Egyik kezdő képzettségük mindenképpen az Alkímia, a Méregkeverés vagy az Okkultizmus.",
"Szintkorlátok: Harcos 7, Pap 5, Tolvaj 5, Varázsló 9",
];
case Faj2E.Eszaki: return [
"+1 Erő, -1 Bölcsesség",
"Az egyik kezdő képzettségük mindenképpen a Hajózás",
"-1-et kapnak minden Karizmapróbájukra (népük tagjai között is)",
"Szintkorlátok: Harcos 9, Pap 7, Tolvaj 7, Varázsló 3",
];
case Faj2E.Nomad: return [
"+1 Egészség, -1 Bölcsesség",
"Az egyik kezdő képzettségük mindenképpen a Lovaglás",
"Szintkorlátok: Harcos 9, Pap 5, Tolvaj 7, Varázsló 3",
];
case Faj2E.Osember: return [
"+1 Erő, +1 Egészség, -1 Intelligencia, -1 Bölcsesség",
"Szintkorlátok: Harcos -, Pap 5, Tolvaj 4, Varázsló 0",
];
case Faj2E.Elf: return [
"+1 Ügyesség, -1 Egészség",
"Immunisak az altató mágiára, +2 mentődobás bűbáj ellen",
"Képzettek a hosszúíjak és a hosszúkard használatában akkor is, ha osztályuk ezt nem adná meg nekik",
"Az egyik képzettségük mindenképpen a Vadonjárás",
"Nem támaszthatók föl",
"Szintkorlátok: Harcos 7, Pap 3, Tolvaj 5, Varázsló 7",
];
case Faj2E.Felelf: return [
"Képzettek a hosszúíjak és a hosszúkard használatában akkor is, ha osztályuk ezt nem adná meg nekik",
"Az egyik képzettségük mindenképpen a Vadonjárás",
"Szintkorlátok: Harcos 9, Pap 5, Tolvaj 9, Varázsló 9",
];
case Faj2E.Felork: return [
"+1 Erő, +1 Egészség, -2 Karizma",
"A fenti levonáson túl -1-et kapnak minden Karizmapróbájukra (más félorkokkal szemben is)",
"Szintkorlátok: Harcos 7, Pap 5, Tolvaj 7, Varázsló 5",
];
case Faj2E.Felszerzet: return [
"+1 Ügyesség, -1 Erő",
"+1 VO-t kapnak kis méretük miatt",
"+1 támadást kapnak dobófegyverekre és parittyákra",
"Kétkezes közelharci fegyvereket -4 levonással, másfélkezes fegyvereket két kézzel forgathatnak",
"Kétszer annyi élelmet kell enniük, mint másoknak",
"Szintkorlátok: Harcos 5, Pap 3, Tolvaj 7, Varázsló 3",
];
case Faj2E.Gnom: return [
"+1 Intelligencia, -1 Erő",
"+1 VO-t kapnak kis méretük miatt",
"+1-et kapnak a mágia elleni mentődobásaikra",
"Kétkezes közelharci fegyvereket -4 levonással, másfélkezes fegyvereket két kézzel forgathatnak",
"Szintkorlátok: Harcos 3, Pap 3, Tolvaj 5, Varázsló 7",
];
case Faj2E.Torpe: return [
"+1 Egészség, -1 Karizma",
"Lassabban mozognak az embereknél, kezdeményezésükre -2-t kapnak",
"+2 mentődobást kapnak mérgek, betegségek és varázslatok hatásai ellen",
"Az egyik képzettségük mindenképpen az Értékbecslés",
"Szintkorlátok: Harcos 7, Pap 5, Tolvaj 5, Varázsló 3",
];
}
}
export type Szintkorlatok = Record<string, number> // TODO!! use Osztaly enum, rule fix!
export interface FajDetails {
ID: Faj2E,
Label: string,
Description: string,
Specials: string[],
TulajdonsagModifiers: KarakterTulajdonsagok
Szintkorlatok: Szintkorlatok
}
export function GetFajDetails(faj: Faj2E): FajDetails {
return {
ID: faj,
Label: FajLabel(faj),
Description: FajDescription(faj),
Specials: FajSpecials(faj),
TulajdonsagModifiers: fajiTulajdonsagModositok(faj),
Szintkorlatok: SzintKorlatokFajokra(faj),
}
}
// noinspection OverlyComplexFunctionJS,FunctionTooLongJS
function tulajdonsagModositokPerFaj(tul: Tulajdonsag2E, faj: Faj2E) : number {
switch (faj) {
case Faj2E.Birodalmi: switch (tul) {
case Tulajdonsag2E.Egeszseg: return -1;
case Tulajdonsag2E.Intelligencia: return +1;
default: return 0;
}
case Faj2E.Eszaki: switch (tul) {
case Tulajdonsag2E.Ero: return +1;
case Tulajdonsag2E.Bolcsesseg: return -1;
default: return 0;
}
case Faj2E.Nomad: switch (tul) {
case Tulajdonsag2E.Egeszseg: return +1;
case Tulajdonsag2E.Bolcsesseg: return -1;
default: return 0
}
case Faj2E.Osember: switch (tul) {
case Tulajdonsag2E.Ero: return +1;
case Tulajdonsag2E.Egeszseg: return +1;
case Tulajdonsag2E.Intelligencia: return -1;
case Tulajdonsag2E.Bolcsesseg: return -1;
default: return 0
}
case Faj2E.Elf: switch (tul) {
case Tulajdonsag2E.Egeszseg: return -1;
case Tulajdonsag2E.Ugyesseg: return +1;
default: return 0;
}
case Faj2E.Felork: switch (tul) {
case Tulajdonsag2E.Ero: return +1;
case Tulajdonsag2E.Egeszseg: return +1;
case Tulajdonsag2E.Karizma: return -2;
default: return 0;
}
case Faj2E.Felszerzet: switch (tul) {
case Tulajdonsag2E.Ero: return -1;
case Tulajdonsag2E.Ugyesseg: return +1;
default: return 0;
}
case Faj2E.Gnom: switch (tul) {
case Tulajdonsag2E.Ero: return -1;
case Tulajdonsag2E.Intelligencia: return +1;
default: return 0;
}
case Faj2E.Torpe: switch (tul) {
case Tulajdonsag2E.Egeszseg: return +1;
case Tulajdonsag2E.Karizma: return -1;
default: return 0;
}
default: return 0;
}
}
export function TulajdonsagModositokFajokra(tul: Tulajdonsag2E) {
return (faj: Faj2E) => tulajdonsagModositokPerFaj(tul, faj);
}
export function TulajdonsagokFajjal(tulajdonsagok: KarakterTulajdonsagok, faj: Faj2E): KarakterTulajdonsagok {
return {
[Tulajdonsag2E.Ero]: tulajdonsagok.t_ero + tulajdonsagModositokPerFaj(Tulajdonsag2E.Ero, faj),
[Tulajdonsag2E.Ugyesseg]: tulajdonsagok.t_ugy + tulajdonsagModositokPerFaj(Tulajdonsag2E.Ugyesseg, faj),
[Tulajdonsag2E.Egeszseg]: tulajdonsagok.t_egs + tulajdonsagModositokPerFaj(Tulajdonsag2E.Egeszseg, faj),
[Tulajdonsag2E.Intelligencia]: tulajdonsagok.t_int + tulajdonsagModositokPerFaj(Tulajdonsag2E.Intelligencia, faj),
[Tulajdonsag2E.Bolcsesseg]: tulajdonsagok.t_bol + tulajdonsagModositokPerFaj(Tulajdonsag2E.Bolcsesseg, faj),
[Tulajdonsag2E.Karizma]: tulajdonsagok.t_kar + tulajdonsagModositokPerFaj(Tulajdonsag2E.Karizma, faj),
}
}
function fajiTulajdonsagModositok(faj: Faj2E): KarakterTulajdonsagok {
return {
[Tulajdonsag2E.Ero]: TulajdonsagModositokFajokra(Tulajdonsag2E.Ero)(faj),
[Tulajdonsag2E.Ugyesseg]: TulajdonsagModositokFajokra(Tulajdonsag2E.Ugyesseg)(faj),
[Tulajdonsag2E.Egeszseg]: TulajdonsagModositokFajokra(Tulajdonsag2E.Egeszseg)(faj),
[Tulajdonsag2E.Intelligencia]: TulajdonsagModositokFajokra(Tulajdonsag2E.Intelligencia)(faj),
[Tulajdonsag2E.Bolcsesseg]: TulajdonsagModositokFajokra(Tulajdonsag2E.Bolcsesseg)(faj),
[Tulajdonsag2E.Karizma]: TulajdonsagModositokFajokra(Tulajdonsag2E.Karizma)(faj),
}
}
const EmberiSzintKorlatok: Szintkorlatok = {
o_amazon: 0,
o_barbar: 12,
o_harcos: 12,
o_ijasz: 12,
o_illuzionista: 12,
o_kaloz: 12,
o_pap: 12,
o_tolvaj: 12,
o_varazslo: 12
}
// noinspection OverlyComplexFunctionJS,FunctionTooLongJS
export function SzintKorlatokFajokra(faj: Faj2E) : Szintkorlatok {
let szintkorlatok = {...EmberiSzintKorlatok}
switch (faj) {
case Faj2E.Ember: break;
case Faj2E.Amazon:
szintkorlatok.o_pap = 5
szintkorlatok.o_tolvaj = 0
szintkorlatok.o_illuzionista = 0
szintkorlatok.o_varazslo = 0
szintkorlatok.o_amazon = 20
break
case Faj2E.Birodalmi:
szintkorlatok.o_harcos = 7
szintkorlatok.o_barbar = 7
szintkorlatok.o_ijasz = 7
szintkorlatok.o_kaloz = 7
szintkorlatok.o_pap = 5
szintkorlatok.o_tolvaj = 5
break
case Faj2E.Eszaki:
case Faj2E.Nomad:
szintkorlatok.o_pap = 7
szintkorlatok.o_illuzionista = 5
szintkorlatok.o_varazslo = 5
break
case Faj2E.Osember:
szintkorlatok.o_pap = 7
szintkorlatok.o_tolvaj = 4
szintkorlatok.o_illuzionista = 0
szintkorlatok.o_varazslo = 0
break
case Faj2E.Elf:
szintkorlatok.o_pap = 7
szintkorlatok.o_tolvaj = 6
szintkorlatok.o_illuzionista = 9
szintkorlatok.o_varazslo = 9
szintkorlatok.o_harcos = 9
szintkorlatok.o_barbar = 9
szintkorlatok.o_ijasz = 9
szintkorlatok.o_kaloz = 9
break
case Faj2E.Felelf:
szintkorlatok.o_pap = 5
szintkorlatok.o_tolvaj = 9
szintkorlatok.o_illuzionista = 9
szintkorlatok.o_varazslo = 9
szintkorlatok.o_harcos = 9
szintkorlatok.o_barbar = 9
szintkorlatok.o_ijasz = 9
szintkorlatok.o_kaloz = 9
break
case Faj2E.Felork:
szintkorlatok.o_pap = 5
szintkorlatok.o_tolvaj = 9
szintkorlatok.o_illuzionista = 5
szintkorlatok.o_varazslo = 5
szintkorlatok.o_harcos = 9
szintkorlatok.o_barbar = 9
szintkorlatok.o_ijasz = 9
szintkorlatok.o_kaloz = 9
break
case Faj2E.Felszerzet:
szintkorlatok.o_pap = 6
szintkorlatok.o_tolvaj = 9
szintkorlatok.o_illuzionista = 4
szintkorlatok.o_varazslo = 4
szintkorlatok.o_harcos = 6
szintkorlatok.o_barbar = 6
szintkorlatok.o_ijasz = 6
szintkorlatok.o_kaloz = 6
break
case Faj2E.Gnom:
szintkorlatok.o_pap = 6
szintkorlatok.o_tolvaj = 8
szintkorlatok.o_illuzionista = 7
szintkorlatok.o_varazslo = 7
szintkorlatok.o_harcos = 6
szintkorlatok.o_barbar = 6
szintkorlatok.o_ijasz = 6
szintkorlatok.o_kaloz = 6
break
case Faj2E.Torpe:
szintkorlatok.o_pap = 9
szintkorlatok.o_tolvaj = 6
szintkorlatok.o_illuzionista = 4
szintkorlatok.o_varazslo = 4
szintkorlatok.o_harcos = 9
szintkorlatok.o_barbar = 9
szintkorlatok.o_ijasz = 9
szintkorlatok.o_kaloz = 9
break
}
return szintkorlatok
}