feat: sync rules with vault 2026-10-20 (borrowed mana, Odetchnięcie limit, Oszołomiony, Akcje Natychmiastowe)

Adds src/logic/rules.ts, counters, migration 1.4.0, III/IV mana swap, thaumaturgy school, tests, recompiled translations.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 13:22:31 +02:00
co-authored by Claude Sonnet 5.5
parent 6b8d93f772
commit c533ad8040
40 changed files with 640 additions and 85 deletions
+8 -2
View File
@@ -91,12 +91,16 @@ export interface MagicPowerEntry {
manaPerDay: number; // daily mana pool ("Ilość Many")
}
declare const __SYSTEM_ID__: string;
/** System id; lives here (not in hbm.ts) so logic modules and tests don't pull in the sheets. */
export const SYSTEM_ID: string = typeof __SYSTEM_ID__ !== 'undefined' ? __SYSTEM_ID__ : 'hbm-rpg-v3';
export const MAGIC_POWER_TABLE: readonly MagicPowerEntry[] = Object.freeze([
{ level: 0, label: '0', dicePool: 6, maxPerSpell: 10, manaPerDay: 60 },
{ level: 1, label: 'I', dicePool: 4, maxPerSpell: 6, manaPerDay: 36 },
{ level: 2, label: 'II', dicePool: 4, maxPerSpell: 5, manaPerDay: 30 },
{ level: 3, label: 'III', dicePool: 3, maxPerSpell: 5, manaPerDay: 21 },
{ level: 4, label: 'IV', dicePool: 3, maxPerSpell: 4, manaPerDay: 24 },
{ level: 3, label: 'III', dicePool: 3, maxPerSpell: 5, manaPerDay: 24 },
{ level: 4, label: 'IV', dicePool: 3, maxPerSpell: 4, manaPerDay: 21 },
{ level: 5, label: 'V', dicePool: 3, maxPerSpell: 4, manaPerDay: 18 },
{ level: 6, label: 'VI', dicePool: 2, maxPerSpell: 3, manaPerDay: 18 },
{ level: 7, label: 'VII', dicePool: 2, maxPerSpell: 3, manaPerDay: 12 },
@@ -136,6 +140,8 @@ export const SPELL_SCHOOLS = [
// Forbidden / extra-academic
'blood', 'crimson', 'abyssAspects', 'abyssPrimal', 'wildWitch',
'eldritch',
// Malferian thaumaturgy (house-shield, retinue-guard, shield-bubble)
'thaumaturgy',
] as const;
export type SpellSchool = (typeof SPELL_SCHOOLS)[number];