// ─── Element Capacity Bonus Utilities ─────────────────────────────────────────
// Extracts and merges per-element capacity bonuses from discipline and equipment
// effects for application during the game tick.

/**
 * Extract elementCap_* bonuses from a bonus record.
 * Returns a map of element name → bonus amount.
 */
export function extractElementCapBonuses(
  bonuses: Record<string, number>
): Record<string, number> {
  const result: Record<string, number> = {};
  for (const [key, value] of Object.entries(bonuses)) {
    if (key.startsWith('elementCap_') && value > 0) {
      const element = key.replace('elementCap_', '');
      result[element] = (result[element] || 0) + value;
    }
  }
  return result;
}

/**
 * Merge elementCap_* bonuses from discipline and equipment effects
 * into a single per-element bonus map.
 */
export function mergePerElementCapBonuses(
  disciplineBonuses: Record<string, number>,
  equipmentBonuses: Record<string, number>,
): Record<string, number> {
  const merged: Record<string, number> = {};
  for (const [element, value] of Object.entries(extractElementCapBonuses(disciplineBonuses))) {
    merged[element] = (merged[element] || 0) + value;
  }
  for (const [element, value] of Object.entries(extractElementCapBonuses(equipmentBonuses))) {
    merged[element] = (merged[element] || 0) + value;
  }
  return merged;
}
