Skip to content

Commit

Permalink
Fix #10206: Disable scripts in intro game (#10241)
Browse files Browse the repository at this point in the history
  • Loading branch information
glx22 committed Dec 15, 2022
1 parent 8db4892 commit 2848483
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/ai/ai_instance.cpp
Expand Up @@ -61,6 +61,9 @@ void AIInstance::Died()
{
ScriptInstance::Died();

/* Intro is not supposed to use AI, but it may have 'dummy' AI which instant dies. */
if (_game_mode == GM_MENU) return;

ShowAIDebugWindow(_current_company);

const AIInfo *info = AIConfig::GetConfig(_current_company, AIConfig::SSS_FORCE_GAME)->GetInfo();
Expand Down
6 changes: 6 additions & 0 deletions src/ai/ai_scanner.cpp
Expand Up @@ -10,6 +10,7 @@
#include "../stdafx.h"
#include "../debug.h"
#include "../network/network.h"
#include "../openttd.h"
#include "../core/random_func.hpp"

#include "../script/squirrel_class.hpp"
Expand Down Expand Up @@ -59,6 +60,11 @@ void AIScannerInfo::RegisterAPI(class Squirrel *engine)

AIInfo *AIScannerInfo::SelectRandomAI() const
{
if (_game_mode == GM_MENU) {
Debug(script, 0, "The intro game should not use AI, loading 'dummy' AI.");
return this->info_dummy;
}

uint num_random_ais = 0;
for (const auto &item : info_single_list) {
AIInfo *i = static_cast<AIInfo *>(item.second);
Expand Down
2 changes: 1 addition & 1 deletion src/saveload/ai_sl.cpp
Expand Up @@ -77,7 +77,7 @@ struct AIPLChunkHandler : ChunkHandler {
_ai_saveload_version = -1;
SlObject(nullptr, slt);

if (_networking && !_network_server) {
if (_game_mode == GM_MENU || (_networking && !_network_server)) {
if (Company::IsValidAiID(index)) AIInstance::LoadEmpty();
continue;
}
Expand Down
2 changes: 1 addition & 1 deletion src/saveload/game_sl.cpp
Expand Up @@ -69,7 +69,7 @@ struct GSDTChunkHandler : ChunkHandler {
_game_saveload_version = -1;
SlObject(nullptr, slt);

if (_networking && !_network_server) {
if (_game_mode == GM_MENU || (_networking && !_network_server)) {
GameInstance::LoadEmpty();
if (SlIterateArray() != -1) SlErrorCorrupt("Too many GameScript configs");
return;
Expand Down

0 comments on commit 2848483

Please sign in to comment.