mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-18 03:13:46 +00:00
use Redux for tulajdonsagok
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import {Osztaly2E} from "./osztaly2E";
|
||||
import {CelzoTB, KozelharciTB, TamadasBonusz} from "./tamadas_bonusz";
|
||||
import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag2E";
|
||||
import {Szintlepes} from "./szintlepes";
|
||||
import {d6} from "../../shared/domain-models/kockak";
|
||||
|
||||
describe('Tamadas Bonusz calculation', () => {
|
||||
|
||||
describe('Base Tamadas Bonusz', () => {
|
||||
test.each([
|
||||
[Osztaly2E.Harcos, 1, [1]],
|
||||
[Osztaly2E.Amazon, 6, [6,1]],
|
||||
[Osztaly2E.Ijasz, 12, [10,7,2]],
|
||||
[Osztaly2E.Tolvaj, 1, [0]],
|
||||
[Osztaly2E.Tolvaj, 9, [6,1]],
|
||||
[Osztaly2E.Pap, 12, [8,3]],
|
||||
[Osztaly2E.Varazslo, 1, [0]],
|
||||
[Osztaly2E.Varazslo, 12, [6, 1]],
|
||||
[Osztaly2E.Illuzionista, 5, [2]],
|
||||
])('%s has a TB of %i at level %i', (osztaly: Osztaly2E, szint: number, expectedTB: number[]) => {
|
||||
const actual = TamadasBonusz(osztaly, szint)
|
||||
expect(actual).toEqual(expectedTB)
|
||||
})
|
||||
});
|
||||
|
||||
describe('CelzoTB', () => {
|
||||
const szint = 10
|
||||
const tulajdonsagok: KarakterTulajdonsagok = {
|
||||
t_ugy: 17,
|
||||
t_kar: 3,
|
||||
t_bol: 3,
|
||||
t_egs: 3,
|
||||
t_ero: 3,
|
||||
t_int: 3,
|
||||
}
|
||||
const modifier = Modifier(tulajdonsagok.t_ugy)
|
||||
|
||||
it('should be equal base + ugyesseg modifier', () => {
|
||||
const osztaly = Osztaly2E.Tolvaj
|
||||
const szintlepesek = Array.from({length: szint},
|
||||
() => ({ osztaly, HProll: d6(), }))
|
||||
const base = TamadasBonusz(osztaly, szint)
|
||||
const expected = base.map(x => x + modifier)
|
||||
|
||||
const actual = CelzoTB({
|
||||
szintlepesek,
|
||||
tulajdonsagok
|
||||
})
|
||||
|
||||
expect(actual).toEqual(expected)
|
||||
});
|
||||
});
|
||||
|
||||
describe('KozelharciTB', () => {
|
||||
const szint = 10
|
||||
const tulajdonsagok: KarakterTulajdonsagok = {
|
||||
t_ugy: 3,
|
||||
t_kar: 3,
|
||||
t_bol: 3,
|
||||
t_egs: 3,
|
||||
t_ero: 3,
|
||||
t_int: 3,
|
||||
}
|
||||
const modifier = Modifier(tulajdonsagok.t_ero)
|
||||
|
||||
it('should be equal base + ero modifier', () => {
|
||||
const osztaly = Osztaly2E.Pap
|
||||
const szintlepesek: Szintlepes[] = Array.from({length: szint},
|
||||
() => ({ osztaly, HProll: 1, }));
|
||||
const base = TamadasBonusz(osztaly, szint)
|
||||
const expected = base.map(x => x + modifier)
|
||||
|
||||
const actual = KozelharciTB({
|
||||
szintlepesek,
|
||||
tulajdonsagok
|
||||
})
|
||||
|
||||
expect(actual).toEqual(expected)
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
import {d6} from "../../shared/domain-models/kockak";
|
||||
import {Karakter2E} from "./karakter2E";
|
||||
import {TulajdonsagokFajjal} from "./faj2E";
|
||||
import {RollAbility} from "../../shared/domain-models/rollAbility";
|
||||
|
||||
export enum Tulajdonsag2E {
|
||||
Ero = 't_ero',
|
||||
@@ -42,27 +42,10 @@ export function TulajdonsagLabel(tul: Tulajdonsag2E) : string {
|
||||
}
|
||||
}
|
||||
|
||||
function rollAbility() {
|
||||
let min = 6;
|
||||
let sum = 0;
|
||||
let rolls: number[] = []
|
||||
for (let i = 0; i < 4; i++) {
|
||||
const roll = d6();
|
||||
if (roll < min) {
|
||||
min = roll;
|
||||
}
|
||||
sum += roll;
|
||||
rolls.push(roll)
|
||||
}
|
||||
const result = sum - min;
|
||||
console.log("Rolled: " + rolls + " got: " + result)
|
||||
return result;
|
||||
}
|
||||
|
||||
export function RollAllAbilities() : KarakterTulajdonsagok {
|
||||
const response = {...TulajdonsagDefaults}
|
||||
for (const key of TulajdonsagIDs) {
|
||||
response[key] = rollAbility()
|
||||
response[key] = RollAbility()
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import {createSlice} from "@reduxjs/toolkit";
|
||||
import {RollAllAbilities, TulajdonsagDefaults} from "./tulajdonsag2E";
|
||||
|
||||
export const tulajdonsagSlice = createSlice({
|
||||
name: "tulajdonsag2E",
|
||||
initialState: TulajdonsagDefaults,
|
||||
reducers: {
|
||||
rollAbilities: (state) => {
|
||||
state = RollAllAbilities()
|
||||
return state;
|
||||
},
|
||||
setEro: (state, action: {payload: number}) => {
|
||||
state.t_ero = action.payload;
|
||||
},
|
||||
setUgyesseg: (state, action: {payload: number}) => {
|
||||
state.t_ugy = action.payload;
|
||||
},
|
||||
setEgeszseg: (state, action: {payload: number}) => {
|
||||
state.t_egs = action.payload;
|
||||
},
|
||||
setIntelligencia: (state, action: {payload: number}) => {
|
||||
state.t_int = action.payload;
|
||||
},
|
||||
setBolcsesseg: (state, action: {payload: number}) => {
|
||||
state.t_bol = action.payload;
|
||||
},
|
||||
setKarizma: (state, action: {payload: number}) => {
|
||||
state.t_kar = action.payload;
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
export const { rollAbilities, setEro, setUgyesseg, setEgeszseg, setIntelligencia, setBolcsesseg, setKarizma } = tulajdonsagSlice.actions
|
||||
|
||||
export const tulajdonsagSelector = tulajdonsagSlice.selectSlice;
|
||||
|
||||
export default tulajdonsagSlice.reducer
|
||||
Reference in New Issue
Block a user