The three split-combat helpers were accidentally defined as nested functions inside _resolve_combat(), making them unreachable as GameEngine.assign_attackers() etc. from tests and turn_manager. Move them out to class-level methods with correct 4-space indentation. _resolve_combat() now remains as the backward-compatible atomic path for run_n(); the split methods are available for turn_manager priority windows and direct testing.