mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-18 03:13:46 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c5fa7a92d9 | |||
| 700684ecfd | |||
| 43959ae94f | |||
| 88b0379c93 |
@@ -45,7 +45,7 @@
|
||||
"@types/downloadjs": "^1.4.4",
|
||||
"eslint": "^9.24.0",
|
||||
"jsdom": "^25.0.1",
|
||||
"less": "^4.6.4",
|
||||
"less": "^4.2.0",
|
||||
"vite": "^5.4.10",
|
||||
"vitest": "^2.1.3"
|
||||
},
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
import React from "react";
|
||||
import {render} from "@testing-library/react";
|
||||
import {configureStore} from "@reduxjs/toolkit";
|
||||
import {Provider} from "react-redux";
|
||||
import KarakterKepzettsegek from "./Kepzettsegek2E";
|
||||
import userReducer from "../../shared/domain-models/userSlice";
|
||||
import characterReducer, {setCharacter} from "../domain-models/characterSlice";
|
||||
import {DefaultKarakter, Karakter2E} from "../domain-models/karakter2E";
|
||||
import {Osztaly2E} from "../domain-models/osztaly2E";
|
||||
import {Tulajdonsag2E} from "../domain-models/tulajdonsag2E";
|
||||
|
||||
function createStore() {
|
||||
return configureStore({
|
||||
reducer: {
|
||||
user: userReducer,
|
||||
character2E: characterReducer,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
describe("KarakterKepzettsegek", () => {
|
||||
it("shows one more kepzettseg selector when INT modifier increases from level-up", () => {
|
||||
const karakter: Karakter2E = {
|
||||
...DefaultKarakter,
|
||||
szint: 4,
|
||||
tulajdonsagok: {
|
||||
...DefaultKarakter.tulajdonsagok,
|
||||
t_int: 17,
|
||||
},
|
||||
szintlepesek: [
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 10 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 7 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 6 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia },
|
||||
],
|
||||
tolvajKepzettsegek: [],
|
||||
varazslatok: [],
|
||||
};
|
||||
|
||||
const store = createStore();
|
||||
store.dispatch(setCharacter(karakter));
|
||||
|
||||
const sut = render(
|
||||
<Provider store={store}>
|
||||
<KarakterKepzettsegek />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]');
|
||||
expect(selectors).toHaveLength(7);
|
||||
});
|
||||
|
||||
it("shows one more kepzettseg selector when INT modifier increases at level 8", () => {
|
||||
const karakter: Karakter2E = {
|
||||
...DefaultKarakter,
|
||||
szint: 8,
|
||||
tulajdonsagok: {
|
||||
...DefaultKarakter.tulajdonsagok,
|
||||
t_int: 14,
|
||||
},
|
||||
szintlepesek: [
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 10 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 7 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 6 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Ero },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 4 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 9 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 5 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 6, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia },
|
||||
],
|
||||
tolvajKepzettsegek: [],
|
||||
varazslatok: [],
|
||||
};
|
||||
|
||||
const store = createStore();
|
||||
store.dispatch(setCharacter(karakter));
|
||||
|
||||
const sut = render(
|
||||
<Provider store={store}>
|
||||
<KarakterKepzettsegek />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]');
|
||||
expect(selectors).toHaveLength(6);
|
||||
});
|
||||
|
||||
it("shows one more kepzettseg selector when INT modifier increases at level 12", () => {
|
||||
const karakter: Karakter2E = {
|
||||
...DefaultKarakter,
|
||||
szint: 12,
|
||||
tulajdonsagok: {
|
||||
...DefaultKarakter.tulajdonsagok,
|
||||
t_int: 17,
|
||||
},
|
||||
szintlepesek: [
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 10 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 7 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 6 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Ero },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 4 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 9 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 5 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 6, tulajdonsagNoveles: Tulajdonsag2E.Egeszseg },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 3 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 7 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 5 },
|
||||
{ osztaly: Osztaly2E.Harcos, HProll: 4, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia },
|
||||
],
|
||||
tolvajKepzettsegek: [],
|
||||
varazslatok: [],
|
||||
};
|
||||
|
||||
const store = createStore();
|
||||
store.dispatch(setCharacter(karakter));
|
||||
|
||||
const sut = render(
|
||||
<Provider store={store}>
|
||||
<KarakterKepzettsegek />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]');
|
||||
expect(selectors).toHaveLength(7);
|
||||
});
|
||||
});
|
||||
@@ -13,7 +13,7 @@ import {arraySetN} from "../../util";
|
||||
import {useDispatch, useSelector} from "react-redux";
|
||||
import {AppDispatch, RootState} from "../../store";
|
||||
import {characterSelector, setKepzettsegek, setTolvajKepzettsegek} from "../domain-models/characterSlice";
|
||||
import {TulajdonsagokTotal} from "../domain-models/tulajdonsag2E";
|
||||
import {TulajdonsagokFajjal} from "../domain-models/faj2E";
|
||||
|
||||
function InternalKepzettsegekSelector(props: {
|
||||
title: string,
|
||||
@@ -70,8 +70,8 @@ function KarakterKepzettsegek () {
|
||||
const karakter = useSelector.withTypes<RootState>()(characterSelector);
|
||||
const dispatch = useDispatch.withTypes<AppDispatch>()();
|
||||
|
||||
const tulajdonsagokTotal = TulajdonsagokTotal(karakter)
|
||||
const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokTotal.t_int, karakter.faj)
|
||||
const tulajdonsagokFajjal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
|
||||
const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, karakter.faj)
|
||||
const kepzettsegek = karakter.kepzettsegek
|
||||
const fajError = karakter.kepzettsegFajError
|
||||
const osztalyError = karakter.kepzettsegOsztalyError
|
||||
|
||||
@@ -13,8 +13,7 @@ function availableKezpettsegListFajjal(faj: Faj2E, ...osztalyok: Osztaly2E[]): K
|
||||
}
|
||||
|
||||
export function GetNumberOfKepzettsegek(t_int: number, faj: Faj2E, max: number = 11) {
|
||||
// Default cap is 11. Base calculation is 3 + 1 (human) + 3 (max ability modifier) = 7;
|
||||
// thief-specific extra selections are handled elsewhere and are not part of this default max.
|
||||
//max = 3 + 1 + 3 + 5 = 12 // 3 base, 1 human, 3 from max ability modifier, 4 from Thief +1 at 9th level
|
||||
let numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj2E.Ember ? 1 : 0)
|
||||
|
||||
if (numberOfKepzettseg < 1) {
|
||||
|
||||
+16
-15
@@ -1381,12 +1381,12 @@ convert-source-map@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
||||
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
||||
|
||||
copy-anything@^3.0.5:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0"
|
||||
integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==
|
||||
copy-anything@^2.0.1:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
|
||||
integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
|
||||
dependencies:
|
||||
is-what "^4.1.8"
|
||||
is-what "^3.14.1"
|
||||
|
||||
cross-spawn@^7.0.6:
|
||||
version "7.0.6"
|
||||
@@ -1941,10 +1941,10 @@ is-potential-custom-element-name@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
|
||||
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
|
||||
|
||||
is-what@^4.1.8:
|
||||
version "4.1.16"
|
||||
resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f"
|
||||
integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==
|
||||
is-what@^3.14.1:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -2022,13 +2022,14 @@ keyv@^4.5.4:
|
||||
dependencies:
|
||||
json-buffer "3.0.1"
|
||||
|
||||
less@^4.6.4:
|
||||
version "4.6.4"
|
||||
resolved "https://registry.yarnpkg.com/less/-/less-4.6.4.tgz#3ff8068e6c8a59f1ece8a6b9227bda28c1ed68a2"
|
||||
integrity sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==
|
||||
less@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450"
|
||||
integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
|
||||
dependencies:
|
||||
copy-anything "^3.0.5"
|
||||
copy-anything "^2.0.1"
|
||||
parse-node-version "^1.0.1"
|
||||
tslib "^2.3.0"
|
||||
optionalDependencies:
|
||||
errno "^0.1.1"
|
||||
graceful-fs "^4.1.2"
|
||||
@@ -2713,7 +2714,7 @@ tslib@^1.11.1:
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2.4.0:
|
||||
tslib@^2.3.0, tslib@^2.4.0:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
|
||||
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
|
||||
|
||||
Reference in New Issue
Block a user