Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37917306
en ru br
ALT Linux repos
S:13.0-alt1
5.0: 0.7.0-alt2
4.1: 0.6.0-alt1
4.0: 0.5.1-alt1.RC2
3.0: 0.3.6-alt1

Group :: Games/Strategy
RPM: openttd

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: openttd-0.7.0-alt2.patch
Download


 .gear/rules                                        |    2 +
 .../tags/6375ce596dffbf3fededfc7a88c1f00441aedc6a  |   13 ++
 .gear/tags/list                                    |    1 +
 config.lib                                         |    2 +-
 openttd-installer                                  |   32 ++++
 openttd.spec                                       |  196 ++++++++++++++++++++
 src/gfxinit.cpp                                    |   13 +-
 src/gfxinit.h                                      |    2 +-
 src/lang/english.txt                               |    1 +
 src/lang/russian.txt                               |    1 +
 src/namegen.cpp                                    |    7 +
 src/openttd.cpp                                    |   16 +-
 src/settings.cpp                                   |   18 +-
 src/strings_type.h                                 |    3 +-
 src/table/namegen.h                                |  177 ++++++++++++++++++
 15 files changed, 459 insertions(+), 25 deletions(-)
diff --git a/.gear/rules b/.gear/rules
new file mode 100644
index 0000000..a4a2460
--- /dev/null
+++ b/.gear/rules
@@ -0,0 +1,2 @@
+tar: v@version@-@release@:. name=openttd-@version@-@release@
+diff: v@version@-@release@:.	.
diff --git a/.gear/tags/6375ce596dffbf3fededfc7a88c1f00441aedc6a b/.gear/tags/6375ce596dffbf3fededfc7a88c1f00441aedc6a
new file mode 100644
index 0000000..99e0897
--- /dev/null
+++ b/.gear/tags/6375ce596dffbf3fededfc7a88c1f00441aedc6a
@@ -0,0 +1,13 @@
+object cb9934e32652aa04f640d029c3b6120eca2c3c61
+type commit
+tag v0.7.0-alt2
+tagger Anton Farygin <rider@altlinux.com> 1239410297 +0400
+
+0.7.0
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.11 (GNU/Linux)
+
+iEYEABECAAYFAknf5oUACgkQqohfd2vlwKsv/ACeKawr5L7O/Pw0y3Am0xCH7U1B
+NJsAnAmB0xmMiXzsWpkpem+TtXurx9Oj
+=cFg5
+-----END PGP SIGNATURE-----
diff --git a/.gear/tags/list b/.gear/tags/list
new file mode 100644
index 0000000..7cd6d0f
--- /dev/null
+++ b/.gear/tags/list
@@ -0,0 +1 @@
+6375ce596dffbf3fededfc7a88c1f00441aedc6a v0.7.0-alt2
diff --git a/config.lib b/config.lib
index 547c47c..8264c19 100644
--- a/config.lib
+++ b/config.lib
@@ -36,7 +36,7 @@ set_default() {
 	install_dir="/"
 	man_dir="1"
 	menu_dir="1"
-	menu_group="Game;"
+	menu_group="Game;StrategyGame;"
 	menu_name="OpenTTD"
 	binary_name="openttd"
 	enable_debug="0"
diff --git a/openttd-installer b/openttd-installer
new file mode 100755
index 0000000..35a902b
--- /dev/null
+++ b/openttd-installer
@@ -0,0 +1,32 @@
+#!/bin/sh
+DIALOG=Xdialog
+TTDPACK=ttd-graphics.rar
+TTDURL="http://download.transporttycoon.net/files/$TTDPACK"
+DL_PATH="$HOME/.openttd/content_download/data"
+download_content() {
+    $DIALOG --screen-center --wrap --title "Download and Install Transport Tycoon Deluxe content" \
+    	--yesno "For start of game OpenTTD it is necessary to load from a Internet 3.2Mb \n with the original data from Transport Tycoon Deluxe. Download ?" 0 0
+
+    case $? in
+	 0)
+	    [ -d $DL_PATH ] || mkdir -p $DL_PATH
+	    eval "curl -# $TTDURL -o $DL_PATH/$TTDPACK"   2>&1 | tr "\r" "\n"|sed "s,# *,,gm"| $DIALOG --title "Progress" --no-close \
+	    --gauge "Downloading ...\n\n" 0 0
+	    pushd $DL_PATH
+	    if unrar x "$TTDPACK";then
+		$DIALOG --screen-center --wrap --title "Download and Install Transport Tycoon Deluxe content" \
+    	        --yesno "Complete. Start Game ?" 0 0
+    	        [ $? -eq 0 ] || exit
+    	    else
+		$DIALOG --screen-center --wrap --title "Download and Install Transport Tycoon Deluxe content" \
+    	        --msgbox "Unknown error !" 0 0
+    	    fi
+	    popd
+	    ;;
+    esac
+}
+
+openttd
+if [ $? -eq 138 ];then 
+download_content && rm -f "$DL_PATH/$TTDPACK" && openttd
+fi
diff --git a/openttd.spec b/openttd.spec
new file mode 100644
index 0000000..f2de430
--- /dev/null
+++ b/openttd.spec
@@ -0,0 +1,196 @@
+Name: openttd
+Version: 0.7.0
+Release: alt2
+
+Summary: An open source clone of the Microprose game "Transport Tycoon Deluxe".
+License: GPL
+Group: Games/Strategy
+URL: http://www.openttd.com/
+Requires: TiMidity++
+Requires: fonts-ttf-dejavu Xdialog %name-data
+Packager: Anton Farygin <rider@altlinux.com>
+
+Source: %name-%version-%release.tar
+
+Patch0: %name-%version-%release.patch
+
+BuildRequires: libSDL-devel libpng-devel libfreetype-devel fontconfig-devel gcc-c++
+
+
+%description
+An open source clone of the Microprose game "Transport Tycoon Deluxe".
+
+You need following files from TTD Win version:
+  - sample.cat
+  - trg1r.grf
+  - trgcr.grf
+  - trghr.grf
+  - trgir.grf
+  - trgtr.grf
+
+To play music tracks you need files from gm directory
+
+%package data
+Buildarch: noarch
+Summary: Data files for %name
+Requires: %name
+Group: Games/Strategy
+
+%description data
+Data files for %name
+
+%prep
+%setup -q -n %name-%version-%release
+%patch0 -p1
+
+%build
+./configure \
+    --prefix-dir=%_prefix \
+    --with-sdl \
+    --with-png \
+    --with-freetype \
+    --with-fontconfig \
+    --revision=%version
+    
+%make_build WITH_SDL=1 UNIX=1 RELEASE=%version INSTALL=1 WITH_NETWORK=1 \
+    USE_HOMEDIR=1 VERBOSE=1 PERSONAL_DIR=.%name \
+    PREFIX=%_prefix DATA_DIR=share/games/%name \
+	
+%install
+%__mkdir_p %buildroot%_prefix/games
+%__mkdir_p %buildroot%_datadir/games/%name/gm
+%__mkdir_p %buildroot%_datadir/games/%name/lang
+%__mkdir_p %buildroot%_man6dir
+
+%__install -m755 -s bin/%name %buildroot%_prefix/games/%name
+%__install -m755 %name-installer %buildroot%_prefix/games/%name-installer
+%__cp -a bin/data %buildroot%_datadir/games/%name
+%__cp -a bin/lang/*.lng %buildroot%_datadir/games/%name/lang
+%__chmod -x %buildroot%_datadir/games/%name/data/*
+
+#menu
+
+%__install -dm 755 %buildroot%_datadir/applications
+%__install -m644 media/%name.desktop %buildroot%_datadir/applications/%name.desktop
+%__subst "s,Exec=openttd,Exec=openttd-installer," %buildroot%_datadir/applications/%name.desktop
+
+# icons
+%__install -pD -m644 media/%name.16.png %buildroot%_miconsdir/%name.png
+%__install -pD -m644 media/%name.32.png %buildroot%_iconsdir/%name.png
+%__install -pD -m644 media/%name.48.png %buildroot%_liconsdir/%name.png
+%__install -pD -m644 docs/%name.6 %buildroot%_man6dir/
+
+
+%files
+%_prefix/games/%name
+%_prefix/games/%name-installer
+
+%files data
+%doc docs/* bin/scripts readme.txt known-bugs.txt changelog.txt COPYING
+%_datadir/games/%name
+%_datadir/applications/%name.desktop
+%_iconsdir/%name.png
+%_miconsdir/%name.png
+%_liconsdir/%name.png
+%_man6dir/*
+
+%changelog
+* Sat Apr 11 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt2
+- 0.7.0
+
+* Thu Mar 26 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15828
+- 0.7.0-rc2
+
+* Mon Mar 16 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15737
+- 0.7.0-rc1
+
+* Fri Mar 13 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15697
+- updated snapshot (fixed some crash issues)
+
+* Thu Mar 12 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15676
+- new snapshot (0.7.0-beta2)
+
+* Tue Mar 03 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15601
+- new snapshot
+- default fonts changed and warning about DejaVu removed
+
+* Sat Feb 28 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15592
+- new snapshot
+
+* Thu Feb 26 2009 Anton Farygin <rider@altlinux.ru> 0.7.0-alt1.r15587
+- new snapshot (0.7.0-beta1)
+- use official revision number (0.7.0-beta1) for playing over network
+
+* Wed Feb 25 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt3.r15578
+- new snapshot
+- squirrel included to maintree
+
+* Fri Feb 20 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt2.r15529
+- new snapshot
+
+* Mon Feb 16 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt2.r15495
+- fixed revision in game
+- noarch content moved to %name-data subpackage
+
+* Sat Feb 14 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt1.svn15476
+- new snapshot from svn
+- added russian towns
+
+* Fri Feb 13 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt1.svn15465
+- new snapshot from svn
+- Xdialog added to requires
+
+* Wed Feb 11 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt1.svn15447
+- new snapshot from svn
+- added data downloader and installer
+- menu file changed to desktop file
+
+* Tue Feb 03 2009 Anton Farygin <rider@altlinux.ru> 0.6.3-alt1
+- new version (from svn 15322)
+- post-scripts removed 
+
+* Fri Jun 06 2008 Andrew Kornilov <hiddenman@altlinux.ru> 0.6.1-alt1
+- New release
+
+* Wed Apr 02 2008 Andrew Kornilov <hiddenman@altlinux.ru> 0.6.0-alt1
+- New release
+- Fonts patch updated (and enabled AA)
+
+* Wed Oct 03 2007 Andrew Kornilov <hiddenman@altlinux.ru> 0.5.3-alt1
+- New release
+- Fonts patch was reworked (fontconfig support seems to be fixed, so 
+  hardcoded font paths were removed; uses font names now)
+- Spec updates (to conform openttd's fs hier)
+
+* Wed Apr 25 2007 Andrew Kornilov <hiddenman@altlinux.ru> 0.5.1-alt2
+- New release
+
+* Fri Mar 23 2007 Andrew Kornilov <hiddenman@altlinux.ru> 0.5.1-alt1.RC2
+- Bugfix RC2
+- Spec cleanups
+
+* Thu Mar 01 2007 Andrew Kornilov <hiddenman@altlinux.ru> 0.5.0-alt2
+- Release
+
+* Sun Feb 04 2007 Andrew Kornilov <hiddenman@altlinux.ru> 0.5.0-alt1.svn8588
+- New version from SVN
+- Updated buildreqs
+- Spec cleanups
+- Correct man placement
+- New patch (use correct, but hardcoded fonts)
+- Added missed docs
+
+* Fri Oct 06 2006 Damir Shayhutdinov <damir@altlinux.ru> 0.4.8-alt1
+- 0.4.8
+- Updated buildreqs.
+
+* Thu Jan 27 2005 Kachalov Anton <mouse@altlinux.ru> 0.3.6-alt1
+- 0.3.6
+  + some scenarios in docs/scenario
+  + scripts example in docs/scripts
+
+* Tue Dec 28 2004 Kachalov Anton <mouse@altlinux.ru> 0.3.5-alt1
+- 0.3.5
+
+* Wed Jun 09 2004 Kachalov Anton <mouse@altlinux.ru> 0.3.2.1-alt1
+- first build for Sisyphus
diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp
index 9dad75a..bbbf0c9 100644
--- a/src/gfxinit.cpp
+++ b/src/gfxinit.cpp
@@ -223,20 +223,21 @@ static void DeterminePalette()
  *
  * @note Also checks sample.cat and other required non-NewGRF GRFs for corruption.
  */
-void CheckExternalFiles()
+bool CheckExternalFiles()
 {
 	DeterminePalette();
 
 	DEBUG(grf, 1, "Using the %s base graphics set with the %s palette", _used_graphics_set->name, _use_palette == PAL_DOS ? "DOS" : "Windows");
 
 	static const size_t ERROR_MESSAGE_LENGTH = 128;
+	bool ret = true;
 	char error_msg[ERROR_MESSAGE_LENGTH * (MAX_GFT + 1)];
 	error_msg[0] = '\0';
 	char *add_pos = error_msg;
 	const char *last = lastof(error_msg);
-
 	for (uint i = 0; i < lengthof(_used_graphics_set->files); i++) {
 		if (!FileMD5(_used_graphics_set->files[i])) {
+			ret = false;
 			add_pos += seprintf(add_pos, last, "Your '%s' file is corrupted or missing! %s\n", _used_graphics_set->files[i].filename, _used_graphics_set->files[i].missing_warning);
 		}
 	}
@@ -247,10 +248,12 @@ void CheckExternalFiles()
 	}
 
 	if (!sound) {
+		ret = false;
 		add_pos += seprintf(add_pos, last, "Your 'sample.cat' file is corrupted or missing! You can find 'sample.cat' on your Transport Tycoon Deluxe CD-ROM.\n");
 	}
 
 	if (add_pos != error_msg) ShowInfoF(error_msg);
+	return ret;
 }
 
 
@@ -500,15 +503,13 @@ bool SetGraphicsSet(const char *name)
 {
 	if (StrEmpty(name)) {
 		if (!DetermineGraphicsPack()) return false;
-		CheckExternalFiles();
-		return true;
+		return CheckExternalFiles();
 	}
 
 	for (const GraphicsSet *g = _available_graphics_sets; g != NULL; g = g->next) {
 		if (strcmp(name, g->name) == 0) {
 			_used_graphics_set = g;
-			CheckExternalFiles();
-			return true;
+			return CheckExternalFiles();
 		}
 	}
 	return false;
diff --git a/src/gfxinit.h b/src/gfxinit.h
index 3bee8c2..d3683c8 100644
--- a/src/gfxinit.h
+++ b/src/gfxinit.h
@@ -7,7 +7,7 @@
 
 #include "gfx_type.h"
 
-void CheckExternalFiles();
+bool CheckExternalFiles();
 void GfxLoadSprites();
 void LoadSpritesIndexed(int file_index, uint *sprite_id, const SpriteID *index_tbl);
 
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 9651e0c..ffa36a5 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -796,6 +796,7 @@ STR_TOWNNAME_DANISH                                             :Danish
 STR_TOWNNAME_TURKISH                                            :Turkish
 STR_TOWNNAME_ITALIAN                                            :Italian
 STR_TOWNNAME_CATALAN                                            :Catalan
+STR_TOWNNAME_RUSSIAN                                            :Russian
 ############ end of townname region
 
 STR_CURR_GBP                                                    :Pounds (£)
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
index dab7c2e..1f0060a 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
@@ -798,6 +798,7 @@ STR_TOWNNAME_DANISH                                             :Датские
 STR_TOWNNAME_TURKISH                                            :Турецкие
 STR_TOWNNAME_ITALIAN                                            :Итальянские
 STR_TOWNNAME_CATALAN                                            :Каталанские
+STR_TOWNNAME_RUSSIAN                                            :Русские
 ############ end of townname region
 
 STR_CURR_GBP                                                    :Английский фунт (£)
diff --git a/src/namegen.cpp b/src/namegen.cpp
index f7c382a..23099c7 100644
--- a/src/namegen.cpp
+++ b/src/namegen.cpp
@@ -215,6 +215,12 @@ static byte MakeFrenchTownName(char *buf, uint32 seed, const char *last)
 	return 0;
 }
 
+static byte MakeRussianTownName(char *buf, uint32 seed, const char *last)
+{
+	strecpy(buf, name_russian_real[SeedChance(0, lengthof(name_russian_real), seed)], last);
+	return 0;
+}
+
 static byte MakeSillyTownName(char *buf, uint32 seed, const char *last)
 {
 	strecpy(buf, _name_silly_1[SeedChance( 0, lengthof(_name_silly_1), seed)], last);
@@ -755,4 +761,5 @@ TownNameGenerator * const _town_name_generators[] =
 	MakeTurkishTownName,
 	MakeItalianTownName,
 	MakeCatalanTownName,
+	MakeRussianTownName,
 };
diff --git a/src/openttd.cpp b/src/openttd.cpp
index 8f61574..4c13379 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -561,6 +561,15 @@ int ttd_main(int argc, char *argv[])
 	/* initialize all variables that are allocated dynamically */
 	InitializeDynamicVariables();
 
+
+	if (graphics_set == NULL) graphics_set = _ini_graphics_set;
+	if (!SetGraphicsSet(graphics_set)) {
+		StrEmpty(graphics_set) ?
+			ShowInfoF("Failed to find a graphics set. Please acquire a graphics set for OpenTTD.") :
+			ShowInfoF("Failed to select requested graphics set '%s'", graphics_set);
+		exit(138);
+	}
+
 	/* Sample catalogue */
 	DEBUG(misc, 1, "Loading sound effects...");
 	MxInitialize(11025);
@@ -572,13 +581,6 @@ int ttd_main(int argc, char *argv[])
 	/* This must be done early, since functions use the InvalidateWindow* calls */
 	InitWindowSystem();
 
-	if (graphics_set == NULL) graphics_set = _ini_graphics_set;
-	if (!SetGraphicsSet(graphics_set)) {
-		StrEmpty(graphics_set) ?
-			usererror("Failed to find a graphics set. Please acquire a graphics set for OpenTTD.") :
-			usererror("Failed to select requested graphics set '%s'", graphics_set);
-	}
-
 	/* Initialize game palette */
 	GfxInitPalettes();
 
diff --git a/src/settings.cpp b/src/settings.cpp
index 4f3eda5..60b7cbe 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1239,15 +1239,15 @@ static const SettingDescGlobVarList _misc_settings[] = {
 	  SDTG_STR("savegame_format",  SLE_STRB, S, 0, _savegame_format,       NULL,    STR_NULL, NULL),
 	 SDTG_BOOL("rightclick_emulate",         S, 0, _rightclick_emulate,   false,    STR_NULL, NULL),
 #ifdef WITH_FREETYPE
-	  SDTG_STR("small_font",       SLE_STRB, S, 0, _freetype.small_font,   NULL,    STR_NULL, NULL),
-	  SDTG_STR("medium_font",      SLE_STRB, S, 0, _freetype.medium_font,  NULL,    STR_NULL, NULL),
-	  SDTG_STR("large_font",       SLE_STRB, S, 0, _freetype.large_font,   NULL,    STR_NULL, NULL),
-	  SDTG_VAR("small_size",       SLE_UINT, S, 0, _freetype.small_size,   6, 0, 72, 0, STR_NULL, NULL),
-	  SDTG_VAR("medium_size",      SLE_UINT, S, 0, _freetype.medium_size, 10, 0, 72, 0, STR_NULL, NULL),
-	  SDTG_VAR("large_size",       SLE_UINT, S, 0, _freetype.large_size,  16, 0, 72, 0, STR_NULL, NULL),
-	 SDTG_BOOL("small_aa",                   S, 0, _freetype.small_aa,    false,    STR_NULL, NULL),
-	 SDTG_BOOL("medium_aa",                  S, 0, _freetype.medium_aa,   false,    STR_NULL, NULL),
-	 SDTG_BOOL("large_aa",                   S, 0, _freetype.large_aa,    false,    STR_NULL, NULL),
+         SDTG_STR("small_font",       SLE_STRB, S, 0, _freetype.small_font,   "XLinSans",    STR_NULL, NULL),
+         SDTG_STR("medium_font",      SLE_STRB, S, 0, _freetype.medium_font,  "XLinSans",    STR_NULL, NULL),
+         SDTG_STR("large_font",       SLE_STRB, S, 0, _freetype.large_font,   "XLinSans",    STR_NULL, NULL),
+         SDTG_VAR("small_size",       SLE_UINT, S, 0, _freetype.small_size,   10, 0, 72, 0, STR_NULL, NULL),
+         SDTG_VAR("medium_size",      SLE_UINT, S, 0, _freetype.medium_size, 12, 0, 72, 0, STR_NULL, NULL),
+	 SDTG_VAR("large_size",       SLE_UINT, S, 0, _freetype.large_size,  16, 0, 72, 0, STR_NULL, NULL),
+	 SDTG_BOOL("small_aa",                   S, 0, _freetype.small_aa,    true,    STR_NULL, NULL),
+	 SDTG_BOOL("medium_aa",                  S, 0, _freetype.medium_aa,   true,    STR_NULL, NULL),
+	 SDTG_BOOL("large_aa",                   S, 0, _freetype.large_aa,    true,    STR_NULL, NULL),
 #endif
 	  SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size,     4, 1, 64, 0, STR_NULL, NULL),
 	  SDTG_VAR("player_face",    SLE_UINT32, S, 0, _company_manager_face,0,0,0xFFFFFFFF,0, STR_NULL, NULL),
diff --git a/src/strings_type.h b/src/strings_type.h
index fa3a1c6..07fd33a 100644
--- a/src/strings_type.h
+++ b/src/strings_type.h
@@ -62,7 +62,8 @@ enum SpecialStrings {
 	SPECSTR_TOWNNAME_TURKISH,
 	SPECSTR_TOWNNAME_ITALIAN,
 	SPECSTR_TOWNNAME_CATALAN,
-	SPECSTR_TOWNNAME_LAST      = SPECSTR_TOWNNAME_CATALAN,
+	SPECSTR_TOWNNAME_RUSSIAN,
+	SPECSTR_TOWNNAME_LAST      = SPECSTR_TOWNNAME_RUSSIAN,
 
 	/* special strings for player names on the form "TownName transport". */
 	SPECSTR_PLAYERNAME_START   = 0x70EA,
diff --git a/src/table/namegen.h b/src/table/namegen.h
index 66c8d20..e6476c4 100644
--- a/src/table/namegen.h
+++ b/src/table/namegen.h
@@ -3308,3 +3308,180 @@ static const char * const _name_catalan_river1[] = {
 	" de Segre",
 	" de Francol\xC3\xAD",
 };
+
+static const char *name_russian_real[] = {
+	"Абакан",
+	"Альметьевск",
+	"Ангарск",
+	"Арзамас",
+	"Армавир",
+	"Артем",
+	"Архангельск",
+	"Астрахань",
+	"Ачинск",
+	"Балабаново",
+	"Балаково",
+	"Балашиха",
+	"Барнаул",
+	"Батайск",
+	"Белгород",
+	"Березники",
+	"Бийск",
+	"Благовещенск",
+	"Боровск",
+	"Братск",
+	"Брянск",
+	"Великие Луки",
+	"Великий Новгород",
+	"Владивосток",
+	"Владикавказ",
+	"Владимир",
+	"Волгоград",
+	"Волгодонск",
+	"Волжский",
+	"Вологда",
+	"Воронеж",
+	"Глазов",
+	"Грозный",
+	"Дербент",
+	"Дзержинск",
+	"Димитровград",
+	"Екатеринбург",
+	"Елец",
+	"Ермолино",
+	"Железнодорожный",
+	"Жуковский",
+	"Златоуст",
+	"Иваново",
+	"Ижевск",
+	"Иркутск",
+	"Йошкар-Ола",
+	"Казань",
+	"Калининград",
+	"Калуга",
+	"Каменск-Уральский",
+	"Камышин",
+	"Канск",
+	"Кемерово",
+	"Киров",
+	"Киселевск",
+	"Кисловодск",
+	"Ковров",
+	"Коломна",
+	"Комсомольск-на-Амуре",
+	"Копейск",
+	"Королёв",
+	"Кострома",
+	"Краснодар",
+	"Красноярск",
+	"Курган",
+	"Курск",
+	"Кызыл",
+	"Ленинск-Кузнецкий",
+	"Липецк",
+	"Люберцы",
+	"Магадан",
+	"Магнитогорск",
+	"Майкоп",
+	"Махачкала",
+	"Междуреченск",
+	"Миасс",
+	"Москва",
+	"Мурманск",
+	"Муром",
+	"Мытищи",
+	"Набережные Челны",
+	"Назрань",
+	"Нальчик",
+	"Находка",
+	"Невинномысск",
+	"Нефтекамск",
+	"Нефтеюганск",
+	"Нижневартовск",
+	"Нижнекамск",
+	"Нижний Новгород",
+	"Нижний Тагил",
+	"Новокузнецк",
+	"Новокуйбышевск",
+	"Новомосковск",
+	"Новороссийск",
+	"Новосибирск",
+	"Новотроицк",
+	"Новочебоксарск",
+	"Новочеркасск",
+	"Новошахтинск",
+	"Новый Уренгой",
+	"Ногинск",
+	"Норильск",
+	"Ноябрьск",
+	"Обнинск",
+	"Одинцово",
+	"Октябрьский",
+	"Омск",
+	"Оренбург",
+	"Орехово-Зуево",
+	"Орёл",
+	"Орск",
+	"Пенза",
+	"Переславль-Залесский",
+	"Первоуральск",
+	"Пермь",
+	"Петрозаводск",
+	"Петропавловск-Камчатский",
+	"Подольск",
+	"Прокопьевск",
+	"Псков",
+	"Пятигорск",
+	"Ростов-на-Дону",
+	"Рубцовск",
+	"Русиново",
+	"Рыбинск",
+	"Рязань",
+	"Салават",
+	"Самара",
+	"Санкт-Петербург",
+	"Саранск",
+	"Саратов",
+	"Северодвинск",
+	"Северск",
+	"Селятино",
+	"Сергиев Посад",
+	"Серпухов",
+	"Смоленск",
+	"Сочи",
+	"Ставрополь",
+	"Старый Оскол",
+	"Стерлитамак",
+	"Сургут",
+	"Сызрань",
+	"Сыктывкар",
+	"Таганрог",
+	"Тамбов",
+	"Тверь",
+	"Тобольск",
+	"Тольятти",
+	"Томск",
+	"Тула",
+	"Тюмень",
+	"Улан-Удэ",
+	"Ульяновск",
+	"Уссурийск",
+	"Уфа",
+	"Ухта",
+	"Хабаровск",
+	"Хасавюрт",
+	"Химки",
+	"Чебоксары",
+	"Челябинск",
+	"Череповец",
+	"Черкесск",
+	"Чита",
+	"Шахты",
+	"Щелково",
+	"Электросталь",
+	"Элиста",
+	"Энгельс",
+	"Южно-Сахалинск",
+	"Якутск",
+	"Ярославль"
+};
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin