Workaround console command to fix blocked heliports.

This is for savegames affected by the improved breakdowns bug.
pull/8/head
Jonathan G Rennison 8 years ago
parent fa232ddaed
commit 0ea1d69ac0

@ -39,6 +39,9 @@
#include "engine_base.h"
#include "game/game.hpp"
#include "table/strings.h"
#include "aircraft.h"
#include "airport.h"
#include "station_base.h"
#include "safeguards.h"
@ -1904,6 +1907,44 @@ DEF_CONSOLE_CMD(ConNewGRFReload)
return true;
}
DEF_CONSOLE_CMD(ConResetBlockedHeliports)
{
if (argc == 0) {
IConsoleHelp("Resets heliports blocked by the improved breakdowns bug, for single-player use only.");
return true;
}
unsigned int count = 0;
Station *st;
FOR_ALL_STATIONS(st) {
if (st->airport.tile == INVALID_TILE) continue;
if (st->airport.HasHangar()) continue;
if (!st->airport.flags) continue;
bool occupied = false;
const Aircraft *a;
FOR_ALL_AIRCRAFT(a) {
if (a->targetairport == st->index && a->state != FLYING) {
occupied = true;
break;
}
}
if (!occupied) {
st->airport.flags = 0;
count++;
char buffer[256];
SetDParam(0, st->index);
GetString(buffer, STR_STATION_NAME, lastof(buffer));
IConsolePrintF(CC_DEFAULT, "Unblocked: %s", buffer);
}
}
IConsolePrintF(CC_DEFAULT, "Unblocked %u heliports", count);
return true;
}
#ifdef _DEBUG
/******************
* debug commands
@ -2051,4 +2092,7 @@ void IConsoleStdLibRegister()
/* NewGRF development stuff */
IConsoleCmdRegister("reload_newgrfs", ConNewGRFReload, ConHookNewGRFDeveloperTool);
/* Bug workarounds */
IConsoleCmdRegister("jgrpp_bug_workaround_unblock_heliports", ConResetBlockedHeliports, ConHookNoNetwork);
}

Loading…
Cancel
Save