summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lang/english.txt1
-rw-r--r--src/settings.cpp6
-rw-r--r--src/settings_gui.cpp6
3 files changed, 13 insertions, 0 deletions
diff --git a/src/lang/english.txt b/src/lang/english.txt
index d172924f8..adb4f3008 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -1065,6 +1065,7 @@ STR_CITY_APPROVAL_PERMISSIVE :Permissive
STR_CITY_APPROVAL_TOLERANT :Tolerant
STR_CITY_APPROVAL_HOSTILE :Hostile
+STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system
STR_WARNING_DIFFICULTY_TO_CUSTOM :{WHITE}This action changed the difficulty level to custom
# Advanced settings window
diff --git a/src/settings.cpp b/src/settings.cpp
index 8a091816f..a136c3d75 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -58,6 +58,7 @@
#include "settings_func.h"
#include "ini_type.h"
#include "ai/ai_config.hpp"
+#include "ai/ai.hpp"
#include "newgrf.h"
#include "ship.h"
#include "company_base.h"
@@ -851,6 +852,11 @@ static bool DifficultyChange(int32)
_settings_game.difficulty.diff_level = 3;
}
+ if (((_game_mode == GM_MENU) ? _settings_newgame.difficulty : _settings_game.difficulty).max_no_competitors != 0 &&
+ AI::GetInfoList()->size() == 0 && (!_networking || _network_server)) {
+ ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, 0, 0, true);
+ }
+
/* If we are a network-client, update the difficult setting (if it is open).
* Use this instead of just dirtying the window because we need to load in
* the new difficulty settings */
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index 0d5955871..d9220798b 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -31,6 +31,7 @@
#include "company_func.h"
#include "viewport_func.h"
#include "core/geometry_func.hpp"
+#include "ai/ai.hpp"
#include <map>
#include "table/sprites.h"
@@ -653,6 +654,11 @@ public:
SetDifficultyLevel(3, &this->opt_mod_temp.difficulty); // set difficulty level to custom
this->LowerWidget(GDW_LVL_CUSTOM);
this->InvalidateData();
+
+ if (widget / 3 == 0 && this->opt_mod_temp.difficulty.max_no_competitors != 0 &&
+ AI::GetInfoList()->size() == 0) {
+ ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, 0, 0, true);
+ }
return;
}