Refactored `Get_Multiplier_For_Weighted_HP_Difference` to accept optional `enemiesTargetPriority` and `totalTargetPriority` parameters
The original method iterated over all enemies (O(N)) to sum priorities and calculate weighted average for every call (hot path in Arena/specific items like Giant Slayer or Hellfire Hatchet)
Implement a caching mechanism for `RecalculatePhysicalReductionFactor` and `RecalculateMagicReductionFactor`
This cache stores the inputs (Attacker stats, level, target resistance context via enemies reference) and reuses the calculation result if inputs haven't changed
Optimize `Get_Multiplier_For_Weighted_HP_Difference` in `Champion_Total_Stats.ts` by removing `HigherDifference` array allocation and using a single `for` loop instead of `reduce` + `forEach`
This function is called frequently inside the main battle simulation loop (when certain items like Perplexity or Hellfire Hatchet are present). Array allocation and multiple array traversals were adding significant overhead
Hoist `effectiveUltimateCDCoefficient` calculation from `totalStats.Get_Effective_Ultimate_CD_Coefficient(level)` outside the `theoryIndex` loop in `Calculate_Battle` method in `src/algorithm/Battle_Calculation.ts`
Update `Adjust_Attack_Count` method signature to accept `effectiveUltimateCDCoefficient` as a new argument and use it instead of calling the method internally
