Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 14793) +++ src/lang/english.txt (working copy) @@ -2017,6 +2017,7 @@ STR_4002_SAVE :{BLACK}Save STR_4003_DELETE :{BLACK}Delete STR_4004 :{COMPANY}, {STRING1} +STR_GAME_SAVELOAD_SPECTATOR_SAVEGAME :Spectator, {STRING1} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} free STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} Index: src/saveload.cpp =================================================================== --- src/saveload.cpp (revision 14793) +++ src/saveload.cpp (working copy) @@ -1827,16 +1827,23 @@ void GenerateDefaultSaveName(char *buf, const char *last) { /* Check if we are not a spectator who wants to generate a name.. - * Let's use the name of company #0 for now. */ - SetDParam(0, IsValidCompanyID(_local_company) ? _local_company : COMPANY_FIRST); + * If so, use special spectator save name */ + bool is_spectator = !IsValidCompanyID(_local_company); + + /* Insert company name (if not spectating) */ + if (!is_spectator) SetDParam(0, _local_company); + + /* Insert current date */ switch (_settings_client.gui.date_format_in_default_names) { - case 0: SetDParam(1, STR_JUST_DATE_LONG); break; - case 1: SetDParam(1, STR_JUST_DATE_TINY); break; - case 2: SetDParam(1, STR_JUST_DATE_ISO); break; + case 0: SetDParam(is_spectator ? 0 : 1, STR_JUST_DATE_LONG); break; + case 1: SetDParam(is_spectator ? 0 : 1, STR_JUST_DATE_TINY); break; + case 2: SetDParam(is_spectator ? 0 : 1, STR_JUST_DATE_ISO); break; default: NOT_REACHED(); } - SetDParam(2, _date); - GetString(buf, STR_4004, last); + SetDParam(is_spectator ? 1 : 2, _date); + + /* Get the correct string (special string for spectator) */ + GetString(buf, is_spectator ? STR_GAME_SAVELOAD_SPECTATOR_SAVEGAME : STR_4004, last); SanitizeFilename(buf); }