refine ranged combat

This commit is contained in:
2026-05-16 21:35:35 +02:00
parent 866c0a9f2d
commit 97ba4bf478
7 changed files with 183 additions and 91 deletions
+19 -13
View File
@@ -303,28 +303,34 @@ export const RELOAD_STATES: ModifierRow[] = [
{ id: 'fast_reload_bow', name: 'Schnellladen', modifier: -1, skill: 'archery' }
];
function resolveModifierRaw(
row: ModifierRow,
expertise: Expertise
): number | string {
return expertise === 'master' && row.modifier_master !== undefined
? row.modifier_master
: expertise === 'expert' && row.modifier_expert !== undefined
? row.modifier_expert
: row.modifier;
}
/** Anzeige-Label für Dropdown-Optionen (berücksichtigt Scharfschütze/Meisterschütze). */
export function formatModifierLabel(row: ModifierRow, expertise: Expertise): string {
const m = resolveModifierRaw(row, expertise);
return `${row.name} (${m})`;
}
export function resolveNumericModifier(
row: ModifierRow | undefined,
expertise: Expertise
): number | null {
if (!row) return null;
const raw =
expertise === 'master' && row.modifier_master !== undefined
? row.modifier_master
: expertise === 'expert' && row.modifier_expert !== undefined
? row.modifier_expert
: row.modifier;
const raw = resolveModifierRaw(row, expertise);
if (typeof raw === 'number') return raw;
return null;
}
export function isStringModifier(row: ModifierRow | undefined, expertise: Expertise): boolean {
if (!row) return false;
const raw =
expertise === 'master' && row.modifier_master !== undefined
? row.modifier_master
: expertise === 'expert' && row.modifier_expert !== undefined
? row.modifier_expert
: row.modifier;
return typeof raw === 'string';
return typeof resolveModifierRaw(row, expertise) === 'string';
}