diff --git a/src/playsingle_controller.cpp b/src/playsingle_controller.cpp index 867e20f3f58..453d058127c 100644 --- a/src/playsingle_controller.cpp +++ b/src/playsingle_controller.cpp @@ -21,6 +21,7 @@ #include "playsingle_controller.hpp" #include "construct_dialog.hpp" +#include "ai.hpp" #include "ai_interface.hpp" #include "game_errors.hpp" #include "gettext.hpp" @@ -704,7 +705,12 @@ void playsingle_controller::play_ai_turn(){ map_, teams_, player_number_, units_, replay_sender_, undo_stack_); ai_interface::info ai_info(*gui_,map_,units_,teams_,player_number_,status_, turn_data, gamestate_); - util::scoped_ptr ai_obj(create_ai(current_team().ai_algorithm(),ai_info)); + std::string ai_algorithm = current_team().ai_algorithm(); + + boost::shared_ptr ai_obj(ai_algorithm == "formula_ai" ? + ai_manager::get_ai(ai_info,current_team().name(),ai_algorithm) : + boost::shared_ptr (create_ai(ai_algorithm,ai_info))); + ai_obj->user_interact().attach_handler(this); ai_obj->unit_recruited().attach_handler(this); ai_obj->unit_moved().attach_handler(this);