mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
tolvaj level 9 kepzettseg
This commit is contained in:
@@ -201,4 +201,48 @@ describe("LevelUps Harcos specialization indexing", () => {
|
|||||||
expect(stateAfter.szintlepesek[5]?.tolvajExtraKepzettseg).toBe(nextKepzettseg);
|
expect(stateAfter.szintlepesek[5]?.tolvajExtraKepzettseg).toBe(nextKepzettseg);
|
||||||
expect(stateAfter.szintlepesek[4]?.tolvajExtraKepzettseg).toBeUndefined();
|
expect(stateAfter.szintlepesek[4]?.tolvajExtraKepzettseg).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("at Tolvaj level 9 selector includes class-restricted non-Tolvaj skills", async () => {
|
||||||
|
const tolvajLevel9: Karakter2E = {
|
||||||
|
...DefaultKarakter,
|
||||||
|
szint: 9,
|
||||||
|
szintlepesek: [
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 2, tolvajExtraKepzettseg: "k_meregkeveres" },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, tolvajExtraKepzettseg: "k_alkimia" },
|
||||||
|
],
|
||||||
|
tolvajKepzettsegek: ["k_alcazas", "k_csapdak", "k_egyensulyozas", "k_hamisitas"],
|
||||||
|
varazslatok: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const store = configureStore({
|
||||||
|
reducer: {
|
||||||
|
user: userReducer,
|
||||||
|
character2E: characterReducer,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
store.dispatch(setCharacter(tolvajLevel9));
|
||||||
|
|
||||||
|
const sut = render(
|
||||||
|
<Provider store={store}>
|
||||||
|
<LevelUps
|
||||||
|
karakter={store.getState().character2E}
|
||||||
|
changeKarakter={(updated) => store.dispatch(setCharacter(updated))}
|
||||||
|
/>
|
||||||
|
</Provider>
|
||||||
|
);
|
||||||
|
|
||||||
|
const selector = await sut.findByTestId("tolvaj-extra-kepzettseg-9");
|
||||||
|
const arcaneOption = selector.querySelector('option[value="k_csillagjoslas"]');
|
||||||
|
expect(arcaneOption).not.toBeNull();
|
||||||
|
|
||||||
|
fireEvent.change(selector, {target: {value: "k_csillagjoslas"}});
|
||||||
|
expect(store.getState().character2E.szintlepesek[8]?.tolvajExtraKepzettseg).toBe("k_csillagjoslas");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -90,7 +90,12 @@ function LevelUp(props: {
|
|||||||
<label className='col-md-2 col-sm-3 col-form-label'>Extra képzettség</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Extra képzettség</label>
|
||||||
<KepzettsegSelector
|
<KepzettsegSelector
|
||||||
selected={Kepzettsegek[szintlepes!.tolvajExtraKepzettseg]}
|
selected={Kepzettsegek[szintlepes!.tolvajExtraKepzettseg]}
|
||||||
kepzettsegek={[Kepzettsegek[szintlepes!.tolvajExtraKepzettseg], ...GetAvailableKepzettsegek(karakter)]}
|
kepzettsegek={[
|
||||||
|
Kepzettsegek[szintlepes!.tolvajExtraKepzettseg],
|
||||||
|
...GetAvailableKepzettsegek(karakter, {
|
||||||
|
ignoreClassRestrictions: tolvajSzint === 9,
|
||||||
|
})
|
||||||
|
]}
|
||||||
dataTestId={`tolvaj-extra-kepzettseg-${szint}`}
|
dataTestId={`tolvaj-extra-kepzettseg-${szint}`}
|
||||||
changeKepzettseg={changeExtraTolvajKepzettseg}
|
changeKepzettseg={changeExtraTolvajKepzettseg}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -138,6 +138,8 @@ function setOsztalyForSzintLepes(karakter: Karakter2E, osztaly: Osztaly2E, szint
|
|||||||
faj: karakter.faj,
|
faj: karakter.faj,
|
||||||
kepzettsegek: karakter.kepzettsegek,
|
kepzettsegek: karakter.kepzettsegek,
|
||||||
tolvajKepzettsegek: karakter.tolvajKepzettsegek,
|
tolvajKepzettsegek: karakter.tolvajKepzettsegek,
|
||||||
|
}, {
|
||||||
|
ignoreClassRestrictions: tSzint === 9,
|
||||||
})[0]?.Id
|
})[0]?.Id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,6 +106,28 @@ describe("Kepzettsegek 2E", () => {
|
|||||||
const actual = GetAvailableKepzettsegek(karakter)
|
const actual = GetAvailableKepzettsegek(karakter)
|
||||||
expect(actual).not.toContain(Kepzettsegek.k_meregkeveres)
|
expect(actual).not.toContain(Kepzettsegek.k_meregkeveres)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("at Tolvaj level 9 extra skill can include class-restricted non-Tolvaj skills", () => {
|
||||||
|
const karakter = {
|
||||||
|
...DefaultKarakter,
|
||||||
|
szintlepesek: [
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, tulajdonsagNoveles: Tulajdonsag2E.Ugyesseg },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, tolvajExtraKepzettseg: Kepzettsegek.k_meregkeveres.Id },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6, },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
const restricted = GetAvailableKepzettsegek(karakter)
|
||||||
|
expect(restricted).not.toContain(Kepzettsegek.k_csillagjoslas)
|
||||||
|
|
||||||
|
const unrestricted = GetAvailableKepzettsegek(karakter, { ignoreClassRestrictions: true })
|
||||||
|
expect(unrestricted).toContain(Kepzettsegek.k_csillagjoslas)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
test("multiclass characters get access to kepzettsegek from all classes", () => {
|
test("multiclass characters get access to kepzettsegek from all classes", () => {
|
||||||
const karakter = {
|
const karakter = {
|
||||||
|
|||||||
@@ -27,9 +27,15 @@ export function GetNumberOfKepzettsegek(t_int: number, faj: Faj2E, max: number =
|
|||||||
return numberOfKepzettseg;
|
return numberOfKepzettseg;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function GetAvailableKepzettsegek(karakter: Pick<Karakter2E, 'szintlepesek' | 'faj' | 'kepzettsegek' | 'tolvajKepzettsegek'>): Kepzettseg[] {
|
export function GetAvailableKepzettsegek(
|
||||||
|
karakter: Pick<Karakter2E, 'szintlepesek' | 'faj' | 'kepzettsegek' | 'tolvajKepzettsegek'>,
|
||||||
|
options?: { ignoreClassRestrictions?: boolean }
|
||||||
|
): Kepzettseg[] {
|
||||||
const osztalyok = new Set(karakter.szintlepesek.map(x => x.osztaly))
|
const osztalyok = new Set(karakter.szintlepesek.map(x => x.osztaly))
|
||||||
const availableKepzettsegek = availableKezpettsegListFajjal(karakter.faj, ...osztalyok)
|
const baseKepzettsegList = options?.ignoreClassRestrictions
|
||||||
|
? KepzettsegLista
|
||||||
|
: availableKezpettsegListFajjal(karakter.faj, ...osztalyok)
|
||||||
|
const availableKepzettsegek = baseKepzettsegList
|
||||||
.filter(k => !karakter.kepzettsegek.includes(k.Id))
|
.filter(k => !karakter.kepzettsegek.includes(k.Id))
|
||||||
|
|
||||||
if (!osztalyok.has(Osztaly2E.Tolvaj)) {
|
if (!osztalyok.has(Osztaly2E.Tolvaj)) {
|
||||||
|
|||||||
@@ -103,4 +103,49 @@ describe("Tolvaj extra skill in multiclass level-ups", () => {
|
|||||||
expect(fifthLevel?.osztaly).toBe(Osztaly2E.Tolvaj);
|
expect(fifthLevel?.osztaly).toBe(Osztaly2E.Tolvaj);
|
||||||
expect(fifthLevel?.tolvajExtraKepzettseg).toBeDefined();
|
expect(fifthLevel?.tolvajExtraKepzettseg).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("at Tolvaj class level 9 LevelUp can auto-pick a class-restricted non-Tolvaj skill", () => {
|
||||||
|
const karakter: Karakter2E = {
|
||||||
|
...DefaultKarakter,
|
||||||
|
szint: 8,
|
||||||
|
szintlepesek: [
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 2, tolvajExtraKepzettseg: "k_meregkeveres" },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
],
|
||||||
|
tolvajKepzettsegek: ["k_alcazas", "k_csapdak", "k_egyensulyozas", "k_hamisitas"],
|
||||||
|
varazslatok: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const afterLevel9 = applyLevelUp(karakter);
|
||||||
|
expect(afterLevel9.szintlepesek[8]?.tolvajExtraKepzettseg).toBe("k_alkimia");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("at Tolvaj class level 9 class-change recomputation can set non-Tolvaj restricted skill", () => {
|
||||||
|
const karakter: Karakter2E = {
|
||||||
|
...DefaultKarakter,
|
||||||
|
szint: 9,
|
||||||
|
szintlepesek: [
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 6 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 2, tolvajExtraKepzettseg: "k_meregkeveres" },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 4 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 5 },
|
||||||
|
{ osztaly: Osztaly2E.Tolvaj, HProll: 3 },
|
||||||
|
{ osztaly: Osztaly2E.Harcos, HProll: 8 },
|
||||||
|
],
|
||||||
|
tolvajKepzettsegek: ["k_alcazas", "k_csapdak", "k_egyensulyozas", "k_hamisitas"],
|
||||||
|
varazslatok: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const changed = ChangeOsztalyAtSzint(karakter, Osztaly2E.Tolvaj, 9);
|
||||||
|
expect(changed.szintlepesek[8]?.tolvajExtraKepzettseg).toBe("k_alkimia");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -67,7 +67,9 @@ export function LevelUp(karakter: Karakter2E, changeKarakter: (input: Karakter2E
|
|||||||
if (autoPickedOsztaly === Osztaly2E.Tolvaj){
|
if (autoPickedOsztaly === Osztaly2E.Tolvaj){
|
||||||
const tolvajSzint = 1 + karakter.szintlepesek.filter(x => x.osztaly === Osztaly2E.Tolvaj).length
|
const tolvajSzint = 1 + karakter.szintlepesek.filter(x => x.osztaly === Osztaly2E.Tolvaj).length
|
||||||
if (tolvajSzint === 5 || tolvajSzint === 9) {
|
if (tolvajSzint === 5 || tolvajSzint === 9) {
|
||||||
const availableKepzettsegek = GetAvailableKepzettsegek(karakter)
|
const availableKepzettsegek = GetAvailableKepzettsegek(karakter, {
|
||||||
|
ignoreClassRestrictions: tolvajSzint === 9,
|
||||||
|
})
|
||||||
szintlepes.tolvajExtraKepzettseg = availableKepzettsegek[0].Id;
|
szintlepes.tolvajExtraKepzettseg = availableKepzettsegek[0].Id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user