diff --git a/frontend/src/second-edition/components/LevelUps.test.tsx b/frontend/src/second-edition/components/LevelUps.test.tsx
index 10fd337..ec0a592 100644
--- a/frontend/src/second-edition/components/LevelUps.test.tsx
+++ b/frontend/src/second-edition/components/LevelUps.test.tsx
@@ -66,4 +66,92 @@ describe("LevelUps Harcos specialization indexing", () => {
expect(stateAfter.szintlepesek[0]?.harcosFegyver).toBeUndefined();
expect(stateAfter.szintlepesek[1]?.harcosFegyver).toBe(nextSpec);
});
+
+ it("does not render tulajdonsag selector at level 4 when all abilities are maxed", () => {
+ const maxedCharacter: Karakter2E = {
+ ...DefaultKarakter,
+ szint: 1,
+ tulajdonsagok: {
+ t_ero: 18,
+ t_ugy: 18,
+ t_egs: 18,
+ t_int: 18,
+ t_bol: 18,
+ t_kar: 18,
+ },
+ szintlepesek: [{
+ osztaly: Osztaly2E.Pap,
+ HProll: 8,
+ }],
+ tolvajKepzettsegek: [],
+ varazslatok: [],
+ };
+
+ const level2 = applyLevelUp(maxedCharacter);
+ const level3 = applyLevelUp(level2);
+ const level4 = applyLevelUp(level3);
+
+ expect(level4.szintlepesek[3]?.tulajdonsagNoveles).toBeUndefined();
+
+ const store = configureStore({
+ reducer: {
+ user: userReducer,
+ character2E: characterReducer,
+ },
+ });
+ store.dispatch(setCharacter(level4));
+
+ const sut = render(
+
+ store.dispatch(setCharacter(updated))}
+ />
+
+ );
+
+ expect(sut.queryByTestId("tulajdonsag-4")).toBeNull();
+ });
+
+ it("does not render kaloz krit selector when tengeresz milestone exists but krit is missing", () => {
+ const inconsistentTengeresz: Karakter2E = {
+ ...DefaultKarakter,
+ szint: 3,
+ szintlepesek: [
+ {
+ osztaly: Osztaly2E.Tengeresz,
+ HProll: 10,
+ },
+ {
+ osztaly: Osztaly2E.Tengeresz,
+ HProll: 5,
+ },
+ {
+ osztaly: Osztaly2E.Tengeresz,
+ HProll: 7,
+ }
+ ],
+ tolvajKepzettsegek: [],
+ varazslatok: [],
+ };
+
+ const store = configureStore({
+ reducer: {
+ user: userReducer,
+ character2E: characterReducer,
+ },
+ });
+ store.dispatch(setCharacter(inconsistentTengeresz));
+
+ const sut = render(
+
+ store.dispatch(setCharacter(updated))}
+ />
+
+ );
+
+ expect(sut.queryByTestId("kaloz-krit-3")).toBeNull();
+ });
});
diff --git a/frontend/src/second-edition/components/LevelUps.tsx b/frontend/src/second-edition/components/LevelUps.tsx
index 16c0138..771ded8 100644
--- a/frontend/src/second-edition/components/LevelUps.tsx
+++ b/frontend/src/second-edition/components/LevelUps.tsx
@@ -41,6 +41,8 @@ function LevelUp(props: {
const kalozSzint = classLevels[Osztaly2E.Tengeresz]
const tolvajSzint = classLevels[Osztaly2E.Tolvaj]
const szintlepes = karakter.szintlepesek[szint-1];
+ const tulajdonsagNoveles = szintlepes?.tulajdonsagNoveles;
+ const kalozKritikus = szintlepes?.kalozKritikus;
return
@@ -54,10 +56,10 @@ function LevelUp(props: {
osztalySzint={classLevels[osztaly]}
dataTestId={`osztaly-${szint}`}
/>}
- {szint % 4 === 0 &&
+ {szint % 4 === 0 && tulajdonsagNoveles != null &&
}
@@ -73,9 +75,9 @@ function LevelUp(props: {
karakterSzint={szint}
/>
}
- {osztaly === Osztaly2E.Tengeresz && kalozSzint % 3 === 0 &&
+ {osztaly === Osztaly2E.Tengeresz && kalozSzint % 3 === 0 && kalozKritikus != null &&
x.kalozKritikus)}
changeKrit={changeKalozKritikus}
szint={kalozSzint}
@@ -101,16 +103,19 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const {karakter, changeKarakter} = props;
const tulajdonsagokAtSzint = (szint: number) => TulajdonsagokTotal({...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint)})
+ const szintlepesAt = (szint: number) => karakter.szintlepesek[szint-1]!
const changeRolledHPAtSzint = (szint: number) => (newHProll: number) => {
- changeKarakter({...karakter, szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {...karakter.szintlepesek[szint-1], HProll: newHProll})})
+ const szintlepes = szintlepesAt(szint)
+ changeKarakter({...karakter, szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {...szintlepes, HProll: newHProll})})
console.log(karakter)
}
const changeTulajdonsagNovelesAtSzint = (szint: number) => {
return (t: Tulajdonsag2E) => {
+ const szintlepes = szintlepesAt(szint)
changeKarakter({...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
- ...karakter.szintlepesek[szint-1],
+ ...szintlepes,
tulajdonsagNoveles: t
})
})
@@ -119,10 +124,11 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const changeKalozKritikusAtSzint = (szint: number) => {
return (krit: string) => {
+ const szintlepes = szintlepesAt(szint)
changeKarakter({
...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
- ...karakter.szintlepesek[szint-1],
+ ...szintlepes,
kalozKritikus: krit
})
})
@@ -131,10 +137,11 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const changeExtraTolvajKepzettseg = (szint: number) => {
return (k: KepzettsegId) => {
+ const szintlepes = szintlepesAt(szint)
changeKarakter({
...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
- ...karakter.szintlepesek[szint-1],
+ ...szintlepes,
tolvajExtraKepzettseg: k,
})
})
@@ -145,10 +152,13 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
return <>
{levels.slice(1).map(szint =>
+ {
+ const szintlepes = szintlepesAt(szint)
+ return (
changeKarakter(ChangeOsztalyAtSzint(karakter, o, szint))}
changeExtraTolvajKepzettseg={changeExtraTolvajKepzettseg(szint)}
/>
+ )
+ }
)}
>
}