mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import {ChangeOsztalyAtSzint, DefaultKarakter, Karakter2E} from "./karakter2E";
|
|
import {Osztaly2E} from "./osztaly2E";
|
|
import {LevelUp} from "./szintlepes";
|
|
|
|
function applyLevelUp(karakter: Karakter2E): Karakter2E {
|
|
let next: Karakter2E | undefined;
|
|
LevelUp(karakter, updated => {
|
|
next = updated;
|
|
});
|
|
expect(next).toBeDefined();
|
|
return next as Karakter2E;
|
|
}
|
|
|
|
function level1Tolvaj(): Karakter2E {
|
|
return {
|
|
...DefaultKarakter,
|
|
szint: 1,
|
|
szintlepesek: [{
|
|
osztaly: Osztaly2E.Tolvaj,
|
|
HProll: 6,
|
|
}],
|
|
tolvajKepzettsegek: [],
|
|
varazslatok: [],
|
|
};
|
|
}
|
|
|
|
describe("Harcos specialization in multiclass level-ups", () => {
|
|
it("adds a specialization when first Harcos level is gained at character level 2", () => {
|
|
const afterLevel2 = applyLevelUp(level1Tolvaj());
|
|
const multiclassed = ChangeOsztalyAtSzint(afterLevel2, Osztaly2E.Harcos, 2);
|
|
|
|
const secondLevel = multiclassed.szintlepesek[1];
|
|
expect(secondLevel?.osztaly).toBe(Osztaly2E.Harcos);
|
|
expect(secondLevel?.harcosFegyver).toBeDefined();
|
|
});
|
|
|
|
it("does not add a specialization on even Harcos class level", () => {
|
|
const afterLevel2 = applyLevelUp(level1Tolvaj());
|
|
const multiclassed = ChangeOsztalyAtSzint(afterLevel2, Osztaly2E.Harcos, 2);
|
|
const afterLevel3 = applyLevelUp(multiclassed);
|
|
|
|
const thirdLevel = afterLevel3.szintlepesek[2];
|
|
expect(thirdLevel?.osztaly).toBe(Osztaly2E.Harcos);
|
|
expect(thirdLevel?.harcosFegyver).toBeUndefined();
|
|
});
|
|
|
|
it("adds the next specialization on odd Harcos class level after multiclass", () => {
|
|
const afterLevel2 = applyLevelUp(level1Tolvaj());
|
|
const multiclassed = ChangeOsztalyAtSzint(afterLevel2, Osztaly2E.Harcos, 2);
|
|
const afterLevel3 = applyLevelUp(multiclassed);
|
|
const afterLevel4 = applyLevelUp(afterLevel3);
|
|
|
|
const firstHarcosSpec = multiclassed.szintlepesek[1]?.harcosFegyver;
|
|
const thirdHarcosLevelSpec = afterLevel4.szintlepesek[3]?.harcosFegyver;
|
|
|
|
expect(firstHarcosSpec).toBeDefined();
|
|
expect(thirdHarcosLevelSpec).toBeDefined();
|
|
expect(thirdHarcosLevelSpec).not.toBe(firstHarcosSpec);
|
|
});
|
|
});
|