refactor: extract ball functions in make_attack_spell