Index: lang/english.txt =================================================================== --- lang/english.txt (revision 4734) +++ lang/english.txt (working copy) @@ -1012,6 +1012,8 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Allow bribing of the local authority: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING1} +STR_CONFIG_PATCHES_AUTO_SEMAPHORES_PRE_DATE :{LTBLUE}Automatically build semaphores before: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_AUTO_SEMAPHORES_PRE_DATE_DISABLED :{LTBLUE}Automatically build semaphores before: {ORANGE}disabled STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Always allow small airports: {ORANGE}{STRING1} Index: variables.h =================================================================== --- variables.h (revision 4734) +++ variables.h (working copy) @@ -87,6 +87,7 @@ bool modified_catchment; //different-size catchment areas bool vehicle_speed; // show vehicle speed bool build_on_slopes; // allow building on slopes + uint16 semaphore_pre_year; // automatic semaphores before set date bool mammoth_trains; // allow very long trains bool join_stations; // allow joining of train stations bool full_load_any; // new full load calculation, any cargo must be full Index: rail_cmd.c =================================================================== --- rail_cmd.c (revision 4734) +++ rail_cmd.c (working copy) @@ -627,6 +627,12 @@ sigvar = HASBIT(p1, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC; pre_signal = HASBIT(p1, 3); + /* If the year is before the Light Signals year, + * Build semaphores by default */ + if ((_cur_year < (_patches.semaphore_pre_year - MAX_YEAR_BEGIN_REAL)) + || (_patches.semaphore_pre_year > 2010)) + sigvar = (sigvar == SIG_SEMAPHORE) ? SIG_ELECTRIC : SIG_SEMAPHORE; //Swap the Semaphores/Light signals + if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoVehicle(tile)) return CMD_ERROR; Index: settings.c =================================================================== --- settings.c (revision 4734) +++ settings.c (working copy) @@ -1239,12 +1239,13 @@ /***************************************************************************/ /* Construction section of the GUI-configure patches window */ - SDT_BOOL(Patches, build_on_slopes, 0, 0, true, STR_CONFIG_PATCHES_BUILDONSLOPES, NULL), - SDT_BOOL(Patches, extra_dynamite, 0, 0, false, STR_CONFIG_PATCHES_EXTRADYNAMITE, NULL), - SDT_BOOL(Patches, longbridges, 0, 0, true, STR_CONFIG_PATCHES_LONGBRIDGES, NULL), - SDT_BOOL(Patches, signal_side, N, 0, true, STR_CONFIG_PATCHES_SIGNALSIDE, NULL), - SDT_BOOL(Patches, always_small_airport, 0, 0, false, STR_CONFIG_PATCHES_SMALL_AIRPORTS, NULL), - SDT_VAR(Patches, drag_signals_density,SLE_UINT8,S, 0, 4, 1,20, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY,NULL), + SDT_BOOL(Patches, build_on_slopes, 0, 0, true, STR_CONFIG_PATCHES_BUILDONSLOPES, NULL), + SDT_BOOL(Patches, extra_dynamite, 0, 0, false, STR_CONFIG_PATCHES_EXTRADYNAMITE, NULL), + SDT_BOOL(Patches, longbridges, 0, 0, true, STR_CONFIG_PATCHES_LONGBRIDGES, NULL), + SDT_BOOL(Patches, signal_side, N, 0, true, STR_CONFIG_PATCHES_SIGNALSIDE, NULL), + SDT_BOOL(Patches, always_small_airport, 0, 0, false, STR_CONFIG_PATCHES_SMALL_AIRPORTS, NULL), + SDT_VAR(Patches, drag_signals_density, SLE_UINT8, S, 0, 4, 1, 20, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY, NULL), + SDT_VAR(Patches, semaphore_pre_year, SLE_UINT16, 0,NC, 1975, MAX_YEAR_BEGIN_REAL, 2015, STR_CONFIG_PATCHES_AUTO_SEMAPHORES_PRE_DATE,NULL), /***************************************************************************/ /* Vehicle section of the GUI-configure patches window */ Index: settings_gui.c =================================================================== --- settings_gui.c (revision 4734) +++ settings_gui.c (working copy) @@ -579,6 +579,7 @@ "signal_side", "always_small_airport", "drag_signals_density", + "semaphore_pre_year", }; static const char *_patches_stations[] = {