Merge default qmlfrontend
authorunc0rr
Tue, 17 May 2016 23:29:49 +0300
branchqmlfrontend
changeset 11828 a69124eb7ce7
parent 11827 8c71c5a1172f (current diff)
parent 11826 7654e2357934 (diff)
child 11841 6adf27e85cae
Merge default
CMakeLists.txt
hedgewars/ArgParsers.pas
hedgewars/hwengine.pas
hedgewars/uLocale.pas
hedgewars/uMisc.pas
hedgewars/uPhysFSLayer.pas
hedgewars/uRender.pas
hedgewars/uTypes.pas
hedgewars/uUtils.pas
hedgewars/uVariables.pas
--- a/.travis.yml	Tue May 17 23:18:08 2016 +0300
+++ b/.travis.yml	Tue May 17 23:29:49 2016 +0300
@@ -1,46 +1,64 @@
 language: c
+sudo: true
 os:
   - linux
   - osx
+
 branches:
   only:
     master
+
 compiler:
   - gcc
   - clang
+
 env:
   - BUILD_ARGS="-DCMAKE_BUILD_TYPE=Release"
   - BUILD_ARGS="-DCMAKE_BUILD_TYPE=Debug"
-  - BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1"
-  - BUILD_ARGS="-DNOSERVER=1 -DNOVIDEOREC=1 -DNOPNG=1"
+  - BUILD_ARGS="-DNOSERVER=1 -DGL2=1 -DNOPNG=1"
   - BUILD_ARGS="-DNOSERVER=1 -DLUA_SYSTEM=0 -DPHYSFS_SYSTEM=0"
+
 matrix:
   include:
-  - language: objective-c
+  - language: c
+    os: linux
+    compiler: clang
+    env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1"
+  - language: c
+    os: osx
+    compiler: clang
+    env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1"
+  - language: c
+    os: linux
+    compiler: clang
+    env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1 -DGL2=1"
+  - language: c
     os: osx
-    compiler:
-    env: BUILD_ARGS="IOS" SDL_LIB_PATH="$TRAVIS_BUILD_DIR/../Library"
+    compiler: clang
+    env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1 -DGL2=1"
+  - language: objective-c
+    sudo: required
+    os: osx
+    compiler: clang
+    env: TRAVIS_OS_NAME="ios" SDL_LIB_PATH="$TRAVIS_BUILD_DIR/../Library"
     osx_image: xcode7.2
-    sudo: required
+
 before_install: |
-  if [ "$BUILD_ARGS" == "IOS" ]; then
+  if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+    sudo add-apt-repository -y ppa:zoogie/sdl2-snapshots
+    sudo apt-get update -qq
+  elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
+    brew update --all
+  elif [ "$TRAVIS_OS_NAME" == "ios" ]; then
     hg clone http://hg.libsdl.org/SDL $SDL_LIB_PATH/SDL/
     hg clone http://hg.libsdl.org/SDL_image $SDL_LIB_PATH/SDL_image/
     hg clone http://hg.libsdl.org/SDL_net $SDL_LIB_PATH/SDL_net/
     hg clone http://hg.libsdl.org/SDL_ttf $SDL_LIB_PATH/SDL_ttf/
     hg clone http://hg.libsdl.org/SDL_mixer $SDL_LIB_PATH/SDL_mixer/
-  elif [ "$TRAVIS_OS_NAME" == "linux" ]; then
-    sudo add-apt-repository -y ppa:zoogie/sdl2-snapshots
-    sudo apt-get update -qq
-  elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
-    brew update --all
   fi
+
 install: |
-  if [ "$BUILD_ARGS" == "IOS" ]; then
-    # FPC 3.0.0 required for using FPC 3.0.1 which contains rtl for ios
-    sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/fpc/dist/3.0.0/i386-macosx/fpc-3.0.0.intel-macosx.dmg
-    sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/fpc/dist/3.0.0/i386-macosx/fpc-3.0.1.intel-macosx.cross.ios.dmg
-  elif [ "$TRAVIS_OS_NAME" == "linux" ]; then
+  if [ "$TRAVIS_OS_NAME" == "linux" ]; then
     sudo apt-get install debhelper cmake dpkg-dev libqt4-dev qt4-qmake libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-parsec3-dev libghc-bytestring-show-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-stm-dev libghc-network-dev libghc-dataenc-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev liblua5.1-0-dev imagemagick fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev libglew1.6-dev
   elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
     brew install fpc glew qt physfs lua51 sdl2 sdl2_image sdl2_net sdl2_ttf ffmpeg ghc cabal-install
@@ -55,31 +73,38 @@
       cabal install --only-dependencies tools/pas2c/pas2c.cabal
     fi
     # avoid installing Sparkle, add default unit path
-    export BUILD_ARGS="$BUILD_ARGS -DNOAUTOUPDATE=1 -DCMAKE_Pascal_FLAGS=-Fu/usr/local/lib/fpc/$(fpc -iW)/units/x86_64-darwin/*/"
+    export BUILD_ARGS="$BUILD_ARGS -DNOAUTOUPDATE=1"
+  elif [ "$TRAVIS_OS_NAME" == "ios" ]; then
+    # FPC 3.0.0 required for using FPC 3.0.1 which contains rtl for ios
+    sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/fpc/dist/3.0.0/i386-macosx/fpc-3.0.0.intel-macosx.dmg
+    sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/fpc/dist/3.0.0/i386-macosx/fpc-3.0.1.intel-macosx.cross.ios.dmg
   fi
+
 before_script: |
-  if [ "$BUILD_ARGS" == "IOS" ]; then
-    # More or less stable hw iOS version can be compiled with FPC 3.1.1, btw there are no (easy?) way to build it from sources,
+  if [ "$TRAVIS_OS_NAME" == "ios" ]; then
+    # More or less stable hw iOS version can be compiled with FPC 3.1.1,
+    # but there are no (easy?) way to build it from sources,
     # so we just temporary switch Xcode project to use FPC 3.0.1
     git apply tools/fix_fpc_ios_build_patch.diff
     xctool -project ./project_files/HedgewarsMobile/Hedgewars.xcodeproj -scheme UpdateDataFolder build
   else
     mkdir build && cd build && cmake $BUILD_ARGS ..
   fi
+
 script: |
-  if [ "$BUILD_ARGS" == "IOS" ]; then
+  if [ "$TRAVIS_OS_NAME" == "ios" ]; then
     xctool -project ./project_files/HedgewarsMobile/Hedgewars.xcodeproj -scheme Hedgewars -configuration Release build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
   else
     make VERBOSE=1
   fi
+
 after_success: |
-  if [ "$BUILD_ARGS" == "IOS" ]; then
-    :
-  elif [ "$TRAVIS_OS_NAME" == "linux" ]; then
+  if [ "$TRAVIS_OS_NAME" == "linux" ]; then
     make test_verbose
   elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
     make install
   fi
+
 notifications:
   email: false
   irc:
--- a/CMakeLists.txt	Tue May 17 23:18:08 2016 +0300
+++ b/CMakeLists.txt	Tue May 17 23:29:49 2016 +0300
@@ -54,10 +54,11 @@
 
 if(BUILD_ENGINE_JS)
     if(NOT CMAKE_TOOLCHAIN_FILE)
-        message(FATAL_ERROR "Missing emscripten toolchain file\nRerun cmake with -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake_modules/Platform/Emscripten.cmake")
+        message(FATAL_ERROR "Missing emscripten toolchain file\nClean your cache and rerun cmake with -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake_modules/Platform/Emscripten.cmake")
     endif()
 
     set(BUILD_ENGINE_C ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
+    set(BUILD_ENGINE_LIBRARY ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
     set(NOAUTOUPDATE ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
     set(PHYSFS_SYSTEM OFF CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
     set(LUA_SYSTEM OFF CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
@@ -65,6 +66,9 @@
     set(NOSERVER ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
     set(GL2 ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
     set(BUILD_SHARED_LIBS OFF CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
+
+    set(target_binary_install_dir "bin" CACHE PATH "install dest for binaries")
+    set(target_library_install_dir "lib" CACHE PATH "install dest for libs")
 endif()
 
 #system paths for finding required fonts (see share/hedgewars/Data/fonts)
@@ -86,8 +90,6 @@
 include(${CMAKE_MODULE_PATH}/paths.cmake)
 #general utilities
 include(${CMAKE_MODULE_PATH}/utils.cmake)
-#paths initialization
-include(${CMAKE_MODULE_PATH}/paths.cmake)
 #platform specific init code
 include(${CMAKE_MODULE_PATH}/platform.cmake)
 
--- a/CREDITS	Tue May 17 23:18:08 2016 +0300
+++ b/CREDITS	Tue May 17 23:29:49 2016 +0300
@@ -39,13 +39,14 @@
 - Joshua Frese <joshfrese@gmail.com> -> Bamboo (2008), EarthRise (2008), Freeway (2008), BambooPlinko (2008)
 - Stanko Tadić <stanko@mfhinc.net> -> Castle (2008), PirateFlag (2008)
 - dctPL -> Sticks (2010)
-- wolfmark & Dragonfly -> TrophyRace (2010), ShoppaKing (2010)
+- wolfmarc & Dragonfly -> TrophyRace (2010), ShoppaKing (2010)
 
 ==========
 = MUSIC
 ==========
+- HSR ( http://elhombresinremedio.com ) -> (new) City theme, Rock theme and many other tracks
 - John Dum <fizzy@gmail.com> -> Nature theme
-- Jonatan Nilsson <jonatanfan@gmail.com> -> Pirate theme, City theme, Oriental theme, Snow theme
+- Jonatan Nilsson <jonatanfan@gmail.com> -> Pirate theme, EarthRise (former City) theme, Oriental theme, Snow theme)
 - yd - http://opengameart.org/users/yd -> "oriented", used as Olympics SD theme
 - Kevin MacLeod - http://incompetech.com/ -> "hitman", used as basis for preliminary default SD theme
 
@@ -57,6 +58,7 @@
 - Stanko Tadić <stanko@mfhinc.net> -> Hell (2008)
 - Julien Koesten <julienkoesten@aol.com> -> Sheep (2008)
 - KoRn666 - Jungle (2010)
+- Randy Broda -> Fruit (2013), Cake (2014)
 
 ==========
 = VOICES
@@ -73,6 +75,11 @@
      http://www.freesound.org/people/Edgar/sounds/162/
      http://www.freesound.org/people/Ionizing/sounds/22033/
      http://www.freesound.org/people/Jovica/sounds/38317/
-
+- Cleaver impact sound remixed from
+     http://www.freesound.org/people/sethlind/sounds/265021/
+- Extra Time sound originally by uair01 (CC-BY), remixed from
+     http://www.freesound.org/people/uair01/sounds/65291/
+- Air mine impact sound by Wuzzy (WTFPL), based on
+     http://www.freesound.org/people/batchku/sounds/10479/
 
 ALL OTHER CONTENT IS PROPERTY OF Andrey Korotaev <unC0Rr@gmail.com> UNLESS OTHERWISE SPECIFIED
--- a/ChangeLog.txt	Tue May 17 23:18:08 2016 +0300
+++ b/ChangeLog.txt	Tue May 17 23:29:49 2016 +0300
@@ -2,18 +2,53 @@
 * bugfixes
 
 0.9.22 -> 0.9.23
+Content:
+ + New hat: "tf_scout" (this time for real)
+
+Game engine:
  + Improved hedgehog spawns on maps that lack land mass or free space
  + Highlander mode displays game scheme specifics (mines timer, etc.) in ESC info
- + AI hedgehogs know how to use Bee now
+ + AI hedgehogs can now use Bee and Vampirism
+ + Divided Teams mode will now work with more than 2 teams (Hint: you probably want to set world edges to "wrap" in such games)
+ + Fort Mode will now work with more than 2 teams
+ + Added "Forts" to map type selection. This makes the mode easier selectable/discoverable. Also the slider can be used to adjust the distance between forts.
+ + Render graves behind everything else, so that they can't hide mines etc.
+ + Several new sound effects for weapons and utilities
  + Small visual effects enhancements
+ + Briefly show theme and music authors in chat at start of game
+ * Fixed air-strikes drops being off-center
+ * Gameplay fix: Hammer damage is now rounded down. This means it will cause NO DAMAGE to a hedgehog with less than 3 hp.
+ * Fixed screenshots being too bright if taken in quick succession
  * Video recording functionality is restored
- * Gameplay fix: Hammer damage is now rounded down. This means it will cause NO DAMAGE to a hedgehog with less than 3 hp.
  * Fixed bee not being affected by wrap world edge while still being thrown
  * Fixed turn not ending when sticky mine was trapped on rubberband
- * Fixed screenshots being too bright if taken in quick succession
- * Fixed hog-speech missing a response type (Justyouwait/"You're gonna pay for that") on some platforms (e.g. Linux)
+ * Fixed hedgehog-voices missing a response type (Justyouwait/"You're gonna pay for that") on some platforms (e.g. Linux)
+ * Fixed SD-flakes of themes not working if regular flakes were disabled
+ * Fixed RC planes being able to collect frozen crates
+ * Fixed Seduction's "Yoohoo!" sound not playing
+ * Fixed Hedgehogs getting hurt while firing deagle / sniper rifle bullet in certains situations
  * Various other fixes
 
+Construction Mode:
+ + Added script parameter support:
+  + initialenergy: Amount of energy at start
+  + energyperround: New energy per round
+  + maxenergy: Maximum allowed
+ * Costs for weapon and utility crates were all equal
+ * Many other fixes and tweaks
+
+Missions and Game Styles:
+ + Added Basic Flying Saucer Training
+ + Rope-Knocking Challenge was improved (now awards score based on kills and time; taunts for knocking out hedgehogs)
+ * Portal Mind Challenge was cleaned up and reworked (especially less awful wording)
+ * Fixed TechRacer not recording finish if time was >= 100s
+ * Fixed Target Practice missions getting stuck when a target dropped into water
+ * Fixed mistakes and bad wording of strings in several missions, scripts and campaigns
+
+Frontend:
+ + Menu screens got few new icons and other tweaks, e.g. larger dropdown lists for easier access
+ + Clicking on "New" in weapon scheme editor now creates empty weapon scheme instead of default
+
 Lua-API:
  + New call: SetCinematicMode(enable) -- e.g. for cutscenes etc.
 
@@ -112,6 +147,7 @@
       onHogAttack() can now be hooked with new parameter: onHogAttack(ammoType) - to conveniently find out which ammo/weapon is being used
  * Fixes:
       gfResetHealth is now a available like the other GameFlags
+
 0.9.19 -> 0.9.20:
  + New campaign, A Space Adventure!
  + Password protected rooms
--- a/QTfrontend/hedgewars.qrc	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/hedgewars.qrc	Tue May 17 23:29:49 2016 +0300
@@ -22,6 +22,12 @@
         <file>res/botlevels/3.png</file>
         <file>res/botlevels/4.png</file>
         <file>res/botlevels/5.png</file>
+        <file>res/botlevels/small0.png</file>
+        <file>res/botlevels/small1.png</file>
+        <file>res/botlevels/small2.png</file>
+        <file>res/botlevels/small3.png</file>
+        <file>res/botlevels/small4.png</file>
+        <file>res/botlevels/small5.png</file>
         <file>res/botlevels/net0.png</file>
         <file>res/botlevels/net1.png</file>
         <file>res/botlevels/net2.png</file>
--- a/QTfrontend/hwconsts.cpp.in	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/hwconsts.cpp.in	Tue May 17 23:29:49 2016 +0300
@@ -41,6 +41,8 @@
 
 QString * cDefaultAmmoStore = new QString( AMMOLINE_DEFAULT_QT AMMOLINE_DEFAULT_PROB
                                            AMMOLINE_DEFAULT_DELAY AMMOLINE_DEFAULT_CRATE );
+QString * cEmptyAmmoStore =   new QString( AMMOLINE_EMPTY_QT AMMOLINE_EMPTY_PROB
+                                           AMMOLINE_EMPTY_DELAY AMMOLINE_EMPTY_CRATE );
 int cAmmoNumber = cDefaultAmmoStore->size() / 4;
 
 QList< QPair<QString, QString> > cDefaultAmmos =
--- a/QTfrontend/hwconsts.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/hwconsts.h	Tue May 17 23:29:49 2016 +0300
@@ -42,6 +42,7 @@
 class QStandardItemModel;
 
 extern QString * cDefaultAmmoStore;
+extern QString * cEmptyAmmoStore;
 extern int cAmmoNumber;
 extern QList< QPair<QString, QString> > cDefaultAmmos;
 
--- a/QTfrontend/hwform.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/hwform.cpp	Tue May 17 23:29:49 2016 +0300
@@ -103,7 +103,9 @@
 #include "AutoUpdater.h"
 
 #ifdef Q_OS_WIN
+#ifndef WINVER
 #define WINVER 0x0500
+#endif
 #include <windows.h>
 #else
 #include <unistd.h>
--- a/QTfrontend/model/MapModel.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/MapModel.cpp	Tue May 17 23:29:49 2016 +0300
@@ -32,12 +32,26 @@
 MapModel::MapInfo MapModel::MapInfoMaze = {MapModel::GeneratedMaze, "+maze+", "", 0, "", "", "", false};
 MapModel::MapInfo MapModel::MapInfoPerlin = {MapModel::GeneratedMaze, "+perlin+", "", 0, "", "", "", false};
 MapModel::MapInfo MapModel::MapInfoDrawn = {MapModel::HandDrawnMap, "+drawn+", "", 0, "", "", "", false};
-
+MapModel::MapInfo MapModel::MapInfoForts = {MapModel::FortsMap, "+forts+", "", 0, "", "", "", false};
 
 MapModel::MapModel(MapType maptype, QObject *parent) : QStandardItemModel(parent)
 {
     m_maptype = maptype;
     m_loaded = false;
+    m_filteredNoDLC = NULL;
+}
+
+QSortFilterProxyModel * MapModel::withoutDLC()
+{
+    if (m_filteredNoDLC == NULL)
+    {
+        m_filteredNoDLC = new QSortFilterProxyModel(this);
+        m_filteredNoDLC->setSourceModel(this);
+        // filtering based on IsDlcRole would be nicer
+        // but seems this model can only do string-based filtering :|
+        m_filteredNoDLC->setFilterRegExp(QRegExp("^[^*]"));
+    }
+    return m_filteredNoDLC;
 }
 
 bool MapModel::loadMaps()
--- a/QTfrontend/model/MapModel.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/MapModel.h	Tue May 17 23:29:49 2016 +0300
@@ -25,6 +25,7 @@
 #define HEDGEWARS_MAPMODEL_H
 
 #include <QStandardItemModel>
+#include <QSortFilterProxyModel>
 #include <QStringList>
 #include <QTextStream>
 #include <QHash>
@@ -52,7 +53,8 @@
             GeneratedPerlin,
             HandDrawnMap,
             MissionMap,
-            StaticMap
+            StaticMap,
+            FortsMap
         };
 
         /// a struct for holding the attributes of a map.
@@ -99,11 +101,13 @@
         QStandardItem * getMap(const QString & map);
 
         // Static MapInfos for drawn and generated maps
-        static MapInfo MapInfoRandom, MapInfoMaze, MapInfoPerlin, MapInfoDrawn;
+        static MapInfo MapInfoRandom, MapInfoMaze, MapInfoPerlin, MapInfoDrawn, MapInfoForts;
 
         /// Loads the maps
         bool loadMaps();
 
+        /// returns this model but excluding DLC themes
+        QSortFilterProxyModel * withoutDLC();
 
     private:
         /// map index lookup table. QPair<int, int> contains: <column, index>
@@ -111,6 +115,7 @@
         QHash<QString, int> m_mapIndexes;
         MapType m_maptype;
         bool m_loaded;
+        QSortFilterProxyModel * m_filteredNoDLC;
 
         /**
          * @brief Creates a QStandardItem, that holds the map info and item appearance.
--- a/QTfrontend/model/ThemeModel.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/ThemeModel.cpp	Tue May 17 23:29:49 2016 +0300
@@ -31,6 +31,21 @@
     m_data = QList<QMap<int, QVariant> >();
 
     m_themesLoaded = false;
+
+    m_filteredNoDLC = NULL;
+}
+
+QSortFilterProxyModel * ThemeModel::withoutDLC()
+{
+    if (m_filteredNoDLC == NULL)
+    {
+        m_filteredNoDLC = new QSortFilterProxyModel(this);
+        m_filteredNoDLC->setSourceModel(this);
+        // filtering based on IsDlcRole would be nicer
+        // but seems this model can only do string-based filtering :|
+        m_filteredNoDLC->setFilterRegExp(QRegExp("^[^*]"));
+    }
+    return m_filteredNoDLC;
 }
 
 int ThemeModel::rowCount(const QModelIndex &parent) const
--- a/QTfrontend/model/ThemeModel.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/ThemeModel.h	Tue May 17 23:29:49 2016 +0300
@@ -25,6 +25,7 @@
 #define HEDGEWARS_THEMEMODEL_H
 
 #include <QAbstractListModel>
+#include <QSortFilterProxyModel>
 #include <QStringList>
 #include <QMap>
 #include <QIcon>
@@ -44,10 +45,12 @@
 
         int rowCount(const QModelIndex &parent = QModelIndex()) const;
         QVariant data(const QModelIndex &index, int role) const;
+        QSortFilterProxyModel * withoutDLC();
 
     private:
         mutable QList<QMap<int, QVariant> > m_data;
         mutable bool m_themesLoaded;
+        mutable QSortFilterProxyModel * m_filteredNoDLC;
 
         void loadThemes() const;
 };
--- a/QTfrontend/model/ammoSchemeModel.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/ammoSchemeModel.cpp	Tue May 17 23:29:49 2016 +0300
@@ -755,13 +755,13 @@
     if (row == -1)
     {
         QList<QVariant> newScheme = defaultScheme;
-        newScheme[0] = QVariant(tr("new"));
+        newScheme[0] = QVariant(tr("New"));
         schemes.insert(schemes.size(), newScheme);
     }
     else
     {
         QList<QVariant> newScheme = schemes[row];
-        newScheme[0] = QVariant(tr("copy of %1").arg(newScheme[0].toString()));
+        newScheme[0] = QVariant(tr("Copy of %1").arg(newScheme[0].toString()));
         schemes.insert(schemes.size(), newScheme);
     }
 
--- a/QTfrontend/model/roomslistmodel.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/model/roomslistmodel.cpp	Tue May 17 23:29:49 2016 +0300
@@ -150,6 +150,7 @@
                 if (content == "+maze+") return tr("Random Maze");
                 if (content == "+perlin+") return tr("Random Perlin");
                 if (content == "+drawn+") return tr("Hand-drawn");
+                if (content == "+forts+") return tr("Forts");
             }
 
             // prefix ? if map not available
@@ -168,6 +169,7 @@
             content == "+maze+" ||
             content == "+perlin+" ||
             content == "+drawn+" ||
+            content == "+forts+" ||
             m_staticMapModel->mapExists(content) ||
             m_missionMapModel->mapExists(content))
             return QVariant();
--- a/QTfrontend/net/hwmap.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/net/hwmap.h	Tue May 17 23:29:49 2016 +0300
@@ -32,7 +32,8 @@
     MAPGEN_MAZE = 1,
     MAPGEN_PERLIN = 2,
     MAPGEN_DRAWN = 3,
-    MAPGEN_MAP = 4
+    MAPGEN_FORTS = 4,
+    MAPGEN_MAP = 5
 };
 
 class HWMap : public TCPBase
Binary file QTfrontend/res/botlevels/small0.png has changed
Binary file QTfrontend/res/botlevels/small1.png has changed
Binary file QTfrontend/res/botlevels/small1.xcf has changed
Binary file QTfrontend/res/botlevels/small2.png has changed
Binary file QTfrontend/res/botlevels/small2.xcf has changed
Binary file QTfrontend/res/botlevels/small3.png has changed
Binary file QTfrontend/res/botlevels/small3.xcf has changed
Binary file QTfrontend/res/botlevels/small4.png has changed
Binary file QTfrontend/res/botlevels/small4.xcf has changed
Binary file QTfrontend/res/botlevels/small5.png has changed
Binary file QTfrontend/res/botlevels/small5.xcf has changed
--- a/QTfrontend/ui/page/AbstractPage.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/AbstractPage.cpp	Tue May 17 23:29:49 2016 +0300
@@ -45,7 +45,7 @@
 
     // stretch grid space for body and footer
     pageLayout->setColumnStretch(0,1);
-    pageLayout->setColumnStretch(1,2);
+    pageLayout->setColumnStretch(1,8);
     pageLayout->setColumnStretch(2,1);
     pageLayout->setRowStretch(0,1);
     pageLayout->setRowStretch(1,0);
@@ -127,24 +127,24 @@
     return btn;
 }
 
-QPushButtonWithSound * AbstractPage::addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan, int columnSpan, bool hasIcon)
+QPushButtonWithSound * AbstractPage::addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan, int columnSpan, bool hasIcon, Qt::Alignment alignment)
 {
     QPushButtonWithSound * btn = formattedButton(name, hasIcon);
-    grid->addWidget(btn, row, column, rowSpan, columnSpan);
+    grid->addWidget(btn, row, column, rowSpan, columnSpan, alignment);
     return btn;
 }
 
-QPushButtonWithSound * AbstractPage::addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon)
+QPushButtonWithSound * AbstractPage::addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon, Qt::Alignment alignment)
 {
     QPushButtonWithSound * btn = formattedButton(name, hasIcon);
-    box->addWidget(btn, where);
+    box->addWidget(btn, where, alignment);
     return btn;
 }
 
-QPushButton* AbstractPage::addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon)
+QPushButton* AbstractPage::addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon, Qt::Alignment alignment)
 {
     QPushButton* btn = formattedSoundlessButton(name, hasIcon);
-    box->addWidget(btn, where);
+    box->addWidget(btn, where, alignment);
     return btn;
 }
 
--- a/QTfrontend/ui/page/AbstractPage.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/AbstractPage.h	Tue May 17 23:29:49 2016 +0300
@@ -185,10 +185,11 @@
          * @param rowSpan how many layout rows the button will span.
          * @param columnSpan how many layout columns the button will span.
          * @param hasIcon set to true if this is a picture button.
+         * @param alignment alignment of the button in the layout.
          *
          * @return the button.
          */
-        QPushButtonWithSound * addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan = 1, int columnSpan = 1, bool hasIcon = false);
+        QPushButtonWithSound * addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan = 1, int columnSpan = 1, bool hasIcon = false, Qt::Alignment alignment = 0);
 
         /**
          * @brief Creates a default formatted button and adds it to a
@@ -198,11 +199,12 @@
          * @param box pointer of the box layout in which to insert the button.
          * @param where layout ndex in which to insert the button.
          * @param hasIcon set to true if this is a picture button.
+         * @param alignment alignment of the button in the layout.
          *
          * @return the button.
          */
-        QPushButtonWithSound * addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false);
-        QPushButton* addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false);
+        QPushButtonWithSound * addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false, Qt::Alignment alignment = 0);
+        QPushButton* addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false, Qt::Alignment alignment = 0);
 
         /**
          * @brief Changes visibility of the back-button.
--- a/QTfrontend/ui/page/pagedata.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagedata.cpp	Tue May 17 23:29:49 2016 +0300
@@ -54,7 +54,8 @@
     QHBoxLayout * bottomLayout = new QHBoxLayout();
     bottomLayout->setStretch(0, 1);
 
-    pbOpenDir = addButton(tr("Open packages directory"), bottomLayout, 1, false);
+    pbOpenDir = addButton(tr("Open packages directory"), bottomLayout, 1, false, Qt::AlignBottom);
+    pbOpenDir->setMinimumHeight(50);
 
     bottomLayout->setStretch(2, 1);
 
--- a/QTfrontend/ui/page/pageeditteam.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pageeditteam.cpp	Tue May 17 23:29:49 2016 +0300
@@ -100,7 +100,7 @@
     tmpLabel->setText(QLabel::tr("Name"));
     GBTLayout->addWidget(tmpLabel, 0, 0);
     tmpLabel = new QLabel(GBoxTeam);
-    tmpLabel->setText(QLabel::tr("Type"));
+    tmpLabel->setText(QLabel::tr("Player"));
     GBTLayout->addWidget(tmpLabel, 1, 0);
     tmpLabel = new QLabel(GBoxTeam);
     tmpLabel->setText(QLabel::tr("Grave"));
@@ -118,19 +118,21 @@
     vbox2->addWidget(GBoxTeam);
 
     CBTeamLvl = new QComboBox(GBoxTeam);
-    CBTeamLvl->setIconSize(QSize(48, 48));
-    CBTeamLvl->addItem(QIcon(":/res/botlevels/0.png"), QComboBox::tr("Human"));
+    CBTeamLvl->setIconSize(QSize(32, 32));
+    CBTeamLvl->addItem(QIcon(":/res/botlevels/small0.png"), QComboBox::tr("Human"));
     for(int i = 5; i > 0; i--)
         CBTeamLvl->addItem(
-            QIcon(QString(":/res/botlevels/%1.png").arg(6 - i)),
-            QString("%1 %2").arg(QComboBox::tr("Level")).arg(i)
+            QIcon(QString(":/res/botlevels/small%1.png").arg(6 - i)),
+            QComboBox::tr("Computer (Level %1)").arg(i)
         );
+    CBTeamLvl->setFixedHeight(38);
     GBTLayout->addWidget(CBTeamLvl, 1, 1);
 
     CBGrave = new QComboBox(GBoxTeam);
     CBGrave->setMaxCount(65535);
     CBGrave->setMaxVisibleItems(20);
     CBGrave->setIconSize(QSize(32, 32));
+    CBGrave->setFixedHeight(44);
     GBTLayout->addWidget(CBGrave, 2, 1);
 
     CBFlag = new QComboBox(GBoxTeam);
@@ -145,6 +147,7 @@
 
     hbox->addWidget(CBVoicepack, 100);
     btnTestSound = addSoundlessButton(":/res/PlaySound.png", hbox, 1, true);
+    btnTestSound->setWhatsThis("Play a random example of this voice");
     hbox->setStretchFactor(btnTestSound, 1);
 
     GBTLayout->addLayout(hbox, 4, 1);
@@ -153,6 +156,7 @@
     GBoxFort->setTitle(QGroupBox::tr("Fort"));
     QGridLayout * GBFLayout = new QGridLayout(GBoxFort);
     CBFort = new QComboBox(GBoxFort);
+    CBFort->setMaxVisibleItems(25);
     CBFort->setMaxCount(65535);
     GBFLayout->addWidget(CBFort, 0, 0);
     FortPreview = new SquareLabel(GBoxFort);
--- a/QTfrontend/ui/page/pageinfo.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pageinfo.cpp	Tue May 17 23:29:49 2016 +0300
@@ -40,9 +40,10 @@
 QLayout * PageInfo::footerLayoutDefinition()
 {
     QHBoxLayout * bottomLayout = new QHBoxLayout();
-    BtnSnapshots = addButton(":/res/Star.png", bottomLayout, 0, true);
+    bottomLayout->setContentsMargins(0,0,0,0);
+    BtnSnapshots = addButton(":/res/Star.png", bottomLayout, 0, true, Qt::AlignBottom);
     BtnSnapshots->setWhatsThis(tr("Open the snapshot folder"));
-    bottomLayout->setAlignment(BtnSnapshots, Qt::AlignRight | Qt::AlignVCenter);
+    BtnSnapshots->setMinimumSize(50,50);
     return bottomLayout;
 }
 
--- a/QTfrontend/ui/page/pagemain.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagemain.cpp	Tue May 17 23:29:49 2016 +0300
@@ -109,11 +109,11 @@
     btnBack->setWhatsThis(tr("Exit game"));
 
 #ifdef VIDEOREC
-    BtnVideos = addButton(":/res/Videos.png", bottomLayout, 1, true);
+    BtnVideos = addButton(":/res/Videos.png", bottomLayout, 1, true, Qt::AlignBottom);
     BtnVideos->setWhatsThis(tr("Manage videos recorded from game"));
 #endif
 
-    BtnSetup = addButton(":/res/Settings.png", bottomLayout, 2, true);
+    BtnSetup = addButton(":/res/Settings.png", bottomLayout, 2, true, Qt::AlignBottom);
     BtnSetup->setWhatsThis(tr("Edit game preferences"));
 
     return bottomLayout;
--- a/QTfrontend/ui/page/pagemultiplayer.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagemultiplayer.cpp	Tue May 17 23:29:49 2016 +0300
@@ -46,7 +46,7 @@
 {
     QHBoxLayout * bottomLeftLayout = new QHBoxLayout();
 
-    btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true);
+    btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true, Qt::AlignBottom);
     btnSetup->setWhatsThis(tr("Edit game preferences"));
 
     return bottomLeftLayout;
@@ -60,6 +60,7 @@
     QSize sz = lp.actualSize(QSize(65535, 65535));
     BtnStartMPGame = new QPushButton();
     BtnStartMPGame->setText(tr("Start"));
+    BtnStartMPGame->setWhatsThis(tr("Start fighting (requires at least 2 teams)"));
     BtnStartMPGame->setMinimumWidth(sz.width() + 60);
     BtnStartMPGame->setIcon(lp);
     BtnStartMPGame->setFixedHeight(50);
@@ -68,7 +69,7 @@
     BtnStartMPGame->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
 
     footerLayout->addStretch();
-    footerLayout->addWidget(BtnStartMPGame);
+    footerLayout->addWidget(BtnStartMPGame, 0, Qt::AlignBottom);
 
     return footerLayout;
 }
--- a/QTfrontend/ui/page/pagenet.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagenet.cpp	Tue May 17 23:29:49 2016 +0300
@@ -71,7 +71,7 @@
     QHBoxLayout * footerLayout = new QHBoxLayout();
 
     BtnNetSvrStart = formattedButton(QPushButton::tr("Start server"));
-    BtnNetSvrStart->setMinimumWidth(180);
+    BtnNetSvrStart->setMinimumSize(180, 50);
     QString serverPath = bindir->absolutePath() + "/hedgewars-server";
 #ifdef Q_OS_WIN
     serverPath += + ".exe";
@@ -80,7 +80,7 @@
     BtnNetSvrStart->setVisible(server.exists());
 
     footerLayout->addStretch();
-    footerLayout->addWidget(BtnNetSvrStart);
+    footerLayout->addWidget(BtnNetSvrStart, 0, Qt::AlignBottom);
 
     return footerLayout;
 }
--- a/QTfrontend/ui/page/pagenetgame.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagenetgame.cpp	Tue May 17 23:29:49 2016 +0300
@@ -49,6 +49,7 @@
     roomConfigLayout->setSpacing(0);
 
     leRoomName = new HistoryLineEdit(this, 10);
+    leRoomName->setWhatsThis(tr("Room name"));
     leRoomName->setMaxLength(60);
     leRoomName->setMinimumWidth(400);
     leRoomName->setMaximumWidth(600);
@@ -58,6 +59,7 @@
     roomConfigLayout->addWidget(leRoomName, 100);
 
     BtnUpdate = new QPushButton();
+    BtnUpdate->setWhatsThis(tr("Update the room name"));
     BtnUpdate->setEnabled(false);
     BtnUpdate->setText(tr("Update"));
     BtnUpdate->setFixedHeight(leRoomName->height() - 0);
@@ -86,7 +88,7 @@
 
     // Game config
 
-    pGameCFG = new GameCFGWidget(this);
+    pGameCFG = new GameCFGWidget(this, true);
     pageLayout->addWidget(pGameCFG, 1, 0);
 
     // Teams
@@ -111,8 +113,9 @@
 QLayout * PageNetGame::footerLayoutLeftDefinition()
 {
     QHBoxLayout * bottomLeftLayout = new QHBoxLayout();
+    bottomLeftLayout->setContentsMargins(0,0,0,0);
 
-    btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true);
+    btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true, Qt::AlignBottom);
     btnSetup->setWhatsThis(tr("Edit game preferences"));
 
     return bottomLeftLayout;
@@ -125,13 +128,14 @@
     // Ready button
 
     BtnGo = new QPushButton(this);
-    BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
     BtnGo->setIconSize(QSize(25, 34));
+    BtnGo->setWhatsThis(tr("Turn on the lightbulb to show the other players when you're ready to fight"));
+    setReadyStatus(false);
     BtnGo->setMinimumWidth(50);
     BtnGo->setMinimumHeight(50);
 
     bottomLayout->addStretch();
-    bottomLayout->addWidget(BtnGo);
+    bottomLayout->addWidget(BtnGo, 0, Qt::AlignBottom);
 
     // Start button
 
@@ -139,13 +143,14 @@
     QSize sz = lp.actualSize(QSize(65535, 65535));
     BtnStart = new QPushButton();
     BtnStart->setText(tr("Start"));
+    BtnStart->setWhatsThis(tr("Start fighting (requires at least 2 teams)"));
     BtnStart->setMinimumWidth(sz.width() + 60);
     BtnStart->setIcon(lp);
     BtnStart->setFixedHeight(50);
     BtnStart->setIconSize(sz);
     BtnStart->setFlat(true);
     BtnStart->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    bottomLayout->addWidget(BtnStart);
+    bottomLayout->addWidget(BtnStart, 0, Qt::AlignBottom);
 
     return bottomLayout;
 }
@@ -217,9 +222,13 @@
 void PageNetGame::setReadyStatus(bool isReady)
 {
     if(isReady)
+    {
         BtnGo->setIcon(QIcon(":/res/lightbulb_on.png"));
+    }
     else
+    {
         BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
+    }
 }
 
 void PageNetGame::onRoomNameEdited()
--- a/QTfrontend/ui/page/pagenetserver.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagenetserver.cpp	Tue May 17 23:29:49 2016 +0300
@@ -98,10 +98,10 @@
 
     BtnStart = formattedButton(QPushButton::tr("Start"));
     BtnStart->setWhatsThis(QPushButton::tr("Start private server"));
-    BtnStart->setMinimumWidth(180);
+    BtnStart->setMinimumSize(180, 50);
 
     bottomLayout->addStretch();
-    bottomLayout->addWidget(BtnStart);
+    bottomLayout->addWidget(BtnStart, 0, Qt::AlignBottom);
 
     return bottomLayout;
 }
--- a/QTfrontend/ui/page/pageplayrecord.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pageplayrecord.cpp	Tue May 17 23:29:49 2016 +0300
@@ -40,11 +40,6 @@
     pageLayout->setColumnStretch(2, 1);
     pageLayout->setRowStretch(2, 100);
 
-    BtnPlayDemo = new QPushButton(this);
-    BtnPlayDemo->setFont(*font14);
-    BtnPlayDemo->setText(QPushButton::tr("Play demo"));
-    pageLayout->addWidget(BtnPlayDemo, 3, 2);
-
     BtnRenameRecord = new QPushButton(this);
     BtnRenameRecord->setText(QPushButton::tr("Rename"));
     pageLayout->addWidget(BtnRenameRecord, 0, 2);
@@ -60,6 +55,23 @@
     return pageLayout;
 }
 
+QLayout * PagePlayDemo::footerLayoutDefinition()
+{
+    QHBoxLayout * bottomLayout = new QHBoxLayout();
+
+    BtnPlayDemo = addButton(tr("Play demo"), bottomLayout, 0, false, Qt::AlignBottom);
+    const QIcon& lp = QIcon(":/res/Start.png");
+    QSize sz = lp.actualSize(QSize(65535, 65535));
+    BtnPlayDemo->setMinimumWidth(sz.width());
+    BtnPlayDemo->setIcon(lp);
+    BtnPlayDemo->setFixedHeight(50);
+    BtnPlayDemo->setIconSize(sz);
+    BtnPlayDemo->setFlat(true);
+    BtnPlayDemo->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+
+    return bottomLayout;
+}
+
 void PagePlayDemo::connectSignals()
 {
     connect(BtnRenameRecord, SIGNAL(clicked()), this, SLOT(renameRecord()));
@@ -85,12 +97,14 @@
         dir.cd("Demos");
         extension = "hwd";
         BtnPlayDemo->setText(QPushButton::tr("Play demo"));
+        BtnPlayDemo->setWhatsThis(tr("Play the selected demo"));
     }
     else
     {
         dir.cd("Saves");
         extension = "hws";
         BtnPlayDemo->setText(QPushButton::tr("Load"));
+        BtnPlayDemo->setWhatsThis(tr("Load the selected game"));
     }
     dir.setFilter(QDir::Files);
 
--- a/QTfrontend/ui/page/pageplayrecord.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pageplayrecord.h	Tue May 17 23:29:49 2016 +0300
@@ -52,6 +52,7 @@
 
     private:
         QLayout * bodyLayoutDefinition();
+        QLayout * footerLayoutDefinition();
         void connectSignals();
 
         RecordType recType;
--- a/QTfrontend/ui/page/pageroomslist.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pageroomslist.cpp	Tue May 17 23:29:49 2016 +0300
@@ -174,8 +174,8 @@
 {
     QHBoxLayout * bottomLayout = new QHBoxLayout();
 
-    BtnAdmin = addButton(tr("Admin features"), bottomLayout, 0);
-    BtnAdmin->setStyleSheet("padding: 4px auto;");
+    BtnAdmin = addButton(tr("Admin features"), bottomLayout, 0, false, Qt::AlignBottom);
+    BtnAdmin->setMinimumSize(180, 50);
     BtnAdmin->setWhatsThis(tr("Open server administration page"));
 
     return bottomLayout;
--- a/QTfrontend/ui/page/pagescheme.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagescheme.cpp	Tue May 17 23:29:49 2016 +0300
@@ -30,6 +30,7 @@
 #include "ammoSchemeModel.h"
 #include "pagescheme.h"
 #include "FreqSpinBox.h"
+#include "MinesTimeSpinBox.h"
 
 
 QLayout * PageScheme::bodyLayoutDefinition()
@@ -156,7 +157,7 @@
     glGMLayout->addWidget(TBW_placehog,4,1,1,1);
 
     TBW_teamsDivide = new ToggleButtonWidget(gbGameModes, ":/res/btnTeamsDivide@2x.png");
-    TBW_teamsDivide->setWhatsThis(tr("Teams will start on opposite sides of the terrain, two team colours max!"));
+    TBW_teamsDivide->setWhatsThis(tr("Each clan starts in its own part of the terrain."));
     glGMLayout->addWidget(TBW_teamsDivide,4,2,1,1);
 
     TBW_tagteam = new ToggleButtonWidget(gbGameModes, ":/res/btnTagTeam@2x.png");
@@ -170,15 +171,37 @@
     // Right
     QLabel * l;
 
+    QString wtDamageModifier = tr("Overall damage and knockback in percent");
+    QString wtTurnTime = tr("Turn time in seconds");
+    QString wtInitHealth = tr("Initial health of hedgehogs");
+    QString wtSuddenDeath = tr("How many rounds have to be played before Sudden Death begins");
+    QString wtWaterRise = tr("How much the water rises per turn while in Sudden Death. Set to 0 along with Sudden Death Health Decrease to disable Sudden Death.");
+    QString wtHealthDecrease = tr("How much health hedgehogs lose per turn while in Sudden Death, down to 1 health. Set to 0 along with Sudden Death Water Rise to disable Sudden Death.");
+    QString wtRopeModifier = tr("Maximum rope length in percent");
+    QString wtHealthCrates = tr("Likelihood of a dropped crate being a health crate. All other crates will be weapon or utility crates.");
+    QString wtCaseProb = tr("Likelihood of a crate dropping before a turn");
+    QString wtCrateHealth= tr("Health bonus for collecting a health crate");
+    QString wtMinesTime = tr("Detonation timer of mines. The random timer lies between 0 and 5 seconds. The timer of air mines will be a quarter of the mines timer.");
+    QString wtMines = tr("Average number of mines to be placed a medium-sized island map. This number will be scaled for other maps.");
+    QString wtMineDuds = tr("Likelihood of a mine being a dud. Does not affect mines placed by hedgehogs.");
+    QString wtExplosives = tr("Average number of barrels to be placed a medium-sized island map. This number will be scaled for other maps.");
+    QString wtAirMines = tr("Average number of air mines to be placed a medium-sized island map. This number will be scaled for other maps.");
+    QString wtWorldEdge = tr("Affects the left and right boundaries of the map");
+    QString wtGetAwayTime = tr("Time you get after an attack");
+    QString wtScriptParam = tr("Additional parameter to configure game styles. The meaning depends on the used style, refer to the documentation. When in doubt, leave it empty.");
+
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Damage Modifier"));
+    l->setWhatsThis(wtDamageModifier);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,0,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtDamageModifier);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconDamage.png"));
     glBSLayout->addWidget(l,0,1,1,1);
     SB_DamageModifier = new QSpinBox(gbBasicSettings);
+    SB_DamageModifier->setWhatsThis(wtDamageModifier);
     SB_DamageModifier->setRange(10, 300);
     SB_DamageModifier->setValue(100);
     SB_DamageModifier->setSingleStep(25);
@@ -186,13 +209,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Turn Time"));
+    l->setWhatsThis(wtTurnTime);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,1,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtTurnTime);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconTime.png"));
     glBSLayout->addWidget(l,1,1,1,1);
     SB_TurnTime = new QSpinBox(gbBasicSettings);
+    SB_TurnTime->setWhatsThis(wtTurnTime);
     SB_TurnTime->setRange(1, 9999);
     SB_TurnTime->setValue(45);
     SB_TurnTime->setSingleStep(15);
@@ -200,13 +226,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Initial Health"));
+    l->setWhatsThis(wtInitHealth);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,2,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtInitHealth);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconHealth.png"));
     glBSLayout->addWidget(l,2,1,1,1);
     SB_InitHealth = new QSpinBox(gbBasicSettings);
+    SB_InitHealth->setWhatsThis(wtInitHealth);
     SB_InitHealth->setRange(50, 200);
     SB_InitHealth->setValue(100);
     SB_InitHealth->setSingleStep(25);
@@ -214,13 +243,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Sudden Death Timeout"));
+    l->setWhatsThis(wtSuddenDeath);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,3,0,1,1);
     l = new QLabel(gbBasicSettings);
     l->setFixedSize(32,32);
+    l->setWhatsThis(wtSuddenDeath);
     l->setPixmap(QPixmap(":/res/iconSuddenDeathTime.png"));
     glBSLayout->addWidget(l,3,1,1,1);
     SB_SuddenDeath = new QSpinBox(gbBasicSettings);
+    SB_SuddenDeath->setWhatsThis(wtSuddenDeath);
     SB_SuddenDeath->setRange(0, 50);
     SB_SuddenDeath->setValue(15);
     SB_SuddenDeath->setSingleStep(3);
@@ -228,13 +260,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Sudden Death Water Rise"));
+    l->setWhatsThis(wtWaterRise);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,4,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtWaterRise);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconSuddenDeathWater.png"));
     glBSLayout->addWidget(l,4,1,1,1);
     SB_WaterRise = new QSpinBox(gbBasicSettings);
+    SB_WaterRise->setWhatsThis(wtWaterRise);
     SB_WaterRise->setRange(0, 100);
     SB_WaterRise->setValue(47);
     SB_WaterRise->setSingleStep(5);
@@ -242,13 +277,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Sudden Death Health Decrease"));
+    l->setWhatsThis(wtHealthDecrease);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,5,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtHealthDecrease);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
     glBSLayout->addWidget(l,5,1,1,1);
     SB_HealthDecrease = new QSpinBox(gbBasicSettings);
+    SB_HealthDecrease->setWhatsThis(wtHealthDecrease);
     SB_HealthDecrease->setRange(0, 100);
     SB_HealthDecrease->setValue(5);
     SB_HealthDecrease->setSingleStep(1);
@@ -256,13 +294,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("% Rope Length"));
+    l->setWhatsThis(wtRopeModifier);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,6,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtRopeModifier);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconRope.png"));
     glBSLayout->addWidget(l,6,1,1,1);
     SB_RopeModifier = new QSpinBox(gbBasicSettings);
+    SB_RopeModifier->setWhatsThis(wtRopeModifier);
     SB_RopeModifier->setRange(25, 999);
     SB_RopeModifier->setValue(100);
     SB_RopeModifier->setSingleStep(25);
@@ -270,26 +311,32 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Crate Drops"));
+    l->setWhatsThis(wtCaseProb);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,7,0,1,1);
     l = new QLabel(gbBasicSettings);
     l->setFixedSize(32,32);
+    l->setWhatsThis(wtCaseProb);
     l->setPixmap(QPixmap(":/res/iconBox.png"));
     glBSLayout->addWidget(l,7,1,1,1);
     SB_CaseProb = new FreqSpinBox(gbBasicSettings);
+    SB_CaseProb->setWhatsThis(wtCaseProb);
     SB_CaseProb->setRange(0, 9);
     SB_CaseProb->setValue(5);
     glBSLayout->addWidget(SB_CaseProb,7,2,1,1);
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("% Health Crates"));
+    l->setWhatsThis(wtHealthCrates);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,8,0,1,1);
     l = new QLabel(gbBasicSettings);
     l->setFixedSize(32,32);
+    l->setWhatsThis(wtHealthCrates);
     l->setPixmap(QPixmap(":/res/iconHealthPercent.png"));
     glBSLayout->addWidget(l,8,1,1,1);
     SB_HealthCrates = new QSpinBox(gbBasicSettings);
+    SB_HealthCrates->setWhatsThis(wtHealthCrates);
     SB_HealthCrates->setRange(0, 100);
     SB_HealthCrates->setValue(35);
     SB_HealthCrates->setSingleStep(5);
@@ -297,13 +344,16 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Health in Crates"));
+    l->setWhatsThis(wtCrateHealth);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,9,0,1,1);
     l = new QLabel(gbBasicSettings);
     l->setFixedSize(32,32);
+    l->setWhatsThis(wtCrateHealth);
     l->setPixmap(QPixmap(":/res/iconHealth.png"));
     glBSLayout->addWidget(l,9,1,1,1);
     SB_CrateHealth = new QSpinBox(gbBasicSettings);
+    SB_CrateHealth->setWhatsThis(wtCrateHealth);
     SB_CrateHealth->setRange(0, 200);
     SB_CrateHealth->setValue(25);
     SB_CrateHealth->setSingleStep(5);
@@ -311,29 +361,33 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Mines Time"));
+    l->setWhatsThis(wtMinesTime);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,10,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtMinesTime);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconMineTime.png"));
     glBSLayout->addWidget(l,10,1,1,1);
-    SB_MinesTime = new QSpinBox(gbBasicSettings);
+    SB_MinesTime = new MinesTimeSpinBox(gbBasicSettings);
+    SB_MinesTime->setWhatsThis(wtMinesTime);
     SB_MinesTime->setRange(-1, 5);
     SB_MinesTime->setValue(3);
     SB_MinesTime->setSingleStep(1);
-    SB_MinesTime->setSpecialValueText(tr("Random"));
-    SB_MinesTime->setSuffix(" "+ tr("Seconds"));
     glBSLayout->addWidget(SB_MinesTime,10,2,1,1);
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Mines"));
+    l->setWhatsThis(wtMines);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,11,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtMines);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconMine.png"));
     glBSLayout->addWidget(l,11,1,1,1);
     SB_Mines = new QSpinBox(gbBasicSettings);
+    SB_Mines->setWhatsThis(wtMines);
     SB_Mines->setRange(0, 200);
     SB_Mines->setValue(0);
     SB_Mines->setSingleStep(5);
@@ -341,27 +395,33 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("% Dud Mines"));
+    l->setWhatsThis(wtMineDuds);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,12,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtMineDuds);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconDud.png"));
     glBSLayout->addWidget(l,12,1,1,1);
     SB_MineDuds = new QSpinBox(gbBasicSettings);
+    SB_MineDuds->setWhatsThis(wtMineDuds);
     SB_MineDuds->setRange(0, 100);
     SB_MineDuds->setValue(0);
     SB_MineDuds->setSingleStep(5);
     glBSLayout->addWidget(SB_MineDuds,12,2,1,1);
 
     l = new QLabel(gbBasicSettings);
-    l->setText(QLabel::tr("Explosives"));
+    l->setText(QLabel::tr("Barrels"));
+    l->setWhatsThis(wtExplosives);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,13,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtExplosives);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconExplosive.png"));
     glBSLayout->addWidget(l,13,1,1,1);
     SB_Explosives = new QSpinBox(gbBasicSettings);
+    SB_Explosives->setWhatsThis(wtExplosives);
     SB_Explosives->setRange(0, 200);
     SB_Explosives->setValue(0);
     SB_Explosives->setSingleStep(3);
@@ -369,27 +429,33 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Air Mines"));
+    l->setWhatsThis(wtAirMines);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,14,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtAirMines);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconAirMine.png"));
     glBSLayout->addWidget(l,14,1,1,1);
     SB_AirMines = new QSpinBox(gbBasicSettings);
+    SB_AirMines->setWhatsThis(wtAirMines);
     SB_AirMines->setRange(0, 200);
     SB_AirMines->setValue(0);
     SB_AirMines->setSingleStep(5);
     glBSLayout->addWidget(SB_AirMines,14,2,1,1);
 
     l = new QLabel(gbBasicSettings);
-    l->setText(QLabel::tr("% Get Away Time"));
+    l->setText(QLabel::tr("% Retreat Time"));
+    l->setWhatsThis(wtGetAwayTime);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,15,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtGetAwayTime);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconTime.png"));
     glBSLayout->addWidget(l,15,1,1,1);
     SB_GetAwayTime = new QSpinBox(gbBasicSettings);
+    SB_GetAwayTime->setWhatsThis(wtGetAwayTime);
     SB_GetAwayTime->setRange(0, 999);
     SB_GetAwayTime->setValue(100);
     SB_GetAwayTime->setSingleStep(25);
@@ -397,14 +463,17 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("World Edge"));
+    l->setWhatsThis(wtWorldEdge);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,16,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtWorldEdge);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconEarth.png"));
     glBSLayout->addWidget(l,16,1,1,1);
 
     CB_WorldEdge = new QComboBox(gbBasicSettings);
+    CB_WorldEdge->setWhatsThis(wtWorldEdge);
     CB_WorldEdge->insertItem(0, tr("None (Default)"));
     CB_WorldEdge->insertItem(1, tr("Wrap (World wraps)"));
     CB_WorldEdge->insertItem(2, tr("Bounce (Edges reflect)"));
@@ -415,14 +484,17 @@
 
     l = new QLabel(gbBasicSettings);
     l->setText(QLabel::tr("Script parameter"));
+    l->setWhatsThis(wtScriptParam);
     l->setWordWrap(true);
     glBSLayout->addWidget(l,17,0,1,1);
     l = new QLabel(gbBasicSettings);
+    l->setWhatsThis(wtScriptParam);
     l->setFixedSize(32,32);
     l->setPixmap(QPixmap(":/res/iconScript.png"));
     glBSLayout->addWidget(l,17,1,1,1);
 
     LE_ScriptParam = new QLineEdit(gbBasicSettings);
+    LE_ScriptParam->setWhatsThis(wtScriptParam);
     LE_ScriptParam->setMaxLength(240);
     glBSLayout->addWidget(LE_ScriptParam,17,2,1,1);
 
@@ -431,6 +503,7 @@
     l->setText(QLabel::tr("Scheme Name:"));
 
     LE_name = new QLineEdit(this);
+    LE_name->setWhatsThis("Name of this scheme");
 
     gl->addWidget(LE_name,15,1,1,5);
     gl->addWidget(l,15,0,1,1);
--- a/QTfrontend/ui/page/pagescheme.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/page/pagescheme.h	Tue May 17 23:29:49 2016 +0300
@@ -23,6 +23,7 @@
 #include "togglebutton.h"
 
 class FreqSpinBox;
+class MinesTimeSpinBox;
 
 class PageScheme : public AbstractPage
 {
@@ -85,7 +86,7 @@
         FreqSpinBox * SB_CaseProb;
         QSpinBox * SB_HealthCrates;
         QSpinBox * SB_CrateHealth;
-        QSpinBox * SB_MinesTime;
+        MinesTimeSpinBox * SB_MinesTime;
         QSpinBox * SB_Mines;
         QSpinBox * SB_AirMines;
         QSpinBox * SB_MineDuds;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/ui/widget/MinesTimeSpinBox.cpp	Tue May 17 23:29:49 2016 +0300
@@ -0,0 +1,40 @@
+/*
+ * Hedgewars, a free turn based strategy game
+ * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/**
+ * @file
+ * @brief MinesTimeSpinBox class implementation
+ */
+
+#include "MinesTimeSpinBox.h"
+
+
+MinesTimeSpinBox::MinesTimeSpinBox(QWidget* parent) : QSpinBox(parent)
+{
+    // do nothing
+};
+
+
+QString MinesTimeSpinBox::textFromValue(int value) const
+{
+    switch (value)
+    {
+        case -1: return tr("Random");
+        default: return tr("%1 seconds", "", value).arg(value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/ui/widget/MinesTimeSpinBox.h	Tue May 17 23:29:49 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Hedgewars, a free turn based strategy game
+ * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/**
+ * @file
+ * @brief MinesTimeSpinBox class definition
+ */
+
+#ifndef HEDGEWARS_MINESTIMESPINBOX_H
+#define HEDGEWARS_MINESTIMESPINBOX_H
+
+#include <QObject>
+#include <QSpinBox>
+
+/**
+ * <code>SpinBox</code> that returns its value as localized mines time.
+ * @since  0.9.23
+ */
+class MinesTimeSpinBox : public QSpinBox
+{
+        Q_OBJECT
+
+    public:
+        /**
+         * @brief Class constructor.
+         * @param parent parent widget.
+         */
+        MinesTimeSpinBox(QWidget * parent);
+
+    protected:
+        /**
+         * Returns it's value localized.
+         * @param value integer value to be representing as string.
+         * @return string representation
+         */
+        QString textFromValue(int value) const;
+};
+
+
+#endif // HEDGEWARS_MINESTIMESPINBOX_H
--- a/QTfrontend/ui/widget/chatwidget.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/chatwidget.cpp	Tue May 17 23:29:49 2016 +0300
@@ -210,6 +210,7 @@
     // Chat view
 
     chatText = new QTextBrowser(this);
+    chatText->setWhatsThis(tr("Chat log"));
     chatText->document()->setDefaultStyleSheet(styleSheet());
     chatText->setMinimumHeight(20);
     chatText->setMinimumWidth(10);
@@ -226,6 +227,7 @@
     // Hover:   rgb(13, 5, 68)
 
     chatEditLine = new SmartLineEdit();
+    chatEditLine->setWhatsThis(tr("Enter chat messages here and send them with [Enter]"));
     chatEditLine->setMaxLength(300);
     chatEditLine->setStyleSheet("SmartLineEdit { background-color: rgb(23, 11, 54); padding: 2px 8px; border-width: 0px; border-radius: 7px; } SmartLineEdit:hover, SmartLineEdit:focus { background-color: rgb(13, 5, 68); }");
     chatEditLine->setFixedHeight(24);
@@ -237,6 +239,7 @@
     // Nickname list
 
     chatNicks = new QListView(this);
+    chatNicks->setWhatsThis(tr("List of players"));
     chatNicks->setIconSize(QSize(24, 16));
     chatNicks->setSelectionMode(QAbstractItemView::SingleSelection);
     chatNicks->setEditTriggers(QAbstractItemView::NoEditTriggers);
@@ -538,7 +541,9 @@
 
     // add default commands
     QStringList cmds;
-    cmds << "/me" << "/discardStyleSheet" << "/saveStyleSheet";
+    // /saveStyleSheet is(/was?) broken because of Physfs or something
+    // cmds << "/me" << "/discardStyleSheet" << "/saveStyleSheet";
+    cmds << "/me" << "/info" << "/quit" << "/clear" << "/discardStyleSheet";
     chatEditLine->addCommands(cmds);
 
     chatText->clear();
@@ -828,7 +833,10 @@
         QString tline = line.trimmed();
         if (tline.startsWith("/me"))
             return false; // not a real command
-
+        else if (tline == "/clear") {
+            chatStrings.clear();
+            chatText->clear();
+        }
         else if (tline == "/discardStyleSheet")
             discardStyleSheet();
         else if (tline == "/saveStyleSheet")
--- a/QTfrontend/ui/widget/feedbackdialog.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/feedbackdialog.cpp	Tue May 17 23:29:49 2016 +0300
@@ -35,7 +35,9 @@
 #include <string>
 
 #ifdef Q_OS_WIN
+#ifndef WINVER
 #define WINVER 0x0500
+#endif
 #include <windows.h>
 #else
 #include <unistd.h>
--- a/QTfrontend/ui/widget/gamecfgwidget.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/gamecfgwidget.cpp	Tue May 17 23:29:49 2016 +0300
@@ -39,7 +39,7 @@
 #include "GameStyleModel.h"
 #include "themeprompt.h"
 
-GameCFGWidget::GameCFGWidget(QWidget* parent) :
+GameCFGWidget::GameCFGWidget(QWidget* parent, bool randomWithoutDLC) :
     QGroupBox(parent)
     , mainLayout(this)
     , seedRegexp("\\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\}")
@@ -80,6 +80,7 @@
     // Map options
 
     pMapContainer = new HWMapContainer(mapContainerFree);
+    pMapContainer->setRandomWithoutDLC(randomWithoutDLC);
     stackLayout->addWidget(mapContainerFree, 0, Qt::AlignHCenter);
     pMapContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     pMapContainer->setFixedSize(width() - 14, 278);
--- a/QTfrontend/ui/widget/gamecfgwidget.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/gamecfgwidget.h	Tue May 17 23:29:49 2016 +0300
@@ -40,7 +40,7 @@
         Q_PROPERTY(bool master READ isMaster WRITE setMaster)
 
     public:
-        GameCFGWidget(QWidget* parent);
+        GameCFGWidget(QWidget* parent, bool randomWithoutDLC = false);
         quint32 getGameFlags() const;
         quint32 getInitHealth() const;
         QByteArray getFullConfig() const;
--- a/QTfrontend/ui/widget/mapContainer.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/mapContainer.cpp	Tue May 17 23:29:49 2016 +0300
@@ -63,6 +63,7 @@
     m_script = QString();
     m_prevMapFeatureSize = 12;
     m_mapFeatureSize = 12;
+    m_withoutDLC = false;
 
     hhSmall.load(":/res/hh_small.png");
     hhLimit = 18;
@@ -109,6 +110,7 @@
     cType->insertItem(3, tr("Randomly generated"), MapModel::GeneratedMap);
     cType->insertItem(4, tr("Random maze"), MapModel::GeneratedMaze);
     cType->insertItem(5, tr("Random perlin"), MapModel::GeneratedPerlin);
+    cType->insertItem(6, tr("Forts"), MapModel::FortsMap);
     connect(cType, SIGNAL(currentIndexChanged(int)), this, SLOT(mapTypeChanged(int)));
     m_childWidgets << cType;
 
@@ -125,6 +127,7 @@
     btnRandomize->setFlat(true);
     btnRandomize->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
     connect(btnRandomize, SIGNAL(clicked()), this, SLOT(setRandomMap()));
+
     m_childWidgets << btnRandomize;
     btnRandomize->setStyleSheet("padding: 5px;");
     btnRandomize->setFixedHeight(cType->height());
@@ -134,6 +137,7 @@
 
     btnSeed = new QPushButton(parentWidget()->parentWidget());
     btnSeed->setText(tr("Seed"));
+    btnSeed->setWhatsThis(tr("View and edit the seed, the source of randomness in the game"));
     btnSeed->setStyleSheet("padding: 5px;");
     btnSeed->setFixedHeight(cType->height());
     connect(btnSeed, SIGNAL(clicked()), this, SLOT(showSeedPrompt()));
@@ -249,14 +253,29 @@
     bottomLeftLayout->addStretch(1);
 
     /* Theme chooser */
+    QHBoxLayout * themeHBox = new QHBoxLayout(this);
+
+    btnRandTheme = new QPushButton();
+    btnRandTheme->setWhatsThis(tr("Randomize the theme"));
+    btnRandTheme->setIcon(lp);
+    btnRandTheme->setIconSize(QSize(24, 24));
+    btnRandTheme->setFixedHeight(30);
+    btnRandTheme->setFixedWidth(30);
+    connect(btnRandTheme, SIGNAL(clicked()), this, SLOT(setRandomTheme()));
+    m_childWidgets << btnTheme;
+    themeHBox->addWidget(btnRandTheme, 0);
 
     btnTheme = new QPushButton(this);
+    btnTheme->setWhatsThis(tr("Choose a theme"));
     btnTheme->setFlat(true);
     btnTheme->setIconSize(QSize(30, 30));
     btnTheme->setFixedHeight(30);
+    btnTheme->setMaximumWidth(222);
     connect(btnTheme, SIGNAL(clicked()), this, SLOT(showThemePrompt()));
     m_childWidgets << btnTheme;
-    bottomLeftLayout->addWidget(btnTheme, 0);
+    themeHBox->addWidget(btnTheme, 1);
+
+    bottomLeftLayout->addLayout(themeHBox);
 
     /* Add everything to main layout */
 
@@ -461,6 +480,10 @@
     {
         //changeMapType(MapModel::HandDrawnMap);
     }
+    else if (map == "+forts+")
+    {
+        //nuffin
+    }
     else if (m_staticMapModel->mapExists(map))
     {
         changeMapType(MapModel::StaticMap, m_staticMapModel->index(m_staticMapModel->findMap(map), 0));
@@ -495,18 +518,34 @@
     if (!m_master) return;
 
     setRandomSeed();
+
+    QSortFilterProxyModel * mmodel = NULL;
+
     switch(m_mapInfo.type)
     {
         case MapModel::GeneratedMap:
         case MapModel::GeneratedMaze:
         case MapModel::GeneratedPerlin:
+        case MapModel::FortsMap:
             setRandomTheme();
             break;
         case MapModel::MissionMap:
-            missionMapChanged(m_missionMapModel->index(rand() % m_missionMapModel->rowCount(), 0));
+            if (m_withoutDLC)
+            {
+                mmodel = m_missionMapModel->withoutDLC();
+                missionMapChanged(mmodel->mapToSource(mmodel->index(rand() % mmodel->rowCount(),0)));
+            }
+            else
+                missionMapChanged(m_missionMapModel->index(rand() % m_missionMapModel->rowCount(),0));
             break;
         case MapModel::StaticMap:
-            staticMapChanged(m_staticMapModel->index(rand() % m_staticMapModel->rowCount(), 0));
+            if (m_withoutDLC)
+            {
+                mmodel = m_staticMapModel->withoutDLC();
+                staticMapChanged(mmodel->mapToSource(mmodel->index(rand() % mmodel->rowCount(),0)));
+            }
+            else
+                staticMapChanged(m_staticMapModel->index(rand() % m_staticMapModel->rowCount(),0));
             break;
         default:
             break;
@@ -519,11 +558,23 @@
     emit seedChanged(m_seed);
 }
 
+void HWMapContainer::setRandomWithoutDLC(bool withoutDLC)
+{
+    m_withoutDLC = withoutDLC;
+}
+
 void HWMapContainer::setRandomTheme()
 {
-    if(!m_themeModel->rowCount()) return;
-    quint32 themeNum = rand() % m_themeModel->rowCount();
-    updateTheme(m_themeModel->index(themeNum));
+    QAbstractItemModel * tmodel;
+
+    if (m_withoutDLC)
+        tmodel = m_themeModel->withoutDLC();
+    else
+        tmodel = m_themeModel;
+
+    if(!tmodel->rowCount()) return;
+    quint32 themeNum = rand() % tmodel->rowCount();
+    updateTheme(tmodel->index(themeNum,0));
     emit themeChanged(m_theme);
 }
 
@@ -588,6 +639,10 @@
                 m_mapInfo.type = MapModel::HandDrawnMap;
                 f = true;
                 break;
+            case MAPGEN_FORTS:
+                m_mapInfo.type = MapModel::FortsMap;
+                f = true;
+                break;
             case MAPGEN_MAP:
                 switch (m_mapInfo.type)
                 {
@@ -595,6 +650,7 @@
                     case MapModel::GeneratedMaze:
                     case MapModel::GeneratedPerlin:
                     case MapModel::HandDrawnMap:
+                    case MapModel::FortsMap:
                         m_mapInfo.type = MapModel::Invalid;
                     default:
                         break;
@@ -679,6 +735,7 @@
         case MapModel::GeneratedMaze:
         case MapModel::GeneratedPerlin:
         case MapModel::HandDrawnMap:
+        case MapModel::FortsMap:
             askForGeneratedPreview();
             break;
         default:
@@ -740,6 +797,44 @@
     changeMapType((MapModel::MapType)cType->itemData(index).toInt());
 }
 
+void HWMapContainer::updateHelpTexts(MapModel::MapType type)
+{
+    QString randomAll = tr("Randomize the map, theme and seed");
+    QString randomNoMap = tr("Randomize the theme and seed");
+    QString randomSeed = tr("Randomize the seed");
+    QString randomAllPrev = tr("Click to randomize the map, theme and seed");
+    QString randomNoMapPrev = tr("Click to randomize the theme and seed");
+    QString mfsComplex = QString(tr("Adjust the complexity of the generated map"));
+    QString mfsFortsDistance = QString(tr("Adjust the distance between forts"));
+    switch (type)
+    {
+        case MapModel::GeneratedMap:
+        case MapModel::GeneratedPerlin:
+        case MapModel::GeneratedMaze:
+            mapPreview->setWhatsThis(randomAllPrev);
+            mapFeatureSize->setWhatsThis(mfsComplex);
+            btnRandomize->setWhatsThis(randomAll);
+            break;
+        case MapModel::MissionMap:
+        case MapModel::StaticMap:
+            mapPreview->setWhatsThis(randomAllPrev);
+            btnRandomize->setWhatsThis(randomAll);
+            break;
+        case MapModel::HandDrawnMap:
+            mapPreview->setWhatsThis(tr("Click to edit"));
+            btnRandomize->setWhatsThis(randomSeed);
+            break;
+        case MapModel::FortsMap:
+            mapPreview->setWhatsThis(randomNoMapPrev);
+            mapFeatureSize->setWhatsThis(mfsFortsDistance);
+            btnRandomize->setWhatsThis(randomNoMap);
+            break;
+        default:
+            break;
+    }
+}
+ 
+
 void HWMapContainer::changeMapType(MapModel::MapType type, const QModelIndex & newMap)
 {
     staticMapList->hide();
@@ -804,6 +899,11 @@
             staticMapList->show();
             emit mapChanged(m_curMap);
             break;
+        case MapModel::FortsMap:
+            mapgen = MAPGEN_FORTS;
+            setMapInfo(MapModel::MapInfoForts);
+            lblMapList->hide();
+            break;
         default:
             break;
     }
@@ -811,6 +911,9 @@
     // Update theme button size
     updateThemeButtonSize();
 
+    // Update “What's This?” help texts
+    updateHelpTexts(type);
+
     // Update cType combobox
     for (int i = 0; i < cType->count(); i++)
     {
@@ -829,6 +932,7 @@
 void HWMapContainer::intSetFeatureSize(int val)
 {
     mapFeatureSize->setValue(val);    
+    updateHelpTexts((MapModel::MapType)cType->itemData(cType->currentIndex()).toInt());
     emit mapFeatureSizeChanged(val);
 }
 void HWMapContainer::setFeatureSize(int val)
@@ -850,12 +954,16 @@
     {
         btnTheme->setIconSize(QSize(30, 30));
         btnTheme->setFixedHeight(30);
+        btnRandTheme->setFixedHeight(30);
+        btnRandTheme->setIconSize(QSize(24, 24));
     }
     else
     {
         QSize iconSize = btnTheme->icon().actualSize(QSize(65535, 65535));
+        btnRandTheme->setFixedHeight(64);
         btnTheme->setFixedHeight(64);
         btnTheme->setIconSize(iconSize);
+        btnRandTheme->setIconSize(QSize(32, 32));
     }
 
     repaint();
--- a/QTfrontend/ui/widget/mapContainer.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/mapContainer.h	Tue May 17 23:29:49 2016 +0300
@@ -85,6 +85,7 @@
         void updateModelViews();
         void onPreviewMapDestroyed(QObject * map);
         void setMaster(bool master);
+        void setRandomWithoutDLC(bool withoutDLC);
 
     signals:
         void seedChanged(const QString & seed);
@@ -154,6 +155,7 @@
         QPushButton * btnLoadMap;
         QPushButton * btnEditMap;
         QPushButton * btnRandomize;
+        QPushButton * btnRandTheme;
         QString selectedTheme;
         QPushButton * btnSeed;
         bool m_master;
@@ -161,6 +163,7 @@
         bool m_previewEnabled;
         bool m_missionsViewSetup;
         bool m_staticViewSetup;
+        bool m_withoutDLC;
 
         void intSetSeed(const QString & seed);
         void intSetMap(const QString & map);
@@ -172,6 +175,7 @@
         void mapChanged(const QModelIndex & map, int type, const QModelIndex & old = QModelIndex());
         void setMapInfo(MapModel::MapInfo mapInfo);
         void changeMapType(MapModel::MapType type, const QModelIndex & newMap = QModelIndex());
+        void updateHelpTexts(MapModel::MapType type);
         void updatePreview();
         void updateThemeButtonSize();
         void setupMissionMapsView();
--- a/QTfrontend/ui/widget/selectWeapon.cpp	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/ui/widget/selectWeapon.cpp	Tue May 17 23:29:49 2016 +0300
@@ -286,12 +286,12 @@
 
 void SelWeaponWidget::newWeaponsName()
 {
-    QString newName = tr("new");
+    QString newName = tr("New");
     if(wconf->contains(newName))
     {
         //name already used -> look for an appropriate name:
         int i=2;
-        while(wconf->contains(newName = tr("new")+QString::number(i++))) ;
+        while(wconf->contains(newName = tr("New (%1)").arg(i++))) ;
     }
     setWeaponsName(newName);
 }
@@ -308,7 +308,7 @@
     }
     else
     {
-        setWeapons(*cDefaultAmmoStore);
+        setWeapons(*cEmptyAmmoStore);
     }
 }
 
@@ -322,12 +322,12 @@
     if(wconf->contains(curWeaponsName))
     {
         QString ammo = getWeaponsString(curWeaponsName);
-        QString newName = tr("copy of %1").arg(curWeaponsName);
+        QString newName = tr("Copy of %1").arg(curWeaponsName);
         if(wconf->contains(newName))
         {
             //name already used -> look for an appropriate name:
             int i=2;
-            while(wconf->contains(newName = tr("copy of %1").arg(curWeaponsName+QString::number(i++))));
+            while(wconf->contains(newName = tr("Copy of %1 (%2)").arg(curWeaponsName, i++)));
         }
         setWeaponsName(newName);
         setWeapons(ammo);
--- a/QTfrontend/weapons.h	Tue May 17 23:18:08 2016 +0300
+++ b/QTfrontend/weapons.h	Tue May 17 23:29:49 2016 +0300
@@ -16,6 +16,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#define AMMOLINE_EMPTY_QT       "000000900000000000000000000000000000000000000000000000000"
+#define AMMOLINE_EMPTY_PROB     "000000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_EMPTY_DELAY    "000000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_EMPTY_CRATE    "131111031211111112311411111111111111121111111111111111111"
 
 /*
  AmmoType lookup table (use monospace font / cursor movements)
--- a/cmake_modules/Platform/Emscripten.cmake	Tue May 17 23:18:08 2016 +0300
+++ b/cmake_modules/Platform/Emscripten.cmake	Tue May 17 23:29:49 2016 +0300
@@ -58,7 +58,7 @@
 
 # Abort if not found.
 if("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "")
-    message(FATAL_ERROR "Could not locate the Emscripten compiler toolchain directory! Either set the EMSCRIPTEN environment variable, or pass -DEMSCRIPTEN_ROOT_PATH=xxx to CMake to explicitly specify the location of the compiler! This usually matches EMSCRIPTEN_ROOT from your ~/.emscripten file.")
+    message(FATAL_ERROR "Could not locate the Emscripten compiler toolchain directory! Set the EMSCRIPTEN environment variable to explicitly specify the location of the compiler! This usually matches EMSCRIPTEN_ROOT from your ~/.emscripten file.")
 endif()
 
 # Normalize, convert Windows backslashes to forward slashes or CMake will crash.
--- a/hedgewars/ArgParsers.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/ArgParsers.pas	Tue May 17 23:29:49 2016 +0300
@@ -22,6 +22,7 @@
 interface
 
 procedure GetParams;
+
 {$IFNDEF BSD}
 var operatingsystem_parameter_argc: NativeInt; external;
     operatingsystem_parameter_argv: pointer; external;
--- a/hedgewars/LuaPas.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/LuaPas.pas	Tue May 17 23:29:49 2016 +0300
@@ -805,7 +805,7 @@
 implementation
 
 uses
-  SysUtils;
+  uUtils;
 
 (*****************************************************************************)
 (*                            luaconfig.h                                    *)
--- a/hedgewars/avwrapper/avwrapper.c	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/avwrapper/avwrapper.c	Tue May 17 23:29:49 2016 +0300
@@ -447,11 +447,11 @@
 
             if (!(x & 1) && !(y & 1)) {
                 int r = (buf[x * 4 + 0]          + buf[(x + 1) * 4 + 0] +
-                         buf[x * 4 + 0 + stride] + buf[(x + 1) * 4 + 0 + stride]) / 4;
+                         buf[x * 4 + 0 - stride] + buf[(x + 1) * 4 + 0 - stride]) / 4;
                 int g = (buf[x * 4 + 1]          + buf[(x + 1) * 4 + 1] +
-                         buf[x * 4 + 1 + stride] + buf[(x + 1) * 4 + 1 + stride]) / 4;
+                         buf[x * 4 + 1 - stride] + buf[(x + 1) * 4 + 1 - stride]) / 4;
                 int b = (buf[x * 4 + 2]          + buf[(x + 1) * 4 + 2] +
-                         buf[x * 4 + 2 + stride] + buf[(x + 1) * 4 + 2 + stride]) / 4;
+                         buf[x * 4 + 2 - stride] + buf[(x + 1) * 4 + 2 - stride]) / 4;
 
                 int cr = (int)(-0.14713f * r - 0.28886f * g + 0.436f   * b);
                 int cb = (int)( 0.615f   * r - 0.51499f * g - 0.10001f * b);
--- a/hedgewars/hwengine.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/hwengine.pas	Tue May 17 23:29:49 2016 +0300
@@ -42,6 +42,22 @@
 implementation
 uses uFLUICallback, uFLTypes;
 
+// TODO localization support
+procedure ShowCredits();
+var themeCredits, mapCredits: shortstring;
+begin
+    if Length(cMapName) > 0 then
+        begin
+        mapCredits:= read1stLn(cPathz[ptMapCurrent] + '/credits.txt');
+        if Length(mapCredits) > 0 then
+            AddChatString(char(#11) + '© Map: ' + mapCredits);
+        end;
+
+        themeCredits:= read1stLn(cPathz[ptCurrTheme] + '/credits.txt');
+        if Length(themeCredits) > 0 then
+            AddChatString(char(#12) + '© Theme: ' + themeCredits);
+end;
+
 ///////////////////////////////////////////////////////////////////////////////
 function DoTimer(Lag: LongInt): boolean;
 var s: shortstring;
@@ -86,6 +102,7 @@
                 with TeamsArray[t]^ do
                     MaxTeamHealth:= TeamHealth;
             RecountAllTeamsHealth;
+            if not cOnlyStats then ShowCredits;
             GameState:= gsGame;
             end;
         gsConfirm, gsGame, gsChat:
--- a/hedgewars/pas2cRedo.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/pas2cRedo.pas	Tue May 17 23:29:49 2016 +0300
@@ -71,7 +71,7 @@
     trunc, round, ceil : function : integer;
     abs, sqr : function : integer;
 
-    StrPas, FormatDateTime, copy, str, PosS, trim, LowerCase : function : shortstring;
+    StrPas, FormatDateTime, copy, str, PosS, LowerCase : function : shortstring;
     pos : function : integer;
     StrToInt : function : integer;
     SetLength, SetLengthA, val, StrDispose, StrCopy : procedure;
@@ -84,8 +84,6 @@
      min, max:function:integer;
     assign, rewrite, rewrite_2, reset, reset_2, flush, BlockWrite, BlockRead, close : procedure;
     FileExists, DirectoryExists, eof : function : boolean;
-    ExtractFileDir : function : string;
-    ExtractFileName : function : string;
 
     ParamCount : function : integer;
     ParamStr : function : string;
--- a/hedgewars/pas2cSystem.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/pas2cSystem.pas	Tue May 17 23:29:49 2016 +0300
@@ -14,6 +14,7 @@
     Int64 = integer;
     QWord = uinteger;
     GLint = integer;
+    GLsizei = integer;
     GLuint = integer;
     GLenum = integer;
 
--- a/hedgewars/uAI.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uAI.pas	Tue May 17 23:29:49 2016 +0300
@@ -30,7 +30,7 @@
 
 implementation
 uses uConsts, SDLh, uAIMisc, uAIAmmoTests, uAIActions,
-    uAmmos, SysUtils, uTypes,
+    uAmmos, uTypes,
     uVariables, uCommands, uUtils, uDebug, uAILandMarks;
 
 var BestActions: TActions;
--- a/hedgewars/uChat.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uChat.pas	Tue May 17 23:29:49 2016 +0300
@@ -70,7 +70,7 @@
 
 
 const
-    colors: array[#0..#9] of TSDL_Color = (
+    colors: array[#0..#12] of TSDL_Color = (
             (r:$FF; g:$FF; b:$FF; a:$FF), // #0 unused, feel free to take it for anything
             (r:$FF; g:$FF; b:$FF; a:$FF), // #1 chat message [White]
             (r:$FF; g:$00; b:$FF; a:$FF), // #2 action message [Purple]
@@ -80,7 +80,10 @@
             (r:$00; g:$FF; b:$FF; a:$FF), // #6 input line [Light Blue]
             (r:$FF; g:$80; b:$80; a:$FF), // #7 team gone [Light Red]
             (r:$FF; g:$D0; b:$80; a:$FF), // #8 team back [Light Orange]
-            (r:$DF; g:$DF; b:$DF; a:$FF)  // #9 hog speech [Light Gray]
+            (r:$DF; g:$DF; b:$DF; a:$FF), // #9 hog speech [Light Gray]
+            (r:$FF; g:$00; b:$FF; a:$AF), // #10 music credits [Purple]
+            (r:$00; g:$FF; b:$FF; a:$AF), // #11 map credits [Light Blue]
+            (r:$FF; g:$D0; b:$80; a:$AF)  // #12 theme credits [Light Orange]
             );
     ChatCommandz: array [TChatCmd] of record
             ChatCmd: string[31];
@@ -205,10 +208,13 @@
 end;
 
 const ClDisplayDuration = 12500;
+      CreditsDisplayDur =  2500;
 
 procedure SetLine(var cl: TChatLine; str: shortstring; isInput: boolean);
 var color  : TSDL_Color;
+    credits: boolean;
 begin
+credits:= false;
 if isInput then
     begin
     cl.s:= str;
@@ -220,6 +226,7 @@
     if str[1] <= High(colors) then
         begin
         color:= colors[str[1]];
+        credits:= (str[1] >= #10) and (str[1] <= #12);
         delete(str, 1, 1);
         end
     // fallback if invalid color
@@ -234,7 +241,10 @@
 // set texture, note: variables cl.s and str will be different here if isInput
 RenderChatLineTex(cl, str);
 
-cl.Time:= RealTicks + ClDisplayDuration;
+if credits then
+    cl.Time:= RealTicks + CreditsDisplayDur
+else
+    cl.Time:= RealTicks + ClDisplayDuration;
 end;
 
 // For uStore texture recreation
--- a/hedgewars/uGears.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGears.pas	Tue May 17 23:29:49 2016 +0300
@@ -738,20 +738,101 @@
         end
 end;
 
+// sort clans horizontally (bubble-sort, because why not)
+procedure SortHHsByClan();
+var n, newn, i, j, k, p: LongInt;
+    ar, clar: array[0..Pred(cMaxHHs)] of PHedgehog;
+    Count, clCount: Longword;
+    tmpX, tmpY: hwFloat;
+    hh1, hh2: PHedgehog;
+begin
+Count:= 0;
+// add hedgehogs to the array in clan order
+for p:= 0 to (ClansCount - 1) do
+    with SpawnClansArray[p]^ do
+        begin
+        // count hogs in this clan
+        clCount:= 0;
+        for j:= 0 to Pred(TeamsNumber) do
+            with Teams[j]^ do
+                for i:= 0 to cMaxHHIndex do
+                    if Hedgehogs[i].Gear <> nil then
+                        begin
+                        clar[clCount]:= @Hedgehogs[i];
+                        inc(clCount);
+                        end;
+
+        // shuffle all hogs of this clan
+        for i:= 0 to clCount - 1 do
+            begin
+            j:= GetRandom(clCount);
+            k:= GetRandom(clCount);
+            if clar[j] <> clar[k] then
+                begin
+                hh1:= clar[j];
+                clar[j]:= clar[k];
+                clar[k]:= hh1;
+                end;
+            end;
+
+        // add clan's hog to sorting array
+        for i:= 0 to clCount - 1 do
+            begin
+            ar[Count]:= clar[i];
+            inc(Count);
+            end;
+        end;
+
+
+// bubble-sort hog array
+n:= Count - 1;
+
+repeat
+    newn:= 0;
+    for i:= 1 to n do
+        begin
+        hh1:= ar[i-1];
+        hh2:= ar[i];
+        if hwRound(hh1^.Gear^.X) > hwRound(hh2^.Gear^.X) then
+            begin
+            tmpX:= hh1^.Gear^.X;
+            tmpY:= hh1^.Gear^.Y;
+            hh1^.Gear^.X:= hh2^.Gear^.X;
+            hh1^.Gear^.Y:= hh2^.Gear^.Y;
+            hh2^.Gear^.X:= tmpX;
+            hh2^.Gear^.Y:= tmpY;
+            newn:= i;
+            end;
+        end;
+    n:= newn;
+until n = 0;
+
+end;
+
 procedure AssignHHCoords;
 var i, t, p, j: LongInt;
     ar: array[0..Pred(cMaxHHs)] of PHedgehog;
     Count: Longword;
+    divide, sectionDivide: boolean;
 begin
 if (GameFlags and gfPlaceHog) <> 0 then
     PlacingHogs:= true;
-if (ClansCount = 2) and ((GameFlags and gfDivideTeams) <> 0) then
+
+divide:= ((GameFlags and gfDivideTeams) <> 0);
+sectionDivide:= divide and ((GameFlags and gfForts) <> 0);
+
+// TODO: there might be a smarter way to decide if dividing clans into equal-width map sections makes sense
+// e.g. by checking if there is enough spawn area in each section
+if divide and (not sectionDivide) then
+    sectionDivide:= (ClansCount = 2);
+
+// in section-divide mode, divide the map into equal-width sections and put each clan in one of them
+if sectionDivide then
     begin
-    t:= 0;
-    if checkFails(ClansCount = 2, 'More or less than 2 clans on map in divided teams mode!', true) then exit;
-    for p:= 0 to 1 do
+    t:= leftX;
+    for p:= 0 to (ClansCount - 1) do
         begin
-        with ClansArray[p]^ do
+        with SpawnClansArray[p]^ do
             for j:= 0 to Pred(TeamsNumber) do
                 with Teams[j]^ do
                     for i:= 0 to cMaxHHIndex do
@@ -761,14 +842,18 @@
                                 if PlacingHogs then
                                     Unplaced:= true
                                 else
-                                    FindPlace(Gear, false, t, t + LAND_WIDTH div 2, true);// could make Gear == nil;
+                                    FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil;
                                 if Gear <> nil then
                                     begin
                                     Gear^.Pos:= GetRandom(49);
-                                    Gear^.dX.isNegative:= p = 1;
+                                    // unless the world is wrapping, make outter teams face to map center
+                                    if (WorldEdge <> weWrap) and ((p = 0) or (p = ClansCount - 1)) then
+                                        Gear^.dX.isNegative:= (p <> 0)
+                                    else
+                                        Gear^.dX.isNegative:= (GetRandom(2) = 1);
                                     end
                                 end;
-        t:= LAND_WIDTH div 2
+        inc(t, playWidth div ClansCount);
         end
     end 
 else // mix hedgehogs
@@ -791,10 +876,10 @@
         if PlacingHogs then
             ar[i]^.Unplaced:= true
         else
-            FindPlace(ar[i]^.Gear, false, 0, LAND_WIDTH, true);
+            FindPlace(ar[i]^.Gear, false, leftX, rightX, true);
         if ar[i]^.Gear <> nil then
             begin
-            ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > LAND_WIDTH div 2;
+            ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > leftX + playWidth div 2;
             ar[i]^.Gear^.Pos:= GetRandom(19)
             end;
         ar[i]:= ar[Count - 1];
@@ -822,8 +907,13 @@
                                      sprTargetBee, 0, lfBasic, $FFFFFFFF, false, false, false);
                     Gear^.Y:= int2hwFloat(hwRound(Gear^.Y) - 16 - Gear^.Radius);
                     Gear^.State:= Gear^.State and (not gsttmpFlag);
-                    AddFileLog('Carved a hole for hog at coordinates (' + inttostr(hwRound(Gear^.X)) + ',' + inttostr(hwRound(Gear^.Y)) + ')')
-                    end
+                    AddFileLog('Placed flower for hog at coordinates (' + inttostr(hwRound(Gear^.X)) + ',' + inttostr(hwRound(Gear^.Y)) + ')')
+                    end;
+
+
+// divided teams: sort the hedgehogs from left to right by clan and shuffle clan members
+if divide and (not sectionDivide) then
+    SortHHsByClan();
 end;
 
 
--- a/hedgewars/uGearsHandlersMess.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGearsHandlersMess.pas	Tue May 17 23:29:49 2016 +0300
@@ -6244,8 +6244,6 @@
         if TestCollisionXwithGear(Gear, 1)  <> 0 then ox:=  1;
         if TestCollisionXwithGear(Gear, -1) <> 0 then ox:= -1;
         if TestCollisionYwithGear(Gear, 1)  <> 0 then oy:=  1;
-        if Gear^.Health > 0 then
-            PlaySound(sndRopeAttach);
 
         la:= _10000;
         if (ox <> 0) or (oy <> 0) then
@@ -6255,6 +6253,9 @@
             // debug for when we couldn't get an angle
             //AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeWhite);
 *)
+        if Gear^.Health > 0 then
+            PlaySound(Gear^.ImpactSound);
+
             Gear^.DirAngle:= DxDy2Angle(Gear^.dX, Gear^.dY) + (random(30)-15);
             if (Gear^.dX.isNegative and Gear^.dY.isNegative) or
              ((not Gear^.dX.isNegative) and (not Gear^.dY.isNegative)) then Gear^.DirAngle:= Gear^.DirAngle-90;
--- a/hedgewars/uGearsHedgehog.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGearsHedgehog.pas	Tue May 17 23:29:49 2016 +0300
@@ -386,7 +386,7 @@
                                  end;
                  amInvulnerable: Effects[heInvulnerable]:= 1;
                     amExtraTime: begin
-                                 PlaySound(sndSwitchHog);
+                                 PlaySound(sndExtraTime);
                                  TurnTimeLeft:= TurnTimeLeft + 30000
                                  end;
                    amLaserSight: cLaserSighting:= true;
@@ -732,8 +732,7 @@
                     PlaySound(sndShotgunReload);
                     inc(HH^.Health, Gear^.Health);
                     HH^.Hedgehog^.Effects[hePoisoned] := 0;
-                    str(Gear^.Health, s);
-                    s:= '+' + s;
+                    s:= '+' + IntToStr(Gear^.Health);
                     AddCaption(ansistring(s), HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
                     RenderHealth(HH^.Hedgehog^);
                     RecountTeamHealth(HH^.Hedgehog^.Team);
--- a/hedgewars/uGearsList.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGearsList.pas	Tue May 17 23:29:49 2016 +0300
@@ -427,7 +427,7 @@
                     end
                 end;
      gtAirMine: begin
-                gear^.ImpactSound:= sndDenied;
+                gear^.ImpactSound:= sndAirMineImpact;
                 gear^.nImpactSounds:= 1;
                 gear^.Health:= 30;
                 gear^.State:= gear^.State or gstMoving or gstNoGravity or gstSubmersible;
@@ -459,6 +459,7 @@
                 if gear^.Timer = 0 then gear^.Timer:= 500;
                 end;
        gtKnife: begin
+                gear^.ImpactSound:= sndKnifeImpact;
                 gear^.AdvBounce:= 1;
                 gear^.Elasticity:= _0_8;
                 gear^.Friction:= _0_8;
--- a/hedgewars/uGearsRender.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGearsRender.pas	Tue May 17 23:29:49 2016 +0300
@@ -1270,7 +1270,7 @@
                     end;
         gtDynamite: begin
                     DrawSprite(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1);
-                    if (random(3) = 0) then
+                    if (random(3) = 0) and ((Gear^.State and gstDrowning) = 0) then
                         begin
                         vg:= AddVisualGear(hwRound(Gear^.X)+12-(Gear^.Tag shr 1), hwRound(Gear^.Y)-16, vgtStraightShot);
                         if vg <> nil then
--- a/hedgewars/uGearsUtils.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uGearsUtils.pas	Tue May 17 23:29:49 2016 +0300
@@ -274,8 +274,7 @@
                     // was considering pulsing on attack, Tiy thinks it should be permanent while in play
                     //CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstVampiric;
                     inc(CurrentHedgehog^.Gear^.Health,vampDmg);
-                    str(vampDmg, s);
-                    s:= '+' + s;
+                    s:= '+' + IntToStr(vampDmg);
                     AddCaption(ansistring(s), CurrentHedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
                     RenderHealth(CurrentHedgehog^);
                     RecountTeamHealth(CurrentHedgehog^.Team);
@@ -939,7 +938,7 @@
             while (cnt < 1000) do
                 begin
                 inc(cnt);
-                x:= leftX+GetRandom(rightX-leftX-32)+16;
+                x:= left+GetRandom(right-left-2*cHHRadius)+cHHRadius;
                 y:= topY+GetRandom(LAND_HEIGHT-topY-64)+48;
                 if NoGearsToAvoid(x, y, 100 div max(1,cnt div 100), 100 div max(1,cnt div 100)) then
                     begin
--- a/hedgewars/uLand.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uLand.pas	Tue May 17 23:29:49 2016 +0300
@@ -30,7 +30,7 @@
 procedure GenPreviewAlpha(out Preview: TPreviewAlpha);
 
 implementation
-uses uConsole, uStore, uRandom, uLandObjects, uIO, uLandTexture, SysUtils,
+uses uConsole, uStore, uRandom, uLandObjects, uIO, uLandTexture,
      uVariables, uUtils, uCommands, adler32, uDebug, uLandPainted, uTextures,
      uLandGenMaze, uPhysFSLayer, uScript, uLandGenPerlin,
      uLandGenTemplateBased, uLandUtils, uRenderUtils;
@@ -348,35 +348,131 @@
     AddProgress();
 end;
 
-procedure MakeFortsMap;
-var tmpsurf: PSDL_Surface;
+procedure MakeFortsPreview;
+var gap: LongInt;
+    h1, h2, w1, w2, x, y, lastX, wbm, bmref: LongWord;
+const fortHeight = 960;
+      fortWidth  = 704;
+      bmHeight = 53;
+      bmWidth = 64;
 begin
 ResizeLand(4096,2048);
-MaxHedgehogs:= 32;
+
+lastX:= LAND_WIDTH-1;
+
+gap:= (1024 - fortWidth) + 60 + 20 * cFeatureSize;
+
+h2:= LAND_HEIGHT-1;
+h1:= h2 - fortHeight;
+w2:= (LAND_WIDTH - gap) div 2;
+w1:= w2 - fortWidth;
+wbm:= h1 + bmHeight;
+
+// generate 2 forts in center
+for y:= h1 to h2 do
+    for x:= w1 to w2 do
+        begin
+        if x mod 4 <> 0 then
+            begin
+            if (y <= wbm) and ((x - w1) mod (bmWidth * 2) >= bmWidth) then
+                continue;
+            Land[y,x]:= lfBasic;
+            Land[y,lastX-x]:= lfBasic;
+            end;
+        end;
+
+w2:= w1 - gap;
+w1:= max(0, w2 - fortWidth);
+wbm:= h1 + bmHeight;
+bmref:= w2 + bmWidth;
+
+for y:= h1 to h2 do
+    for x:= w1 to w2 do
+        begin
+        if ((y - x) mod 2) = 0 then
+            begin
+            // align battlement on inner edge, because real outer edge could be offscreen
+            if (y <= wbm) and ((LAND_WIDTH + x - bmref) mod (bmWidth * 2) >= bmWidth) then
+                continue;
+            Land[y,x]:= lfBasic;
+            Land[y,lastX-x]:= lfBasic;
+            end;
+        end;
+end;
+
+procedure MakeFortsMap;
+var tmpsurf: PSDL_Surface;
+    sectionWidth, i, t, p: integer;
+    mirror: boolean;
+    pc: PClan;
+begin
+
+// make the gaps between forts adjustable if fort map was selected
+if cMapGen = mgForts then
+    sectionWidth:= 1024 + 60 + 20 * cFeatureSize
+else
+    sectionWidth:= 1024 * 300;
+
+// mix up spawn/fort order of clans
+for i:= 0 to ClansCount - 1 do
+    begin
+    t:= GetRandom(ClansCount);
+    p:= GetRandom(ClansCount);
+    if t <> p then
+        begin
+        pc:= SpawnClansArray[t];
+        SpawnClansArray[t]:= SpawnClansArray[p];
+        SpawnClansArray[p]:= pc;
+        end;
+    end;
+
+// figure out how much space we need
+playWidth:= sectionWidth * ClansCount;
+
+// note: LAND_WIDTH might be bigger than specified below (rounded to next power of 2)
+ResizeLand(playWidth, 2048);
+
 // For now, defining a fort is playable area as 3072x1200 - there are no tall forts.  The extra height is to avoid triggering border with current code, also if user turns on a border, it will give a bit more maneuvering room.
 playHeight:= 1200;
-playWidth:= 2560;
-leftX:= (LAND_WIDTH - playWidth) div 2;
+
+// center playable area in land array
+leftX:= ((LAND_WIDTH - playWidth) div 2);
 rightX:= ((playWidth + (LAND_WIDTH - playWidth) div 2) - 1);
 topY:= LAND_HEIGHT - playHeight;
 
 WriteLnToConsole('Generating forts land...');
 
-tmpsurf:= LoadDataImage(ptForts, ClansArray[0]^.Teams[0]^.FortName + 'L', ifAlpha or ifCritical or ifTransparent or ifIgnoreCaps);
-BlitImageAndGenerateCollisionInfo(leftX+150, LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf);
-SDL_FreeSurface(tmpsurf);
+for i := 0 to ClansCount - 1 do
+    begin
+
+    // face in random direction
+    mirror:= (GetRandom(2) = 0);
+    // make first/last fort face inwards
+    if (WorldEdge <> weWrap) or (ClansCount = 2) then
+        mirror:= (i <> 0) and (mirror or (i = ClansCount - 1));
 
-// not critical because if no R we can fallback to mirrored L
-tmpsurf:= LoadDataImage(ptForts, ClansArray[1]^.Teams[0]^.FortName + 'R', ifAlpha or ifTransparent or ifIgnoreCaps);
-// fallback
-if tmpsurf = nil then
-    begin
-    tmpsurf:= LoadDataImage(ptForts, ClansArray[1]^.Teams[0]^.FortName + 'L', ifAlpha or ifCritical or ifTransparent or ifIgnoreCaps);
-    BlitImageAndGenerateCollisionInfo(rightX - 150 - tmpsurf^.w, LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf, 0, true);
-    end
-else
-    BlitImageAndGenerateCollisionInfo(rightX - 150 - tmpsurf^.w, LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf);
-SDL_FreeSurface(tmpsurf);
+    if mirror then
+        begin
+        // not critical because if no R we can fallback to mirrored L
+        tmpsurf:= LoadDataImage(ptForts, SpawnClansArray[i]^.Teams[0]^.FortName + 'R', ifAlpha or ifTransparent or ifIgnoreCaps);
+        // fallback
+        if tmpsurf = nil then
+            begin
+            tmpsurf:= LoadDataImage(ptForts, SpawnClansArray[i]^.Teams[0]^.FortName + 'L', ifAlpha or ifCritical or ifTransparent or ifIgnoreCaps);
+            BlitImageAndGenerateCollisionInfo(leftX + sectionWidth * i + ((sectionWidth - tmpsurf^.w) div 2), LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf, 0, true);
+            end
+        else
+            BlitImageAndGenerateCollisionInfo(leftX + sectionWidth * i + ((sectionWidth - tmpsurf^.w) div 2), LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf);
+        SDL_FreeSurface(tmpsurf);
+        end
+    else
+        begin
+        tmpsurf:= LoadDataImage(ptForts, SpawnClansArray[i]^.Teams[0]^.FortName + 'L', ifAlpha or ifCritical or ifTransparent or ifIgnoreCaps);
+        BlitImageAndGenerateCollisionInfo(leftX + sectionWidth * i + ((sectionWidth - tmpsurf^.w) div 2), LAND_HEIGHT - tmpsurf^.h, tmpsurf^.w, tmpsurf);
+        SDL_FreeSurface(tmpsurf);
+        end;
+
+    end;
 end;
 
 procedure LoadMapConfig;
@@ -555,10 +651,12 @@
                 mgMaze  : begin ResizeLand(4096,2048); GenMaze; end;
                 mgPerlin: begin ResizeLand(4096,2048); GenPerlin; end;
                 mgDrawn : GenDrawnMap;
+                mgForts : begin GameFlags:= (GameFlags or gfForts or gfDivideTeams); MakeFortsMap(); end;
             else
                 OutError('Unknown mapgen', true);
             end;
-            GenLandSurface
+            if cMapGen <> mgForts then
+                GenLandSurface
             end
     else
         MakeFortsMap;
@@ -698,6 +796,7 @@
         mgMaze: begin ResizeLand(4096,2048); GenMaze; end;
         mgPerlin: begin ResizeLand(4096,2048); GenPerlin; end;
         mgDrawn: GenDrawnMap;
+        mgForts: MakeFortsPreview();
     else
         OutError('Unknown mapgen', true);
     end;
@@ -746,6 +845,7 @@
         mgMaze: begin ResizeLand(4096,2048); GenMaze; end;
         mgPerlin: begin ResizeLand(4096,2048); GenPerlin; end;
         mgDrawn: GenDrawnMap;
+        mgForts: MakeFortsPreview;
     else
         OutError('Unknown mapgen', true);
     end;
--- a/hedgewars/uLandObjects.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uLandObjects.pas	Tue May 17 23:29:49 2016 +0300
@@ -34,7 +34,7 @@
 
 implementation
 uses uStore, uConsts, uConsole, uRandom, uSound
-     , uTypes, uVariables, uUtils, uDebug, SysUtils
+     , uTypes, uVariables, uDebug, uUtils
      , uPhysFSLayer;
 
 const MaxRects = 512;
--- a/hedgewars/uLandUtils.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uLandUtils.pas	Tue May 17 23:29:49 2016 +0300
@@ -30,6 +30,7 @@
     if (width div 4096 >= 2) or (height div 2048 >= 2) then cMaxZoomLevel:= cMaxZoomLevel/2;
     cMinMaxZoomLevelDelta:= cMaxZoomLevel - cMinZoomLevel
     end;
+initScreenSpaceVars();
 end;
 
 procedure InitWorldEdges();
--- a/hedgewars/uLocale.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uLocale.pas	Tue May 17 23:29:49 2016 +0300
@@ -30,7 +30,7 @@
 function  GetEventString(e: TEventId): ansistring;
 
 {$IFDEF HWLIBRARY}
-procedure LoadLocaleWrapper(path: pchar; filename: pchar); cdecl; export;
+procedure LoadLocaleWrapper(path: pchar; userpath: pchar; filename: pchar); cdecl; export;
 {$ENDIF}
 
 implementation
@@ -133,22 +133,9 @@
     FormatA:= copy(fmt, 1, i - 1) + arg + FormatA(copy(fmt, i + 2, Length(fmt) - i - 1), arg)
 end;
 
-{$IFDEF HWLIBRARY}
-procedure LoadLocaleWrapper(path: pchar; filename: pchar); cdecl; export;
+procedure LoadLocaleWrapper(path: pchar; userpath: pchar; filename: pchar); cdecl; export;
 begin
-// FIXME
-{    PathPrefix := Strpas(path);
- 
-    uUtils.initModule(false);
-    uVariables.initModule;
-    uPhysFSLayer.initModule;
-} 
     LoadLocale(Strpas(filename));
-{ 
-    uPhysFSLayer.freeModule;
-    uVariables.freeModule;
-    uUtils.freeModule;}
 end;
-{$ENDIF}
 
 end.
--- a/hedgewars/uMatrix.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uMatrix.pas	Tue May 17 23:29:49 2016 +0300
@@ -260,7 +260,7 @@
             write(Result[i, j]);
           writeln;
         end;
-        TryDo(false, 'error in matrix multiplication?!', true);
+        checkFails(false, 'error in matrix multiplication?!', true);
     end;
     {$ENDIF}
 
--- a/hedgewars/uMisc.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uMisc.pas	Tue May 17 23:29:49 2016 +0300
@@ -33,7 +33,7 @@
 function  SDL_RectMake(x, y, width, height: LongInt): TSDL_Rect; inline;
 
 implementation
-uses SysUtils, uVariables, uUtils
+uses uVariables, uUtils
      {$IFDEF PNG_SCREENSHOTS}, PNGh, png {$ENDIF};
 
 type PScreenshot = ^TScreenshot;
--- a/hedgewars/uPhysFSLayer.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uPhysFSLayer.pas	Tue May 17 23:29:49 2016 +0300
@@ -43,7 +43,7 @@
 procedure hedgewarsMountPackage(filename: PChar); cdecl; external PhyslayerLibName;
 
 implementation
-uses uConsts, uUtils, uVariables{$IFNDEF PAS2C}, sysutils{$ELSE}, physfs{$ENDIF};
+uses uConsts, uUtils, uVariables{$IFDEF PAS2C}, physfs{$ENDIF};
 
 function PHYSFSRWOPS_openRead(fname: PChar): PSDL_RWops; cdecl; external PhyslayerLibName;
 function PHYSFSRWOPS_openWrite(fname: PChar): PSDL_RWops; cdecl; external PhyslayerLibName;
@@ -205,7 +205,7 @@
 {$ENDIF}
 begin
     //TODO: http://icculus.org/pipermail/physfs/2011-August/001006.html
-    cPhysfsId:= shortstring(GetCurrentDir()) + {$IFDEF DARWIN}{$IFNDEF IPHONEOS}'/Hedgewars.app/Contents/MacOS/' + {$ENDIF}{$ENDIF} ' hedgewars';
+    cPhysfsId:= {$IFDEF DARWIN}{$IFNDEF IPHONEOS}'/Hedgewars.app/Contents/MacOS/' + {$ENDIF}{$ENDIF} ' hedgewars';
 
     i:= PHYSFS_init(Str2PChar(cPhysfsId));
     //AddFileLog('[PhysFS] init: ' + inttostr(i));
--- a/hedgewars/uRandom.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uRandom.pas	Tue May 17 23:29:49 2016 +0300
@@ -49,16 +49,14 @@
 end;
 
 function GetNext: Longword; inline;
-var s : string;
 begin
-n:= (n + 1) and $3F;
-cirbuf[n]:=
+    n:= (n + 1) and $3F;
+    cirbuf[n]:=
            (cirbuf[(n + 40) and $3F] +           {n - 24 mod 64}
             cirbuf[(n +  9) and $3F])            {n - 55 mod 64}
             and $7FFFFFFF;                       {mod 2^31}
 
-   GetNext:= cirbuf[n];
-   str(GetNext, s);
+    GetNext:= cirbuf[n];
 end;
 
 procedure SetRandomSeed(Seed: shortstring; dropAdditionalPart: boolean);
--- a/hedgewars/uRender.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uRender.pas	Tue May 17 23:29:49 2016 +0300
@@ -103,8 +103,8 @@
 
 
 implementation
-uses {$IFNDEF PAS2C} StrUtils, {$ENDIF}SysUtils, uVariables, uUtils, uConsts
-     {$IFDEF GL2}, uMatrix, uConsole{$ENDIF};
+uses {$IFNDEF PAS2C} StrUtils, {$ENDIF}uVariables, uUtils, uConsts
+     {$IFDEF GL2}, uMatrix, uConsole{$ENDIF}, uPhysFSLayer, uDebug;
 
 {$IFDEF USE_TOUCH_INTERFACE}
 const
@@ -256,33 +256,27 @@
 function CompileShader(shaderFile: string; shaderType: GLenum): GLuint;
 var
     shader: GLuint;
-    f: Textfile;
-    source, line: AnsiString;
+    f: PFSFile;
+    source, line: ansistring;
     sourceA: Pchar;
     lengthA: GLint;
     compileResult: GLint;
     logLength: GLint;
     log: PChar;
 begin
-    Assign(f, PathPrefix + cPathz[ptShaders] + '/' + shaderFile);
-    filemode:= 0; // readonly
-    Reset(f);
-    if IOResult <> 0 then
-    begin
-        AddFileLog('Unable to load ' + shaderFile);
-        halt(HaltStartupError);
-    end;
+    f:= pfsOpenRead(cPathz[ptShaders] + '/' + shaderFile);
+    checkFails(f <> nil, 'Unable to load ' + shaderFile, true);
 
     source:='';
-    while not eof(f) do
+    while not pfsEof(f) do
     begin
-        ReadLn(f, line);
+        pfsReadLnA(f, line);
         source:= source + line + #10;
     end;
 
-    Close(f);
+    pfsClose(f);
 
-    WriteLnToConsole('Compiling shader: ' + PathPrefix + cPathz[ptShaders] + '/' + shaderFile);
+    WriteLnToConsole('Compiling shader: ' + cPathz[ptShaders] + '/' + shaderFile);
 
     sourceA:=PChar(source);
     lengthA:=Length(source);
@@ -468,7 +462,8 @@
         begin
         // print up to 3 extentions per row
         // ExtractWord will return empty string if index out of range
-        AddFileLog(TrimRight(
+        //AddFileLog(TrimRight(
+        AddFileLog(Trim(
             ExtractWord(tmpint, tmpstr, [' ']) + ' ' +
             ExtractWord(tmpint+1, tmpstr, [' ']) + ' ' +
             ExtractWord(tmpint+2, tmpstr, [' '])
@@ -508,8 +503,7 @@
 {$IFDEF GL2}
 
 {$IFDEF PAS2C}
-    err := glewInit();
-    if err <> GLEW_OK then
+    if glewInit() <> GLEW_OK then
         begin
         WriteLnToConsole('Failed to initialize GLEW.');
         halt(HaltStartupError);
--- a/hedgewars/uRenderUtils.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uRenderUtils.pas	Tue May 17 23:29:49 2016 +0300
@@ -39,7 +39,7 @@
 function  RenderSpeechBubbleTex(s: ansistring; SpeechType: Longword; font: THWFont): PTexture;
 
 implementation
-uses uUtils, uVariables, uConsts, uTextures, SysUtils, uDebug;
+uses uVariables, uConsts, uTextures, SysUtils, uUtils, uDebug;
 
 procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean);
 var r: TSDL_Rect;
--- a/hedgewars/uScript.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uScript.pas	Tue May 17 23:29:49 2016 +0300
@@ -75,14 +75,13 @@
     uTypes,
     uVariables,
     uCommands,
-    uUtils,
     uCaptions,
     uDebug,
     uCollisions,
     uRenderUtils,
     uTextures,
     uLandGraphics,
-    SysUtils,
+    uUtils,
     uIO,
     uVisualGearsList,
     uGearsHandlersMess,
@@ -1210,9 +1209,24 @@
 end;
 
 function lc_getclancolor(L : Plua_State) : LongInt; Cdecl;
+var idx: integer;
 begin
-    if CheckLuaParamCount(L, 1, 'GetClanColor', 'clan') then
-        lua_pushinteger(L, ClansArray[lua_tointeger(L, 1)]^.Color shl 8 or $FF)
+    if CheckLuaParamCount(L, 1, 'GetClanColor', 'clanIdx') then
+        begin
+        idx:= lua_tointeger(L, 1);
+        if (not lua_isnumber(L, 1)) then
+            begin
+            LuaError('Argument ''clanIdx'' must be a number!');
+            lua_pushnil(L);
+            end
+        else if (idx < 0) or (idx >= ClansCount) then
+            begin
+            LuaError('Argument ''clanIdx'' out of range! (There are currently ' + IntToStr(ClansCount) + ' clans, so valid range is: 0-' + IntToStr(ClansCount-1) + ')');
+            lua_pushnil(L);
+            end
+        else
+            lua_pushinteger(L, ClansArray[idx]^.Color shl 8 or $FF);
+        end
     else
         lua_pushnil(L); // return value on stack (nil)
     lc_getclancolor:= 1
@@ -2733,7 +2747,7 @@
 ScriptSetInteger('HealthDecrease', cHealthDecrease);
 ScriptSetInteger('GetAwayTime', cGetAwayTime);
 ScriptSetString('Map', cMapName);
-ScriptSetString('Theme', '');
+ScriptSetString('Theme', Theme);
 ScriptSetString('Goals', '');
 
 ScriptCall('onGameInit');
--- a/hedgewars/uSound.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uSound.pas	Tue May 17 23:29:49 2016 +0300
@@ -33,7 +33,7 @@
  *                   The channel id can be used to stop a specific sound loop.
  *)
 interface
-uses SDLh, uConsts, uTypes, SysUtils;
+uses SDLh, uConsts, uTypes;
 
 procedure preInitModule;
 procedure initModule;
@@ -110,7 +110,7 @@
 var Volume: LongInt;
     SoundTimerTicks: Longword;
 implementation
-uses uVariables, uConsole, uCommands, uDebug, uPhysFSLayer;
+uses uVariables, uConsole, uCommands, uChat, uUtils, uDebug, uPhysFSLayer;
 
 const chanTPU = 32;
 var cInitVolume: LongInt;
@@ -252,7 +252,10 @@
             (FileName:               'TARDIS.ogg'; Path: ptSounds),// sndTardis
             (FileName:    'frozen_hog_impact.ogg'; Path: ptSounds),// sndFrozenHogImpact
             (FileName:             'ice_beam.ogg'; Path: ptSounds),// sndIceBeam
-            (FileName:           'hog_freeze.ogg'; Path: ptSounds) // sndHogFreeze
+            (FileName:           'hog_freeze.ogg'; Path: ptSounds),// sndHogFreeze
+            (FileName:       'airmine_impact.ogg'; Path: ptSounds),// sndAirMineImpact
+            (FileName:         'knife_impact.ogg'; Path: ptSounds),// sndKnifeImpact
+            (FileName:            'extratime.ogg'; Path: ptSounds) // sndExtraTime
             );
 
 
@@ -578,6 +581,20 @@
     SDLCheck(Mus <> nil, 'Mix_LoadMUS_RW', false);
     WriteLnToConsole(msgOK);
 
+    // display music credits
+    s:= s + '_credits.txt';
+
+    // if per-file credits not found check general music credits file
+    if pfsExists(s) then
+        s:= read1stLn(s)
+    else if SuddenDeath and (SDMusicFN <> '') then
+        s:= readValueFromINI(SDMusicFN, '/Music/credits.txt')
+    else
+        s:= readValueFromINI(MusicFN, '/Music/credits.txt');
+
+    if Length(s) > 0 then
+        AddChatString(char(#10) + '© Music: ' + s);
+
     SDLCheck(Mix_FadeInMusic(Mus, -1, 3000) <> -1, 'Mix_FadeInMusic', false)
 end;
 
--- a/hedgewars/uStore.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uStore.pas	Tue May 17 23:29:49 2016 +0300
@@ -578,7 +578,7 @@
 procedure RenderHealth(var Hedgehog: THedgehog);
 var s: shortstring;
 begin
-str(Hedgehog.Gear^.Health, s);
+s:= IntToStr(Hedgehog.Gear^.Health);
 FreeAndNilTexture(Hedgehog.HealthTagTex);
 Hedgehog.HealthTagTex:= RenderStringTex(ansistring(s), Hedgehog.Team^.Clan^.Color, fnt16)
 end;
--- a/hedgewars/uTeams.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uTeams.pas	Tue May 17 23:29:49 2016 +0300
@@ -396,6 +396,9 @@
     inc(TeamsNumber)
     end;
 
+// mirror changes into array for clans to spawn
+SpawnClansArray:= ClansArray;
+
 CurrentTeam:= team;
 AddTeam:= team;
 end;
--- a/hedgewars/uTouch.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uTouch.pas	Tue May 17 23:29:49 2016 +0300
@@ -22,7 +22,7 @@
 
 interface
 
-uses SysUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, GLUnit, uTypes, uCaptions, uAmmos, uWorld;
+uses SysUtils, uUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, GLUnit, uTypes, uCaptions, uAmmos, uWorld;
 
 
 procedure initModule;
@@ -358,48 +358,50 @@
 var
     xCursor, yCursor, index : LongInt;
 begin
-    //Check array sizes
-    if length(fingers) < pointerCount then
+// check array size
+// note: pointerCount will be incremented later,
+// so at this point it's the index of the new entry
+if Length(fingers) <= pointerCount then
     begin
-        setLength(fingers, length(fingers)*2);
-        for index := length(fingers) div 2 to length(fingers) do
-            fingers[index].id := nilFingerId;
+    setLength(fingers, Length(fingers)*2);
+    for index := Length(fingers) div 2 to (Length(fingers)-1) do
+        fingers[index].id := nilFingerId;
     end;
 
-    xCursor := convertToCursorX(x);
-    yCursor := convertToCursorY(y);
+xCursor := convertToCursorX(x);
+yCursor := convertToCursorY(y);
 
-    //on removing fingers, all fingers are moved to the left
-    //with dynamic arrays being zero based, the new position of the finger is the old pointerCount
-    fingers[pointerCount].id := id;
-    fingers[pointerCount].historicalX := xCursor;
-    fingers[pointerCount].historicalY := yCursor;
-    fingers[pointerCount].x := xCursor;
-    fingers[pointerCount].y := yCursor;
-    fingers[pointerCount].dx := 0;
-    fingers[pointerCount].dy := 0;
-    fingers[pointerCount].timeSinceDown:= RealTicks;
-    fingers[pointerCount].pressedWidget:= nil;
+//on removing fingers, all fingers are moved to the left
+//with dynamic arrays being zero based, the new position of the finger is the old pointerCount
+fingers[pointerCount].id := id;
+fingers[pointerCount].historicalX := xCursor;
+fingers[pointerCount].historicalY := yCursor;
+fingers[pointerCount].x := xCursor;
+fingers[pointerCount].y := yCursor;
+fingers[pointerCount].dx := 0;
+fingers[pointerCount].dy := 0;
+fingers[pointerCount].timeSinceDown:= RealTicks;
+fingers[pointerCount].pressedWidget:= nil;
 
-    addFinger:= @fingers[pointerCount];
-    inc(pointerCount);
+addFinger:= @fingers[pointerCount];
+inc(pointerCount);
 end;
 
 function updateFinger(x, y, dx, dy: Longword; id: TSDL_FingerId): PTouch_Data;
 var finger : PTouch_Data;
 begin
-    finger:= findFinger(id);
+finger:= findFinger(id);
 
-    if finger <> nil then
-        begin
-        finger^.x:= convertToCursorX(x);
-        finger^.y:= convertToCursorY(y);
-        finger^.dx:= dx;
-        finger^.dy:= dy;
-        end
-    else
-        WriteLnToConsole('finger ' + inttostr(id) + ' not found');
-    updateFinger:= finger
+if finger <> nil then
+    begin
+    finger^.x:= convertToCursorX(x);
+    finger^.y:= convertToCursorY(y);
+    finger^.dx:= dx;
+    finger^.dy:= dy;
+    end
+else
+    WriteLnToConsole('finger ' + inttostr(id) + ' not found');
+updateFinger:= finger
 end;
 
 procedure deleteFinger(id: TSDL_FingerId);
@@ -407,28 +409,28 @@
     index : Longword;
 begin
 
-    dec(pointerCount);
-    for index := 0 to pointerCount do
+dec(pointerCount);
+for index := 0 to pointerCount do
     begin
-        if fingers[index].id = id then
+    if fingers[index].id = id then
         begin
+        //put the last finger into the spot of the finger to be removed,
+        //so that all fingers are packed to the far left
+        if pointerCount <> index then
+            begin
+            fingers[index].id := fingers[pointerCount].id;
+            fingers[index].x := fingers[pointerCount].x;
+            fingers[index].y := fingers[pointerCount].y;
+            fingers[index].historicalX := fingers[pointerCount].historicalX;
+            fingers[index].historicalY := fingers[pointerCount].historicalY;
+            fingers[index].timeSinceDown := fingers[pointerCount].timeSinceDown;
+            fingers[index].pressedWidget := fingers[pointerCount].pressedWidget;
 
-            //put the last finger into the spot of the finger to be removed,
-            //so that all fingers are packed to the far left
-            if  pointerCount <> index then
-                begin
-                fingers[index].id := fingers[pointerCount].id;
-                fingers[index].x := fingers[pointerCount].x;
-                fingers[index].y := fingers[pointerCount].y;
-                fingers[index].historicalX := fingers[pointerCount].historicalX;
-                fingers[index].historicalY := fingers[pointerCount].historicalY;
-                fingers[index].timeSinceDown := fingers[pointerCount].timeSinceDown;
-                fingers[index].pressedWidget := fingers[pointerCount].pressedWidget;
-
-                fingers[pointerCount].id := 0;
+            fingers[pointerCount].id := nilFingerId;
             end
-        else fingers[index].id := 0;
-            break;
+        else
+            fingers[index].id := nilFingerId;
+        break;
         end;
     end;
 
@@ -513,7 +515,7 @@
 var
     index: LongWord;
 begin
-    for index:= 0 to length(fingers) do
+    for index:= 0 to (Length(fingers)-1) do
         if fingers[index].id = id then
             begin
             findFinger:= @fingers[index];
@@ -641,8 +643,8 @@
     pointerCount:= 0;
 
     setLength(fingers, 4);
-    for index := 0 to length(fingers) do
-        fingers[index].id := 0;
+    for index := 0 to (Length(fingers)-1) do
+        fingers[index].id := nilFingerId;
 
     rectSize:= baseRectSize;
     halfRectSize:= baseRectSize shr 1;
--- a/hedgewars/uTypes.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uTypes.pas	Tue May 17 23:29:49 2016 +0300
@@ -145,7 +145,7 @@
             sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7,
             sndPiano8, sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack,
             sndComeonthen, sndParachute, sndBump, sndResurrector, sndPlane, sndTardis, sndFrozenHogImpact,
-            sndIceBeam, sndHogFreeze
+            sndIceBeam, sndHogFreeze, sndAirMineImpact, sndKnifeImpact, sndExtraTime
             );
 
     // Available ammo types to be used by hedgehogs
@@ -180,7 +180,7 @@
     TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical);
     TWorldEdge = (weNone, weWrap, weBounce, weSea, weSky);
     TUIDisplay = (uiAll, uiNoTeams, uiNone);
-    TMapGen = (mgRandom, mgMaze, mgPerlin, mgDrawn);
+    TMapGen = (mgRandom, mgMaze, mgPerlin, mgDrawn, mgForts);
 
 
     THHFont = record
@@ -532,6 +532,8 @@
 
     PCakeData = ^TCakeData;
 
+    TClansArray = array[0..Pred(cMaxTeams)] of PClan;
+
 implementation
 
 end.
--- a/hedgewars/uUtils.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uUtils.pas	Tue May 17 23:29:49 2016 +0300
@@ -23,10 +23,16 @@
 interface
 uses uTypes, uFloat;
 
+// returns s with whitespaces (chars <= #32) removed form both ends
+function Trim(s: shortstring) : shortstring;
+
 procedure SplitBySpace(var a, b: shortstring);
 procedure SplitByChar(var a, b: shortstring; c: char);
 procedure SplitByCharA(var a, b: ansistring; c: char);
 
+function ExtractFileDir(s: shortstring) : shortstring;
+function ExtractFileName(s: shortstring) : shortstring;
+
 function  EnumToStr(const en : TGearType) : shortstring; overload;
 function  EnumToStr(const en : TVisualGearType) : shortstring; overload;
 function  EnumToStr(const en : TSound) : shortstring; overload;
@@ -70,6 +76,9 @@
 function  GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt;
 function  GetLaunchY(at: TAmmoType; angle: LongInt): LongInt;
 
+function read1stLn(filePath: shortstring): shortstring;
+function readValueFromINI(key, filePath: shortstring): shortstring;
+
 {$IFNDEF PAS2C}
 procedure Write(var f: textfile; s: shortstring);
 procedure WriteLn(var f: textfile; s: shortstring);
@@ -95,7 +104,7 @@
 
 
 implementation
-uses {$IFNDEF PAS2C}typinfo, {$ENDIF}Math, uConsts, uVariables, SysUtils, uPhysFSLayer;
+uses {$IFNDEF PAS2C}typinfo, {$ENDIF}Math, uConsts, uVariables, uPhysFSLayer, uDebug;
 
 {$IFDEF DEBUGFILE}
 var logFile: PFSFile;
@@ -105,6 +114,100 @@
 {$ENDIF}
 var CharArray: array[0..255] of Char;
 
+// All leading/tailing characters with ordinal values less than or equal to 32 (a space) are stripped.
+function Trim(s: shortstring) : shortstring;
+var len, left, right: integer;
+begin
+
+len:= Length(s);
+
+if len = 0 then
+    exit(s);
+
+// find first non-whitespace
+left:= 1;
+while left <= len do
+    begin
+    if s[left] > #32 then
+        break;
+    inc(left);
+    end;
+
+// find last non-whitespace
+right:= len;
+while right >= 1 do
+    begin
+    if s[right] > #32 then
+        break;
+    dec(right);
+    end;
+
+// string is whitespace only
+if left > right then
+    exit('');
+
+// get string without surrounding whitespace
+len:= right - left + 1;
+
+Trim:= copy(s, left, len);
+
+end;
+
+function GetLastSlashPos(var s: shortString) : integer;
+var lslash: integer;
+    c: char;
+begin
+
+// find last slash
+lslash:= Length(s);
+while lslash >= 1 do
+    begin
+    c:= s[lslash];
+    if (c = #47) or (c = #92) then
+        break;
+    dec(lslash); end;
+
+GetLastSlashPos:= lslash;
+end;
+
+function ExtractFileDir(s: shortstring) : shortstring;
+var lslash: byte;
+begin
+
+if Length(s) = 0 then
+    exit(s);
+
+lslash:= GetLastSlashPos(s);
+
+if lslash <= 1 then
+    exit('');
+
+s[0]:= char(lslash - 1);
+
+ExtractFileDir:= s;
+end;
+
+function ExtractFileName(s: shortstring) : shortstring;
+var lslash, len: byte;
+begin
+
+len:= Length(s);
+
+if len = 0 then
+    exit(s);
+
+lslash:= GetLastSlashPos(s);
+
+if lslash < 1 then
+    exit(s);
+
+if lslash = len then
+    exit('');
+
+len:= len - lslash;
+ExtractFilename:= copy(s, lslash + 1, len);
+end;
+
 procedure SplitBySpace(var a,b: shortstring);
 begin
 SplitByChar(a,b,' ');
@@ -352,7 +455,10 @@
 {$IFDEF USE_VIDEO_RECORDING}
 EnterCriticalSection(logMutex);
 {$ENDIF}
-pfsWriteLn(logFile, inttostr(GameTicks)  + ': ' + s);
+if logFile <> nil then
+    pfsWriteLn(logFile, inttostr(GameTicks)  + ': ' + s)
+else
+    WriteLn(stdout, inttostr(GameTicks)  + ': ' + s);
 
 {$IFDEF USE_VIDEO_RECORDING}
 LeaveCriticalSection(logMutex);
@@ -508,6 +614,51 @@
     sanitizeCharForLog:= r
 end;
 
+function read1stLn(filePath: shortstring): shortstring;
+var f: pfsFile;
+begin
+    read1stLn:= '';
+    if pfsExists(filePath) then
+        begin
+        f:= pfsOpenRead(filePath);
+        if (not pfsEOF(f)) and allOK then
+            pfsReadLn(f, read1stLn);
+        pfsClose(f);
+        f:= nil;
+        end;
+end;
+
+function readValueFromINI(key, filePath: shortstring): shortstring;
+var f: pfsFile;
+	s: shortstring;
+	i: LongInt;
+begin
+    s:= '';
+	readValueFromINI:= '';
+
+    if pfsExists(filePath) then
+        begin
+        f:= pfsOpenRead(filePath);
+
+        while (not pfsEOF(f)) and allOK do
+			begin pfsReadLn(f, s);
+			if Length(s) = 0 then
+				continue;
+			if s[1] = ';' then
+				continue;
+
+			i:= Pos('=', s);
+			if Trim(Copy(s, 1, Pred(i))) = key then
+				begin
+				Delete(s, 1, i);
+				readValueFromINI:= s;
+				end;
+			end;
+        pfsClose(f);
+        f:= nil;
+        end;
+end;
+
 procedure initModule(isNotPreview: boolean);
 {$IFDEF DEBUGFILE}
 var logfileBase: shortstring;
@@ -535,6 +686,8 @@
 {$IFDEF USE_VIDEO_RECORDING}
     InitCriticalSection(logMutex);
 {$ENDIF}
+    if not pfsExists('/Logs') then
+        pfsMakeDir('/Logs');
     // if log is locked, write to the next one
     i:= 0;
     while(i < 7) do
@@ -544,6 +697,9 @@
             break;
         inc(i)
     end;
+
+    if logFile = nil then
+        WriteLn(stdout, '[WARNING] Could not open log file for writing. Log will be written to stdout!');
 {$ENDIF}
 
     //mobile stuff
--- a/hedgewars/uVariables.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uVariables.pas	Tue May 17 23:29:49 2016 +0300
@@ -23,6 +23,8 @@
 
 uses SDLh, uTypes, uFloat, GLunit, uConsts, Math, uUtils{$IFDEF GL2}, uMatrix{$ENDIF};
 
+procedure initScreenSpaceVars();
+
 var
 /////// init flags ///////
     cMinScreenWidth    : LongInt;
@@ -2388,7 +2390,7 @@
     CurrentHedgehog: PHedgehog;
     TeamsArray: array[0..Pred(cMaxTeams)] of PTeam;
     TeamsCount: Longword;
-    ClansArray: array[0..Pred(cMaxTeams)] of PClan;
+    ClansArray, SpawnClansArray: TClansArray;
     ClansCount: Longword;
     LocalClan: LongInt;  // last non-bot, non-extdriven clan
     LocalTeam: LongInt;  // last non-bot, non-extdriven clan first team
@@ -2509,6 +2511,14 @@
     cTagsMask:= htTeamName or htName or htHealth;
 end;
 
+procedure initScreenSpaceVars();
+begin
+    // those values still are not perfect
+    cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
+    cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
+    cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
+end;
+
 procedure initModule;
 var s: shortstring;
     i: integer;
@@ -2689,10 +2699,7 @@
     CinematicBarH   := 0;
     CinematicScript := false;
 
-    // those values still are not perfect
-    cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
-    cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
-    cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
+    initScreenSpaceVars();
 
     dirtyLandTexCount:= 0;
 
@@ -2766,6 +2773,8 @@
         ClansArray[i]:= nil;
         end;
 
+    SpawnClansArray:= ClansArray;
+
     for i:= Low(TeamsArray) to High(TeamsArray) do
         begin
         TeamsArray[i]:= nil;
--- a/hedgewars/uVideoRec.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uVideoRec.pas	Tue May 17 23:29:49 2016 +0300
@@ -48,7 +48,7 @@
 procedure freeModule;
 
 implementation
-uses uVariables, uUtils, GLunit, SDLh, SysUtils, uIO, uMisc, uTypes, uDebug;
+uses uVariables, GLunit, SDLh, SysUtils, uUtils, uIO, uMisc, uTypes, uDebug;
 
 type TAddFileLogRaw = procedure (s: pchar); cdecl;
 const AvwrapperLibName = 'libavwrapper';
--- a/hedgewars/uVisualGearsHandlers.pas	Tue May 17 23:18:08 2016 +0300
+++ b/hedgewars/uVisualGearsHandlers.pas	Tue May 17 23:29:49 2016 +0300
@@ -75,14 +75,19 @@
 procedure initModule;
 
 implementation
-uses uCollisions, uVariables, Math, uConsts, uVisualGearsList, uFloat, uSound, uRenderUtils, uWorld;
+uses uCollisions, uVariables, Math, uConsts, uVisualGearsList, uFloat, uSound, uRenderUtils, uWorld, uUtils;
 
 procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
 var sign: real;
     moved: boolean;
     vfc, vft: LongWord;
 begin
-if vobCount = 0 then exit;
+if SuddenDeathDmg then
+    begin
+    if (vobSDCount = 0) then exit;
+    end
+else
+    if (vobCount = 0) then exit;
 
 sign:= 1;
 with Gear^ do
@@ -692,9 +697,8 @@
 procedure doStepHealthTag(Gear: PVisualGear; Steps: Longword);
 var s: shortstring;
 begin
-s:= '';
+s:= IntToStr(Gear^.State);
 
-str(Gear^.State, s);
 if Gear^.Hedgehog <> nil then
     Gear^.Tex:= RenderStringTex(ansistring(s), Gear^.Hedgehog^.Team^.Clan^.Color, fnt16)
 else
--- a/project_files/HedgewarsMobile/Classes/PascalImports.h	Tue May 17 23:18:08 2016 +0300
+++ b/project_files/HedgewarsMobile/Classes/PascalImports.h	Tue May 17 23:29:49 2016 +0300
@@ -29,7 +29,7 @@
      */
 
     void RunEngine(const int argc, const char *argv[]);
-    void LoadLocaleWrapper(const char *filepath, const char *filename);
+    void LoadLocaleWrapper(const char *filepath, const char *userpath, const char *filename);
 
     void HW_versionInfo(int *protoNum, char **versionStr);
     void *HW_getSDLWindow(void);
--- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m	Tue May 17 23:18:08 2016 +0300
+++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m	Tue May 17 23:29:49 2016 +0300
@@ -39,7 +39,7 @@
     self.trPath = [NSString stringWithFormat:@"%@", LOCALE_DIRECTORY()];
     self.trFileName = [NSString stringWithFormat:@"%@.txt", [HWUtils languageID]];
     // fill the data structure that we are going to read
-    LoadLocaleWrapper([self.trPath UTF8String], [self.trFileName UTF8String]);
+    LoadLocaleWrapper([self.trPath UTF8String], [DOCUMENTS_FOLDER() UTF8String], [self.trFileName UTF8String]);
 
     quantity = (char *)malloc(sizeof(char)*(HW_getNumberOfWeapons()+1));
     probability = (char *)malloc(sizeof(char)*(HW_getNumberOfWeapons()+1));
--- a/project_files/hwc/CMakeLists.txt	Tue May 17 23:18:08 2016 +0300
+++ b/project_files/hwc/CMakeLists.txt	Tue May 17 23:29:49 2016 +0300
@@ -32,15 +32,15 @@
 
 #get the list of pas files that are going to be converted and compiled
 file(GLOB engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/*.pas")
-#TODO: temporary until cmake can configure itself accordingly
-list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/uWeb.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/uVideoRec.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/uTouch.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/PNGh.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/pas2cSystem.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/pas2cRedo.pas")
 list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/hwLibrary.pas")
-list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/uMatrix.pas")
+if(NOT GL2)
+    list(REMOVE_ITEM engine_sources_pas "${CMAKE_SOURCE_DIR}/hedgewars/uMatrix.pas")
+endif()
 
 #remove and readd hwengine so that it is compiled first, compiling every other file in the process
 list(REMOVE_ITEM engine_sources_pas ${CMAKE_SOURCE_DIR}/hedgewars/hwengine.pas)
@@ -64,7 +64,13 @@
                -d ENDIAN_LITTLE
                -d DEBUGFILE)
 if(BUILD_ENGINE_JS)
-    set(pas2c_args ${pas2c_args} -d WEBGL -d HWLIBRARY)
+    set(pas2c_args ${pas2c_args} -d WEBGL)
+endif()
+if(BUILD_ENGINE_LIBRARY)
+    set(pas2c_args ${pas2c_args} -d HWLIBRARY)
+endif()
+if(GL2)
+    set(pas2c_args ${pas2c_args} -d GL2)
 endif()
 
 #invoke pas2c on main module, it will call all the others
@@ -80,7 +86,7 @@
 
 
 if(BUILD_ENGINE_JS)
-    add_flag_append(CMAKE_C_FLAGS "-s ABORTING_MALLOC=0")
+    add_flag_append(CMAKE_C_FLAGS "--memory-init-file 0 -O0 --js-opts 0 -g4 --use-preload-plugins -s ASSERTIONS=2 -s USE_SDL=2 -s USE_SDL_IMAGE=1 -s USE_LIBPNG=1 -s USE_SDL_TTF=2 -s USE_VORBIS=1 -s USE_OGG=1 -s TOTAL_MEMORY=100000000 -s GL_UNSAFE_OPTS=0 -s EXPORTED_FUNCTIONS=\"['_hwengine_RunEngine', '_hwengine_MainLoop']\" --post-js ${CMAKE_SOURCE_DIR}/project_files/web/post.js --pre-js ${CMAKE_SOURCE_DIR}/project_files/web/pre.js")
 endif()
 
 #compile the c files
--- a/project_files/hwc/rtl/GL.h	Tue May 17 23:18:08 2016 +0300
+++ b/project_files/hwc/rtl/GL.h	Tue May 17 23:29:49 2016 +0300
@@ -1,8 +1,37 @@
 #pragma once
 
-#ifdef __APPLE__
+#if defined(__APPLE__) && !defined(EMSCRIPTEN)
 #include <OpenGL/gl.h>
 #else
 #include "GL/gl.h"
 #endif
 
+/* emscripten cannot find these functions */
+#ifdef EMSCRIPTEN
+void glGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog);
+void glLinkProgram(GLuint program);
+void glUniform1i(GLint location, GLint v0);
+GLuint glCreateProgram(void);
+void glUseProgram(GLuint program);
+void glDeleteProgram(GLuint program);
+void glGetProgramiv(GLuint program, GLenum pname, GLint *params);
+void glDeleteShader(GLuint shader);
+void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name);
+void glAttachShader(GLuint program, GLuint shader);
+void glBindBuffer(GLenum target, GLuint buffer);
+void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+void glEnableVertexAttribArray(GLuint index);
+void glDisableVertexAttribArray(GLuint index);
+void glGenBuffers(GLsizei n, GLuint * buffers);
+void glDeleteBuffers(GLsizei n, const GLuint * buffers);
+void glUniform4fv(GLint location, GLsizei count, const GLfloat *value);
+void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
+void glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
+void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLint glGetUniformLocation(GLuint program, const GLchar *name);
+void glGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog);
+void glGetShaderiv(GLuint shader, GLenum pname, GLint *params);
+GLuint glCreateShader(GLenum shaderType);
+void glCompileShader(GLuint shader);
+void glShaderSource(GLuint shader, GLsizei count,/* const dropped for pas2c compat */ GLchar **string, const GLint *length);
+#endif
--- a/share/hedgewars/Data/Locale/en.txt	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/en.txt	Tue May 17 23:29:49 2016 +0300
@@ -424,7 +424,7 @@
 03:22=Call me Indiana!
 03:23=(Really) Martial Arts
 03:24=The cake is NOT a lie!
-03:25=Costume kit
+03:25=Attractive weapon
 03:26=Juicy grenade
 03:27=Fiery grenade
 03:28=Ballistic weapon
@@ -487,7 +487,7 @@
 04:22=Not just for Indiana Jones! The whip is a|useful weapon in many situations. Especially|when you'd like to shove someone off a cliff.|Attack: Strike everything in front of you
 04:23=If you have nothing to lose, this might be|quite handy. Sacrifice your hog by launching|it into a specific direction hurting everything|on his way and exploding at the end.|Attack: Launch the devastating and deadly attack
 04:24=Happy Birthday! Launch this cake, let it walk right|next to your enemies and let them have an explosive|party. The cake is able to pass almost all terrain|but he might detonate earlier this way.|Attack: Start the cake or let it stop and explode
-04:25=Use this disguise kit to get your enemies to jump|towards your hog (and into some gap or hole).|Attack: Use the kit and try to seduce another hog
+04:25=With this costume kit your hog becomes irresistibly|attractive and makes nearby hogs jump in blind love|towards it (and into some gap or hole). The seduction is|so heartwarming, it even breaks the ice of frozen hogs.|Attack: Use the irresistable seduction
 04:26=Throw this juicy (and bouncy) watermelon at|your enemies. Once the timer expires, it will|split into several explosive pieces.|1-5: Set watermelon's timer|Attack: Hold to shoot with more power
 04:27=Let hellfire rain onto your opponents by using|this fiendish explosive. Don't get too close to|the explosion as smaller fires might last longer.|Attack: Hold to shoot with more power
 04:28=Short time after launching this rocket, it will|start drilling through solid ground and explode|once its fuse is triggered or it resurfaces again.|Attack: Hold to shoot with more power
--- a/share/hedgewars/Data/Locale/hedgewars_ar.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fr">
+<TS version="2.1" language="fr">
 <context>
     <name>About</name>
     <message>
@@ -612,6 +612,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1406,7 +1410,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished">الفرق تبدا في مكانين متقابلين. فريقان الحد الاقصى</translation>
+        <translation type="obsolete">الفرق تبدا في مكانين متقابلين. فريقان الحد الاقصى</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1536,6 +1540,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2644,6 +2652,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_bg.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="bg">
+<TS version="2.1" language="bg">
 <context>
     <name>About</name>
     <message>
@@ -615,6 +615,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1424,10 +1428,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Land can not be destroyed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1555,6 +1555,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2680,6 +2684,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_cs.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="cs">
+<TS version="2.1" language="cs">
 <context>
     <name>About</name>
     <message>
@@ -621,6 +621,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1448,7 +1452,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Týmy startují na opačných stranách terénu, dvě barvy týmů maximálně!</translation>
+        <translation type="vanished">Týmy startují na opačných stranách terénu, dvě barvy týmů maximálně!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1570,6 +1574,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2697,6 +2705,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_da.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_da.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="da">
+<TS version="2.1" language="da">
 <context>
     <name>About</name>
     <message>
@@ -619,6 +619,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1429,7 +1433,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Hold starter på hver sin side af banen. Maksimalt to holdfarver!</translation>
+        <translation type="vanished">Hold starter på hver sin side af banen. Maksimalt to holdfarver!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1559,6 +1563,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2688,6 +2696,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="de">
+<TS version="2.1" language="de">
 <context>
     <name>About</name>
     <message>
@@ -119,17 +119,17 @@
         <translation type="unfinished">Feedback</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="125"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/>
         <source>View</source>
         <translation>Ansehen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="130"/>
         <source>Cancel</source>
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="179"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="158"/>
         <source>Send Feedback</source>
         <translation>Feedback senden</translation>
     </message>
@@ -138,7 +138,7 @@
         <translation type="obsolete">Bitte gib uns Feedback!</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/>
         <source>We are always happy about suggestions, ideas, or bug reports.</source>
         <translation>Wir freuen uns immer über Vorschläge, Ideen oder Fehlerberichte.</translation>
     </message>
@@ -151,17 +151,17 @@
         <translation type="obsolete">Deine E-Mail-Adresse ist optional, aber wir könnten sie brauchen, um dich zu kontaktieren.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/>
         <source>Send us feedback!</source>
         <translation>Schicke uns dein Feedback!</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/>
         <source>If you found a bug, you can see if it&apos;s already been reported here: </source>
         <translation>Falls du einen Fehler gefunden hast, kannst du hier sehen, ob er bereits bekannt is (auf Englisch):</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="94"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
         <source>Your email address is optional, but necessary if you want us to get back at you.</source>
         <translation>Deine E-Mail-Adresse ist optional, es sei denn du möchtest, dass wir dir antworten.</translation>
     </message>
@@ -185,12 +185,12 @@
 <context>
     <name>GameCFGWidget</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="150"/>
         <source>Edit weapons</source>
         <translation>Arsenal bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="132"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="134"/>
         <source>Edit schemes</source>
         <translation>Spielprofil bearbeiten</translation>
     </message>
@@ -199,7 +199,7 @@
         <translation type="obsolete">Spieloptionen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="158"/>
         <source>Game scheme will auto-select a weapon</source>
         <translation>Das Auswählen eines Spielprofils wird automatisch ein Arsenal auswählen</translation>
     </message>
@@ -363,52 +363,52 @@
 <context>
     <name>HWChatWidget</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="661"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="663"/>
         <source>%1 has been removed from your ignore list</source>
         <translation>%1 wurde aus deiner Ignorierliste entfernt</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="671"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="673"/>
         <source>%1 has been added to your ignore list</source>
         <translation>%1 wurde in deine Ignorierliste aufgenommen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="703"/>
         <source>%1 has been removed from your friends list</source>
         <translation>%1 wurde aus deiner Freundesliste entfernt</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="710"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="712"/>
         <source>%1 has been added to your friends list</source>
         <translation>%1 wurde in deine Freundesliste aufgenommen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="778"/>
         <source>Stylesheet imported from %1</source>
         <translation>Stylesheet aus %1 importiert</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="777"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="779"/>
         <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source>
         <translation>Gib %1 ein, wenn du das jetzige Stylesheet in Zukunft weiterverwenden willst; gib %2 ein, um es zurückzusetzen!</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="785"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="787"/>
         <source>Couldn&apos;t read %1</source>
         <translation>Konnte %1 nicht lesen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="793"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="795"/>
         <source>StyleSheet discarded</source>
         <translation>Stylesheet verworfen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="817"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="819"/>
         <source>StyleSheet saved to %1</source>
         <translation>Stylesheet wurde nach %1 gesichert</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="820"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="822"/>
         <source>Failed to save StyleSheet to %1</source>
         <translation>Stylesheet konnte nicht nach %1 gesichert werden</translation>
     </message>
@@ -629,47 +629,47 @@
 <context>
     <name>HWMapContainer</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/>
         <source>All</source>
         <translation>Alles</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/>
-        <source>Small</source>
-        <translation>Klein</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/>
-        <source>Medium</source>
-        <translation>Mittel</translation>
+        <source>Small</source>
+        <translation>Klein</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/>
-        <source>Large</source>
-        <translation>Groß</translation>
+        <source>Medium</source>
+        <translation>Mittel</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
-        <source>Cavern</source>
-        <translation>Höhle</translation>
+        <source>Large</source>
+        <translation>Groß</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+        <source>Cavern</source>
+        <translation>Höhle</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
         <source>Wacky</source>
         <translation>Verrückt</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
-        <source>Small tunnels</source>
-        <translation>Kleine Tunnel</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/>
+        <source>Small tunnels</source>
+        <translation>Kleine Tunnel</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
         <source>Medium tunnels</source>
         <translation>Mittelgroße Tunnel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="136"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="137"/>
         <source>Seed</source>
         <translation>Seed</translation>
     </message>
@@ -704,59 +704,64 @@
         <translation>Zufallslabyrinth</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="121"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="112"/>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="122"/>
         <source>Random</source>
         <translation>Zufall</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="145"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="146"/>
         <source>Map preview:</source>
         <translation>Kartenvorschau:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="184"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
         <source>Load map drawing</source>
         <translation>Gezeichnete
 Karte laden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="190"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/>
         <source>Edit map drawing</source>
         <translation>Gezeichnete
 Karte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/>
         <source>Small islands</source>
         <translation>Kleine Inseln</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/>
-        <source>Medium islands</source>
-        <translation>Mittelgroße Inseln</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/>
+        <source>Medium islands</source>
+        <translation>Mittelgroße Inseln</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/>
         <source>Large islands</source>
         <translation>Große Inseln</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="760"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="772"/>
         <source>Map size:</source>
         <translation>Kartengröße:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="767"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="779"/>
         <source>Maze style:</source>
         <translation>Labyrinth-Art:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="789"/>
-        <source>Mission:</source>
-        <translation>Mission:</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="801"/>
+        <source>Mission:</source>
+        <translation>Mission:</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="813"/>
         <source>Map:</source>
         <translation>Karte:</translation>
     </message>
@@ -765,28 +770,28 @@
         <translation type="obsolete">Thema:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Load drawn map</source>
         <translation>Gezeichnete Karte laden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Drawn Maps</source>
         <translation>Gezeichnete Karten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>All files</source>
         <translation>Alle Dateien</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/>
         <source>Large tunnels</source>
         <translation>Große Tunnel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="884"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1012"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="901"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1029"/>
         <source>Theme: %1</source>
         <translation>Szenerie: %1</translation>
     </message>
@@ -796,7 +801,7 @@
         <translation>Perlinzufall</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="774"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="786"/>
         <source>Style:</source>
         <translation>Stil:</translation>
     </message>
@@ -1494,52 +1499,52 @@
 <context>
     <name>PageOptions</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="138"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="139"/>
         <source>New team</source>
         <translation>Neues Team</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="147"/>
         <source>Edit team</source>
         <translation>Team bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="154"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="155"/>
         <source>Delete team</source>
         <translation>Team löschen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="162"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="163"/>
         <source>You can&apos;t edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
         <translation>Du kannst keine Teams bei der Team-Auswahl ändern. Gehe zum Hauptmenü zurück, um Teams hinzuzufügen, zu editieren oder zu löschen.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="178"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="180"/>
         <source>New scheme</source>
         <translation>Neues Spielprofil</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="185"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="187"/>
         <source>Edit scheme</source>
         <translation>Spielprofil bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="192"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="194"/>
         <source>Delete scheme</source>
         <translation>Spielprofil löschen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="209"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="212"/>
         <source>New weapon set</source>
         <translation>Neues Arsenal</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="216"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="219"/>
         <source>Edit weapon set</source>
         <translation>Arsenal bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="223"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="226"/>
         <source>Delete weapon set</source>
         <translation>Arsenal löschen</translation>
     </message>
@@ -1549,47 +1554,47 @@
         <translation>Erweitert</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
         <source>Reset to default colors</source>
         <translation>Auf Standard-Farben zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="562"/>
         <source>Proxy host</source>
         <translation>Host</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="563"/>
         <source>Proxy port</source>
         <translation>Port</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="564"/>
         <source>Proxy login</source>
         <translation>Benutzername</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="565"/>
         <source>Proxy password</source>
         <translation>Passwort</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
         <source>No proxy</source>
         <translation>Kein Proxy</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="580"/>
         <source>Socks5 proxy</source>
         <translation>Socks5-Proxy</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="581"/>
         <source>HTTP proxy</source>
         <translation>HTTP-Proxy</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="579"/>
         <source>System proxy settings</source>
         <translation>System-Proxy-Einstellungen</translation>
     </message>
@@ -1610,7 +1615,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="96"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="239"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="242"/>
         <source>Game</source>
         <translation>Spiel</translation>
     </message>
@@ -1645,62 +1650,62 @@
         <translation>Teams</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="169"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="170"/>
         <source>Schemes</source>
         <translation>Spielprofile</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="200"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="202"/>
         <source>Weapons</source>
         <translation>Arsenale</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="409"/>
         <source>Frontend</source>
         <translation>Benutzeroberfläche</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="426"/>
         <source>Custom colors</source>
         <translation>Benutzerdefinierte Farben</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
         <source>Game audio</source>
         <translation>Ton im Spiel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
         <source>Frontend audio</source>
         <translation>Ton in der Benutzeroberfläche</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="530"/>
         <source>Account</source>
         <translation>Benutzerkonto</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="556"/>
         <source>Proxy settings</source>
         <translation>Proxy-Einstellungen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
         <source>Miscellaneous</source>
         <translation>Verschiedenes</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
         <source>Updates</source>
         <translation>Updates</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="676"/>
         <source>Check for updates</source>
         <translation>nach Updates suchen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="690"/>
         <source>Video recording options</source>
         <translation>Videoaufzeichnungseinstellungen</translation>
     </message>
@@ -1804,27 +1809,27 @@
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="111"/>
         <source>Gain 80% of the damage you do back in health</source>
         <translation>80% des ausgeteilten Schadens werden dir als Gesundheitspunkte gutgeschrieben</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="115"/>
+        <source>Share your opponents pain, share their damage</source>
+        <translation>Teile den Schmerz deines Gegners, teile seinen verursachten Schaden</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="107"/>
-        <source>Share your opponents pain, share their damage</source>
-        <translation>Teile den Schmerz deines Gegners, teile seinen verursachten Schaden</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="111"/>
         <source>Your hogs are unable to move, put your artillery skills to the test</source>
         <translation>Deine Igel können sich nicht bewegen, gib Dein Bestes im Fernkampf</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="324"/>
+        <source>Random</source>
+        <translation>Zufall</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="325"/>
-        <source>Random</source>
-        <translation>Zufall</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="326"/>
         <source>Seconds</source>
         <translation>Sekunden</translation>
     </message>
@@ -1834,67 +1839,66 @@
         <translation>Verteidige deine Festung und zerstöre die des Gegners, maximal zwei Teamfarben!</translation>
     </message>
     <message>
+        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
+        <translation type="vanished">Die Teams starten auf gegenüberliegenden Terrainseiten, maximal zwei Teamfarben!</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
+        <source>Land can not be destroyed!</source>
+        <translation>Die Landschaft ist nicht zerstörbar!</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
+        <source>Lower gravity</source>
+        <translation>Verringerte Schwerkraft</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
+        <source>Assisted aiming with laser sight</source>
+        <translation>Zielfhilfe durch Laservisier</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
+        <source>All hogs have a personal forcefield</source>
+        <translation>Alle Igel haben ein eigenes Schutzschild</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
+        <source>Order of play is random instead of in room order.</source>
+        <translation>Gespielt wird in zufälliger Reihenfolge.</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
+        <source>Play with a King. If he dies, your side dies.</source>
+        <translation>Beschütze deinen König! Ohne ihn hast du verloren.</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <source>Take turns placing your hedgehogs before the start of play.</source>
+        <translation>Platziere deine Igel selbständig vor Rundenbeginn.</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
+        <source>Ammo is shared between all teams that share a colour.</source>
+        <translation>Alle Teams mit gleicher Farbe teilen sich den gleichen Waffenvorrat.</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="75"/>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Die Teams starten auf gegenüberliegenden Terrainseiten, maximal zwei Teamfarben!</translation>
+        <source>Disable girders when generating random maps.</source>
+        <translation>Keine Bauträger auf Zufallskarten platzieren.</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="79"/>
-        <source>Land can not be destroyed!</source>
-        <translation>Die Landschaft ist nicht zerstörbar!</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
-        <source>Lower gravity</source>
-        <translation>Verringerte Schwerkraft</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
-        <source>Assisted aiming with laser sight</source>
-        <translation>Zielfhilfe durch Laservisier</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
-        <source>All hogs have a personal forcefield</source>
-        <translation>Alle Igel haben ein eigenes Schutzschild</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="115"/>
-        <source>Order of play is random instead of in room order.</source>
-        <translation>Gespielt wird in zufälliger Reihenfolge.</translation>
+        <source>Disable land objects when generating random maps.</source>
+        <translation>Keine Landschaftsobjekte beim Generieren von Zufallskarten platzieren. </translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="123"/>
+        <source>AI respawns on death.</source>
+        <translation>KI wird wiederbelebt.</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="119"/>
-        <source>Play with a King. If he dies, your side dies.</source>
-        <translation>Beschütze deinen König! Ohne ihn hast du verloren.</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="123"/>
-        <source>Take turns placing your hedgehogs before the start of play.</source>
-        <translation>Platziere deine Igel selbständig vor Rundenbeginn.</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
-        <source>Ammo is shared between all teams that share a colour.</source>
-        <translation>Alle Teams mit gleicher Farbe teilen sich den gleichen Waffenvorrat.</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
-        <source>Disable girders when generating random maps.</source>
-        <translation>Keine Bauträger auf Zufallskarten platzieren.</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
-        <source>Disable land objects when generating random maps.</source>
-        <translation>Keine Landschaftsobjekte beim Generieren von Zufallskarten platzieren. </translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
-        <source>AI respawns on death.</source>
-        <translation>KI wird wiederbelebt.</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
         <source>All (living) hedgehogs are fully restored at the end of turn</source>
         <translation>Alle (lebenden) Igel werden am Ende der Runde vollkommen geheilt</translation>
     </message>
@@ -1904,22 +1908,22 @@
         <translation>Angriffe beenden die Runde nicht.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
         <source>Weapons are reset to starting values each turn.</source>
         <translation>Arsenal wird jede Runde zurückgesetzt.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
         <source>Each hedgehog has its own ammo. It does not share with the team.</source>
         <translation>Jeder Igel hat sein eigenes Arsenal. Es wird nicht mit dem Team geteilt.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
         <source>You will not have to worry about wind anymore.</source>
         <translation>Du wirst dich nicht mehr um Wind kümmern müssen.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
         <source>Wind will affect almost everything.</source>
         <translation>Wind beeinflusst fast alles.</translation>
     </message>
@@ -1939,27 +1943,32 @@
         <translation>Dem Spielfeld eine unzerstörbare Randbegrenzung hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
         <source>Add an indestructible border along the bottom</source>
         <translation>Dem unteren Kartenrand eine unzerstörbare Randbegrenzung anfügen</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="408"/>
+        <source>None (Default)</source>
+        <translation>Keine (Standard)</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="409"/>
-        <source>None (Default)</source>
-        <translation>Keine (Standard)</translation>
+        <source>Wrap (World wraps)</source>
+        <translation>Umbrechen (Welt wiederholt sich)</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="410"/>
-        <source>Wrap (World wraps)</source>
-        <translation>Umbrechen (Welt wiederholt sich)</translation>
+        <source>Bounce (Edges reflect)</source>
+        <translation>Abprallen (Grenzen reflektieren)</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="411"/>
-        <source>Bounce (Edges reflect)</source>
-        <translation>Abprallen (Grenzen reflektieren)</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="412"/>
         <source>Sea (Edges connect to sea)</source>
         <translation>Ozean (Grenzen sind mit dem Wasser verbunden)</translation>
     </message>
@@ -1967,22 +1976,22 @@
 <context>
     <name>PageSelectWeapon</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="48"/>
         <source>Default</source>
         <translation>Standard</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="52"/>
+        <source>Delete</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
+        <source>New</source>
+        <translation>Neu</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="51"/>
-        <source>Delete</source>
-        <translation>Löschen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="46"/>
-        <source>New</source>
-        <translation>Neu</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="50"/>
         <source>Copy</source>
         <translation>Kopieren</translation>
     </message>
@@ -2133,23 +2142,23 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="274"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="910"/>
         <source>Ignore</source>
         <translation>Ignorieren</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="278"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="922"/>
         <source>Add friend</source>
         <translation>Als Freund hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="900"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
         <source>Unignore</source>
         <translation>Nicht mehr ignorieren</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="912"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
         <source>Remove friend</source>
         <translation>Als Freund entfernen</translation>
     </message>
@@ -2186,38 +2195,38 @@
 <context>
     <name>QCheckBox</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="415"/>
         <source>Fullscreen</source>
         <translation>Vollbild</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="354"/>
         <source>Show FPS</source>
         <translation>Bildwiederholrate anzeigen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="365"/>
         <source>Alternative damage show</source>
         <translation>Alternativen Schaden anzeigen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
         <source>Append date and time to record file name</source>
         <translation>Datum und Uhrzeit an Wiederholungsdateinamen anhängen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="669"/>
         <source>Check for updates at startup</source>
         <translation>Beim Spielstart nach neuen Versionen suchen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
         <source>Show ammo menu tooltips</source>
         <translation>Kurzinfos für Waffen anzeigen</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="547"/>
         <source>Save password</source>
         <translation>Passwort speichern</translation>
     </message>
@@ -2232,89 +2241,89 @@
         <translation>Video ist privat</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/>
         <source>Record audio</source>
         <translation>Audio aufzeichnen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="782"/>
         <source>Use game resolution</source>
         <translation>Spielauflösung verwenden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
         <source>Visual effects</source>
         <translation>Visuelle Effekte</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="494"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
         <source>Sound</source>
         <translation>Ton</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="495"/>
         <source>In-game sound effects</source>
         <translation>Toneffekte im Spiel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/>
         <source>Music</source>
         <translation>Musik</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
         <source>In-game music</source>
         <translation>Musik im Spiel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
-        <source>Frontend sound effects</source>
-        <translation>Toneffekte in der Benutzeroberfläche</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
+        <source>Frontend sound effects</source>
+        <translation>Toneffekte in der Benutzeroberfläche</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="517"/>
         <source>Frontend music</source>
         <translation>Musik in der Benutzeroberfläche</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
-        <source>Team</source>
-        <translation>Team</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
-        <source>Enable team tags by default</source>
-        <translation>Teambeschriftungsschilder standardmäßig aktivieren</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
-        <source>Hog</source>
-        <translation>Igel</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
-        <source>Enable hedgehog tags by default</source>
-        <translation>Namensschilder standardmäßig aktivieren</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
-        <source>Health</source>
-        <translation>Lebenspunkte</translation>
+        <source>Team</source>
+        <translation>Team</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="387"/>
+        <source>Enable team tags by default</source>
+        <translation>Teambeschriftungsschilder standardmäßig aktivieren</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
-        <source>Enable health tags by default</source>
-        <translation>Lebenspunktebeschriftungsschilder standardmäßig aktivieren</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
-        <source>Translucent</source>
-        <translation>Transluzent</translation>
+        <source>Hog</source>
+        <translation>Igel</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="391"/>
+        <source>Enable hedgehog tags by default</source>
+        <translation>Namensschilder standardmäßig aktivieren</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+        <source>Health</source>
+        <translation>Lebenspunkte</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="395"/>
+        <source>Enable health tags by default</source>
+        <translation>Lebenspunktebeschriftungsschilder standardmäßig aktivieren</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="398"/>
+        <source>Translucent</source>
+        <translation>Transluzent</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="399"/>
         <source>Enable translucent tags by default</source>
         <translation>Transluzente Beschriftungsschilder standardmäßig aktivieren</translation>
     </message>
@@ -2332,12 +2341,12 @@
         <translation>Stufe</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/>
         <source>(System default)</source>
         <translation>(Systemstandard)</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="298"/>
         <source>Community</source>
         <translation></translation>
     </message>
@@ -2354,77 +2363,77 @@
         <translation type="obsolete">Im Spiel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/>
         <source>Disabled</source>
         <translation>Deaktiviert</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/>
-        <source>Red/Cyan</source>
-        <translation>Rot/Türkis</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/>
-        <source>Cyan/Red</source>
-        <translation>Türkis/Rot</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/>
-        <source>Red/Blue</source>
-        <translation>Rot/Blau</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="317"/>
-        <source>Blue/Red</source>
-        <translation>Blau/Rot</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/>
-        <source>Red/Green</source>
-        <translation>Rot/Grün</translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/>
+        <source>Red/Cyan</source>
+        <translation>Rot/Türkis</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/>
+        <source>Cyan/Red</source>
+        <translation>Türkis/Rot</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/>
+        <source>Red/Blue</source>
+        <translation>Rot/Blau</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/>
+        <source>Blue/Red</source>
+        <translation>Blau/Rot</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/>
+        <source>Red/Green</source>
+        <translation>Rot/Grün</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/>
         <source>Green/Red</source>
         <translation>Grün/Rot</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="331"/>
+        <source>Side-by-side</source>
+        <translation>Nebeneinander</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="332"/>
+        <source>Top-Bottom</source>
+        <translation>Übereinander</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/>
+        <source>Red/Cyan grayscale</source>
+        <translation>Rot/Türkis, Graustufen</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/>
-        <source>Side-by-side</source>
-        <translation>Nebeneinander</translation>
+        <source>Cyan/Red grayscale</source>
+        <translation>Türkis/Rot, Graustufen</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/>
-        <source>Top-Bottom</source>
-        <translation>Übereinander</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/>
-        <source>Red/Cyan grayscale</source>
-        <translation>Rot/Türkis, Graustufen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/>
-        <source>Cyan/Red grayscale</source>
-        <translation>Türkis/Rot, Graustufen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/>
         <source>Red/Blue grayscale</source>
         <translation>Rot/Blau, Graustufen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="328"/>
         <source>Blue/Red grayscale</source>
         <translation>Blau/Rot, Graustufen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="329"/>
         <source>Red/Green grayscale</source>
         <translation>Rot/Grün, Graustufen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="330"/>
         <source>Green/Red grayscale</source>
         <translation>Grün/Rot, Graustufen</translation>
     </message>
@@ -2437,7 +2446,7 @@
         <translation>Teammitglieder</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="150"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="153"/>
         <source>Fort</source>
         <translation>Festung</translation>
     </message>
@@ -2480,7 +2489,7 @@
 <context>
     <name>QLabel</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="139"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="141"/>
         <source>Weapons</source>
         <translation>Arsenal</translation>
     </message>
@@ -2495,12 +2504,12 @@
         <translation>Port:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="749"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="758"/>
         <source>Resolution</source>
         <translation>Auflösung</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="340"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="345"/>
         <source>FPS limit</source>
         <translation>Bildwiederholratenbegrenzung (Hz)</translation>
     </message>
@@ -2519,57 +2528,57 @@
         <translation type="obsolete">Version</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="477"/>
         <source>Initial sound volume</source>
         <translation>Ausgangslautstärke</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="175"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="174"/>
         <source>Damage Modifier</source>
         <translation>Prozentualer Schaden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="189"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="188"/>
         <source>Turn Time</source>
         <translation>Rundenzeit</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="203"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="202"/>
         <source>Initial Health</source>
         <translation>Anfangslebenspunkte</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="217"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="216"/>
         <source>Sudden Death Timeout</source>
         <translation>Runden bis Sudden Death</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="314"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="313"/>
         <source>Mines Time</source>
         <translation>Minenzündzeit</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="330"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="329"/>
         <source>Mines</source>
         <translation>Minen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="372"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="371"/>
         <source>Air Mines</source>
         <translation>Luftminen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="432"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="431"/>
         <source>Scheme Name:</source>
         <translation>Spielprofil:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="273"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="272"/>
         <source>Crate Drops</source>
         <translation>Kistenabwurf</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="344"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="343"/>
         <source>% Dud Mines</source>
         <translation>% Blindgänger</translation>
     </message>
@@ -2599,12 +2608,12 @@
         <translation>Stimme</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="617"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="622"/>
         <source>Locale</source>
         <translation>Sprache</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="358"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="357"/>
         <source>Explosives</source>
         <translation>Pulverfässer</translation>
     </message>
@@ -2613,37 +2622,37 @@
         <translation type="obsolete">Tipp:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="295"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="299"/>
         <source>Quality</source>
         <translation>Qualität</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="286"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="285"/>
         <source>% Health Crates</source>
         <translation>% Erste-Hilfe-Koffer</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="300"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="299"/>
         <source>Health in Crates</source>
         <translation>Lebenspunkte in Erste-Hilfe-Koffern</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="231"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="230"/>
         <source>Sudden Death Water Rise</source>
         <translation>Steigen des Wassers</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="245"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="244"/>
         <source>Sudden Death Health Decrease</source>
         <translation>Schaden bei Sudden Death</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="259"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="258"/>
         <source>% Rope Length</source>
         <translation>% Seillänge</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="309"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/>
         <source>Stereo rendering</source>
         <translation>Stereo-Rendering</translation>
     </message>
@@ -2653,12 +2662,12 @@
         <translation>Stil</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="127"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="129"/>
         <source>Scheme</source>
         <translation>Spielprofil</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="386"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="385"/>
         <source>% Get Away Time</source>
         <translation>% Rückzugszeit</translation>
     </message>
@@ -2706,37 +2715,37 @@
         <translation>Tags (durch Kommas getrennt): </translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="137"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="119"/>
         <source>Description</source>
         <translation>Beschreibung</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="531"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
         <source>Nickname</source>
         <translation>Spitzname</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="693"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="699"/>
         <source>Format</source>
         <translation>Format</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="713"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="720"/>
         <source>Audio codec</source>
         <translation>Audio-Codec</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/>
         <source>Video codec</source>
         <translation>Video-Codec</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="779"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="788"/>
         <source>Framerate</source>
         <translation>Bildrate</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="793"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="802"/>
         <source>Bitrate (Kbps)</source>
         <translation>Bitrate (kB/s)</translation>
     </message>
@@ -2746,37 +2755,37 @@
         <translation>Diese Entwicklungsversion ist unfertig und könnte nicht kompatibel mit anderen Versionen des Spiels sein, wobei sogar einige Funktionen sogar kaputt oder unfertig sein könnten.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="250"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="253"/>
         <source>Fullscreen</source>
         <translation>Vollbild</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="255"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="258"/>
         <source>Fullscreen Resolution</source>
         <translation>Vollbild-Auflösung</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="265"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="269"/>
         <source>Windowed Resolution</source>
         <translation>Fenster-Auflösung</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="104"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="97"/>
         <source>Your Email</source>
         <translation>Deine E-Mail-Adresse</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="112"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="103"/>
         <source>Summary</source>
         <translation>Zusammenfassung</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="122"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="109"/>
         <source>Send system information</source>
         <translation>Systeminformation senden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="165"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="142"/>
         <source>Type the security code:</source>
         <translation>Gib den Sicherheitscode ein:</translation>
     </message>
@@ -2797,22 +2806,22 @@
         <translation>Tipp: %1</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="372"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/>
         <source>Displayed tags above hogs and translucent tags</source>
         <translation>Angezeigte/transluzente Beschriftungsschilder über Igel</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="632"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="638"/>
         <source>This setting will be effective at next restart.</source>
         <translation>Diese Einstellung tritt ab nächstem Neustart in Kraft.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="400"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="399"/>
         <source>World Edge</source>
         <translation>Spielfeldgrenze</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="418"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="417"/>
         <source>Script parameter</source>
         <translation>Skriptparameter</translation>
     </message>
@@ -2826,12 +2835,12 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/team.cpp" line="44"/>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="307"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="310"/>
         <source>hedgehog %1</source>
         <translation>Igel %1</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/>
         <source>anonymous</source>
         <translation>anonym</translation>
     </message>
@@ -2852,7 +2861,7 @@
         <translation>Verbindung zum Server wurde unterbrochen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="373"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="376"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
@@ -2881,12 +2890,12 @@
 </translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="361"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="364"/>
         <source>Teams - Are you sure?</source>
         <translation>Teams - Bist du dir sicher?</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="362"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="365"/>
         <source>Do you really want to delete the team &apos;%1&apos;?</source>
         <translation>Willst du das Team »%1« wirklich löschen?</translation>
     </message>
@@ -2907,14 +2916,14 @@
         <translation>Server konnte nicht gestartet werden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="350"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="327"/>
         <location filename="../../../../QTfrontend/util/MessageDialog.cpp" line="26"/>
         <source>Hedgewars - Error</source>
         <translation>Hedgewars – Fehler</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/hwform.cpp" line="2028"/>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="437"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="414"/>
         <source>Hedgewars - Success</source>
         <translation>Hedgewars – Erfolg</translation>
     </message>
@@ -3068,7 +3077,7 @@
     <message>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="146"/>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="166"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="973"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="990"/>
         <source>File error</source>
         <translation>Dateifehler</translation>
     </message>
@@ -3079,12 +3088,12 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="167"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="974"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="991"/>
         <source>Cannot open &apos;%1&apos; for reading</source>
         <translation>»%1« konnte zum Lesen nicht geöffnet werden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="374"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="377"/>
         <source>Cannot use the ammo &apos;%1&apos;!</source>
         <translation>Munition »%1« kann nicht benutzt werden!</translation>
     </message>
@@ -3120,23 +3129,23 @@
         <translation>Hedgewars – Spitzname nicht registriert</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="360"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="337"/>
         <source>System Information Preview</source>
         <translation>Systeminformations-Vorschau</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="375"/>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="386"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="352"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="363"/>
         <source>Failed to generate captcha</source>
         <translation>Captcha-Generierung fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="403"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="380"/>
         <source>Failed to download captcha</source>
         <translation>Captcha-Download fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="467"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="444"/>
         <source>Please fill out all fields. Email is optional.</source>
         <translation>Bitte füll alle Felder aus. Das Feld »E-Mail« ist optional.</translation>
     </message>
@@ -3175,7 +3184,7 @@
 <context>
     <name>QPushButton</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="70"/>
+        <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="73"/>
         <location filename="../../../../QTfrontend/ui/page/pagetraining.cpp" line="92"/>
         <source>Go!</source>
         <translation>Los!</translation>
@@ -3245,7 +3254,7 @@
         <translation>Laden</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="655"/>
         <source>Associate file extensions</source>
         <translation>Dateitypen zuordnen</translation>
     </message>
@@ -3255,7 +3264,7 @@
         <translation>Mehr Info</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="806"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="815"/>
         <source>Set default options</source>
         <translation>Auf Standardeinstellungen zurücksetzen</translation>
     </message>
@@ -3282,7 +3291,7 @@
         <translation>Hochladen abbrechen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="807"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="816"/>
         <source>Restore default coding parameters</source>
         <translation>Standard-Kodierungs-Einstellungen wiederherstellen</translation>
     </message>
@@ -3418,6 +3427,11 @@
         <translation>Handgemalt</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="153"/>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="43"/>
         <source>Script</source>
         <translation>Stil</translation>
@@ -4314,264 +4328,264 @@
 <context>
     <name>server</name>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
         <source>Authentication failed</source>
         <translation>Authentifizierung fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
         <source>60 seconds cooldown after kick</source>
         <translation>60 Sekunden Abkühlzeit nach Hinauswurf</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
         <source>kicked</source>
         <translation>hinausgeworfen</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
         <source>Ping timeout</source>
         <translation>Ping-Timeout</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <source>bye</source>
+        <translation>tschüss</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
-        <source>bye</source>
-        <translation>tschüss</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
         <source>Your vote counted</source>
         <translation>Deine Stimme zählte</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
         <source>Pause toggled</source>
         <translation>Pause umgeschaltet</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
         <source>new seed</source>
         <translation>Neuer Seed</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
         <source>number of hedgehogs in team</source>
         <translation>Anzahl der Igel im Team</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
         <source>Empty config entry</source>
         <translation>Leerer Konfigurations-Eintrag</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
+        <source>Corrupted hedgehogs info</source>
+        <translation>Kaputte Igel-Info</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
-        <source>Corrupted hedgehogs info</source>
-        <translation>Kaputte Igel-Info</translation>
+        <source>too many teams</source>
+        <translation>zu viele Teams</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
-        <source>too many teams</source>
-        <translation>zu viele Teams</translation>
+        <source>too many hedgehogs</source>
+        <translation>zu viele Igel</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
-        <source>too many hedgehogs</source>
-        <translation>zu viele Igel</translation>
+        <source>There&apos;s already a team with same name in the list</source>
+        <translation>Es gibt bereits ein Team mit dem selben Namen in der Liste</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
-        <source>There&apos;s already a team with same name in the list</source>
-        <translation>Es gibt bereits ein Team mit dem selben Namen in der Liste</translation>
+        <source>round in progress</source>
+        <translation>laufende Runde</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
-        <source>round in progress</source>
-        <translation>laufende Runde</translation>
+        <source>restricted</source>
+        <translation>eingeschränkt</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
-        <source>restricted</source>
-        <translation>eingeschränkt</translation>
+        <source>REMOVE_TEAM: no such team</source>
+        <translation>REMOVE_TEAM: kein solches Team</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
-        <source>REMOVE_TEAM: no such team</source>
-        <translation>REMOVE_TEAM: kein solches Team</translation>
+        <source>Not team owner!</source>
+        <translation>Nicht Team-Besitzer*In!</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+        <source>Less than two clans!</source>
+        <translation>Weniger als zwei Klans!</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
-        <source>Not team owner!</source>
-        <translation>Nicht Team-Besitzer*In!</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
-        <source>Less than two clans!</source>
-        <translation>Weniger als zwei Klans!</translation>
+        <source>Room with such name already exists</source>
+        <translation>ein Raum mit einem solchen Namen existiert bereits</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
+        <source>/maxteams: specify number from 2 to 8</source>
+        <translation>/maxteams: Zahl zwischen 2 und 8 wählen</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
-        <source>Room with such name already exists</source>
-        <translation>ein Raum mit einem solchen Namen existiert bereits</translation>
+        <source>Available callvote commands: kick &lt;nickname&gt;, map &lt;name&gt;, pause, newseed, hedgehogs</source>
+        <translation>Verfügbare »callvote«-Befehle: kick &lt;Spitzname&gt;, map &lt;Name&gt;, pause, newseed, hedgehogs</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
-        <source>/maxteams: specify number from 2 to 8</source>
-        <translation>/maxteams: Zahl zwischen 2 und 8 wählen</translation>
+        <source>callvote kick: specify nickname</source>
+        <translation>callvote kick: Spitznamen festlegen</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
-        <source>Available callvote commands: kick &lt;nickname&gt;, map &lt;name&gt;, pause, newseed, hedgehogs</source>
-        <translation>Verfügbare »callvote«-Befehle: kick &lt;Spitzname&gt;, map &lt;Name&gt;, pause, newseed, hedgehogs</translation>
+        <source>callvote kick: no such user</source>
+        <translation>callvote kick: Benutzer existiert nicht</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
-        <source>callvote kick: specify nickname</source>
-        <translation>callvote kick: Spitznamen festlegen</translation>
+        <source>callvote map: no such map</source>
+        <translation>callvote map: Karte existiert nicht</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
-        <source>callvote kick: no such user</source>
-        <translation>callvote kick: Benutzer existiert nicht</translation>
+        <source>callvote pause: no game in progress</source>
+        <translation>callvote pause: es läuft kein Spiel</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
-        <source>callvote map: no such map</source>
-        <translation>callvote map: Karte existiert nicht</translation>
+        <source>callvote hedgehogs: specify number from 1 to 8</source>
+        <translation>callvote hedgehogs: Zahl zwischen 1 und 8 wählen</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
+        <source>Illegal room name</source>
+        <translation>Verbotener Raumname</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
+        <source>No such room</source>
+        <translation>Ein solcher Raum existiert nicht</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
+        <source>Joining restricted</source>
+        <translation>Zutritt verboten</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
+        <source>Registered users only</source>
+        <translation>Nur für registrierte Benutzer</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+        <source>You are banned in this room</source>
+        <translation>Du wurdest aus diesem Raum verbannt</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
+        <source>Nickname already chosen</source>
+        <translation>Spitzname bereits gewählt</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
+        <source>Illegal nickname</source>
+        <translation>Verbotener Spitzname</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
+        <source>Protocol already known</source>
+        <translation>Protokoll bereits bekannt</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+        <source>Bad number</source>
+        <translation>Schlechte Zahl</translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
-        <source>callvote pause: no game in progress</source>
-        <translation>callvote pause: es läuft kein Spiel</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
-        <source>callvote hedgehogs: specify number from 1 to 8</source>
-        <translation>callvote hedgehogs: Zahl zwischen 1 und 8 wählen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
-        <source>Illegal room name</source>
-        <translation>Verbotener Raumname</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
-        <source>No such room</source>
-        <translation>Ein solcher Raum existiert nicht</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
-        <source>Joining restricted</source>
-        <translation>Zutritt verboten</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
-        <source>Registered users only</source>
-        <translation>Nur für registrierte Benutzer</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
-        <source>You are banned in this room</source>
-        <translation>Du wurdest aus diesem Raum verbannt</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
-        <source>Nickname already chosen</source>
-        <translation>Spitzname bereits gewählt</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
-        <source>Illegal nickname</source>
-        <translation>Verbotener Spitzname</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
-        <source>Protocol already known</source>
-        <translation>Protokoll bereits bekannt</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
-        <source>Bad number</source>
-        <translation>Schlechte Zahl</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
         <source>Nickname is already in use</source>
         <translation>Spitzname bereits in Benutzung</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+        <source>Restricted</source>
+        <translation>Eingeschränkt</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
-        <source>Restricted</source>
-        <translation>Eingeschränkt</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
         <source>Not room master</source>
         <translation>Nicht Gastgeber</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
+        <source>No checker rights</source>
+        <translation>Keine Rechte zum Benutzen des Inspektionshilfsprogramms</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
+        <source>Room version incompatible to your hedgewars version</source>
+        <translation>Die Raumversion ist inkompatibel zu deiner Hedgewars-Version</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <source>You already have voted</source>
+        <translation>Du hast bereits deine Stimme abgegeben</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
+        <source>Voting closed</source>
+        <translation>Abstimmung abgeschlossen</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
+        <source>New voting started</source>
+        <translation>Neue Abstimmung gestartet</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
+        <source>Voting expired</source>
+        <translation>Abstimmung abgelaufen</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
+        <source>kick</source>
+        <translation>hinauswerfen</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
+        <source>map</source>
+        <translation>Karte</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <source>pause</source>
+        <translation>pausieren</translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
+        <source>Reconnected too fast</source>
+        <translation>Zu schnell wieder verbunden</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="39"/>
-        <source>No checker rights</source>
-        <translation>Keine Rechte zum Benutzen des Inspektionshilfsprogramms</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
-        <source>Room version incompatible to your hedgewars version</source>
-        <translation>Die Raumversion ist inkompatibel zu deiner Hedgewars-Version</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
-        <source>You already have voted</source>
-        <translation>Du hast bereits deine Stimme abgegeben</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
-        <source>Voting closed</source>
-        <translation>Abstimmung abgeschlossen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
-        <source>New voting started</source>
-        <translation>Neue Abstimmung gestartet</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
-        <source>Voting expired</source>
-        <translation>Abstimmung abgelaufen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
-        <source>kick</source>
-        <translation>hinauswerfen</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
-        <source>map</source>
-        <translation>Karte</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
-        <source>pause</source>
-        <translation>pausieren</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
-        <source>Reconnected too fast</source>
-        <translation>Zu schnell wieder verbunden</translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
         <source>Warning! Chat flood protection activated</source>
         <translatorcomment>Nicht jeder weiß, was »Flooding« heißt, daher ist die Übersetzung etwas ausführlicher.</translatorcomment>
         <translation>Achtung! Chat-Flood-Schutz ist aktiv. Bitte red etwas langsamer.</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
         <source>Excess flood</source>
         <translatorcomment>Nicht jeder weiß, was »Flooding« heißt, daher wird es hier umschrieben.</translatorcomment>
         <translation>Zu viele Nachrichten in kurzer Zeit abgeschickt</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
         <source>Game messages flood detected - 1</source>
         <translation>Zu viele Spielnachrichten in kurzer Zeit ermittelt – 1</translation>
     </message>
@@ -4580,13 +4594,13 @@
         <translation type="obsolete">Zu viele Spielnachrichten in kurzer Zeit ermittelt – 2</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
         <source>Warning! Joins flood protection activated</source>
         <translatorcomment>Nicht jeder weiß, was »Flooding« heißt, daher ist die Übersetzung etwas ausführlicher und umschreibend.</translatorcomment>
         <translation>Achtung! Der Server wird ein zu schnelles Beitreten in kurzer Zeit nicht akzeptieren</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
         <source>There&apos;s no voting going on</source>
         <translation>Zur Zeit findet keine Abstimmung statt</translation>
     </message>
--- a/share/hedgewars/Data/Locale/hedgewars_el.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_el.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="el">
+<TS version="2.1" language="el">
 <context>
     <name>About</name>
     <message>
@@ -613,6 +613,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1423,7 +1427,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished">Οι ομάδες θα ξεκινούν σε αντίθετες μεριές της πίστας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων!</translation>
+        <translation type="obsolete">Οι ομάδες θα ξεκινούν σε αντίθετες μεριές της πίστας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1553,6 +1557,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2678,6 +2686,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_en.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="en">
+<TS version="2.1" language="en">
 <context>
     <name>About</name>
     <message>
@@ -138,6 +138,20 @@
     </message>
 </context>
 <context>
+    <name>MinesTimeSpinBox</name>
+    <message>
+        <source>Random</source>
+        <translation>Random</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 seconds</source>
+        <translation>
+            <numerusform>%1 second</numerusform>
+            <numerusform>%1 seconds</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>GameCFGWidget</name>
     <message>
         <source>Edit weapons</source>
@@ -611,6 +625,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1405,7 +1423,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Teams will start on opposite sides of the terrain, two team colours max!</translation>
+        <translation type="vanished">Teams will start on opposite sides of the terrain, two team colours max!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1436,14 +1454,6 @@
         <translation>Your hogs are unable to move, put your artillery skills to the test</translation>
     </message>
     <message>
-        <source>Random</source>
-        <translation>Random</translation>
-    </message>
-    <message>
-        <source>Seconds</source>
-        <translation>Seconds</translation>
-    </message>
-    <message>
         <source>New</source>
         <translation>New</translation>
     </message>
@@ -1535,6 +1545,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2644,6 +2658,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_es.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_es.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="es">
+<TS version="2.1" language="es">
 <context>
     <name>About</name>
     <message>
@@ -619,6 +619,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1457,7 +1461,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Los equipos comenzarán en lados opuestos del terreno. ¡2 facciones como máximo!</translation>
+        <translation type="vanished">Los equipos comenzarán en lados opuestos del terreno. ¡2 facciones como máximo!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1559,6 +1563,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2684,6 +2692,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_fi.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fi">
+<TS version="2.1" language="fi">
 <context>
     <name>About</name>
     <message>
@@ -632,6 +632,10 @@
         <source>Style:</source>
         <translation>Tyyli:</translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1445,7 +1449,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Joukkueet aloittavat kartan vastakkaisista päistä, maksimissaan kaksi joukkueväriä!</translation>
+        <translation type="vanished">Joukkueet aloittavat kartan vastakkaisista päistä, maksimissaan kaksi joukkueväriä!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1575,6 +1579,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation>Meri (seinät ovat merta)</translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2705,6 +2713,10 @@
         <source>Random Perlin</source>
         <translation>Satunnainen Perlin</translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fr">
+<TS version="2.1" language="fr">
 <context>
     <name>About</name>
     <message>
@@ -644,6 +644,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1502,7 +1506,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Les équipes démarreront de chaque coté du terrain, deux couleurs d&apos;équipe au maximum !</translation>
+        <translation type="vanished">Les équipes démarreront de chaque coté du terrain, deux couleurs d&apos;équipe au maximum !</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1605,6 +1609,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2749,6 +2757,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_gl.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_gl.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="gl_ES">
+<TS version="2.1" language="gl_ES">
 <context>
     <name>About</name>
     <message>
@@ -611,6 +611,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1409,7 +1413,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Os bandos comezarán en lados opostos da superficie, máximo dous bandos!</translation>
+        <translation type="vanished">Os bandos comezarán en lados opostos da superficie, máximo dous bandos!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1539,6 +1543,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2647,6 +2655,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_hu.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="hu">
+<TS version="2.1" language="hu">
 <context>
     <name>About</name>
     <message>
@@ -605,6 +605,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1394,7 +1398,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>A csapatok a pálya két végén kezdenek. Legfeljebb két csapatszín!</translation>
+        <translation type="vanished">A csapatok a pálya két végén kezdenek. Legfeljebb két csapatszín!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1524,6 +1528,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2630,6 +2638,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_it.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="it">
+<TS version="2.1" language="it">
 <context>
     <name>About</name>
     <message>
@@ -632,6 +632,10 @@
         <source>Style:</source>
         <translation>Stile:</translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1430,7 +1434,7 @@
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>Le squadre inizieranno in lati opposti del terreno, due colori di squadra al massimo!</translation>
+        <translation type="vanished">Le squadre inizieranno in lati opposti del terreno, due colori di squadra al massimo!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
@@ -1532,6 +1536,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation>Mare (i bordi si connettono al mare)</translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2628,6 +2636,10 @@
         <source>Random Perlin</source>
         <translation>Rumore casuale</translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_ja.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="ja">
+<TS version="2.1" language="ja">
 <context>
     <name>About</name>
     <message>
@@ -609,6 +609,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1393,10 +1397,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Land can not be destroyed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1524,6 +1524,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2630,6 +2634,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_ko.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="ko">
+<TS version="2.1" language="ko">
 <context>
     <name>About</name>
     <message>
@@ -605,6 +605,10 @@
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
@@ -1362,10 +1366,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Land can not be destroyed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1493,6 +1493,10 @@
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
@@ -2583,6 +2587,10 @@
         <source>Random Perlin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
--- a/share/hedgewars/Data/Locale/hedgewars_lt.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="lt_LT">
+<TS version="2.1" language="lt_LT">
 <context>
     <name>About</name>
     <message>
@@ -110,12 +110,12 @@
 <context>
     <name>FeedbackDialog</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/>
         <source>We are always happy about suggestions, ideas, or bug reports.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/>
         <source>Send us feedback!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -125,27 +125,27 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/>
         <source>If you found a bug, you can see if it&apos;s already been reported here: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="94"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
         <source>Your email address is optional, but necessary if you want us to get back at you.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="125"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/>
         <source>View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="130"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="179"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="158"/>
         <source>Send Feedback</source>
         <translation type="unfinished"></translation>
     </message>
@@ -180,17 +180,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="132"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="134"/>
         <source>Edit schemes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="150"/>
         <source>Edit weapons</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="158"/>
         <source>Game scheme will auto-select a weapon</source>
         <translation type="unfinished"></translation>
     </message>
@@ -361,52 +361,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="661"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="663"/>
         <source>%1 has been removed from your ignore list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="671"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="673"/>
         <source>%1 has been added to your ignore list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="703"/>
         <source>%1 has been removed from your friends list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="710"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="712"/>
         <source>%1 has been added to your friends list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="778"/>
         <source>Stylesheet imported from %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="777"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="779"/>
         <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="785"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="787"/>
         <source>Couldn&apos;t read %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="793"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="795"/>
         <source>StyleSheet discarded</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="817"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="819"/>
         <source>StyleSheet saved to %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="820"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="822"/>
         <source>Failed to save StyleSheet to %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -630,133 +630,138 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="121"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="112"/>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="122"/>
         <source>Random</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="145"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="146"/>
         <source>Map preview:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="184"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
         <source>Load map drawing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="190"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/>
         <source>Edit map drawing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
-        <source>All</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/>
-        <source>Small</source>
+        <source>All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/>
-        <source>Medium</source>
+        <source>Small</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/>
-        <source>Large</source>
+        <source>Medium</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
-        <source>Cavern</source>
+        <source>Large</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+        <source>Cavern</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
         <source>Wacky</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
-        <source>Large tunnels</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/>
-        <source>Small islands</source>
+        <source>Large tunnels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/>
-        <source>Medium islands</source>
+        <source>Small islands</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/>
+        <source>Medium islands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/>
         <source>Large islands</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="760"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="772"/>
         <source>Map size:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="767"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="779"/>
         <source>Maze style:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="774"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="786"/>
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="789"/>
-        <source>Mission:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="801"/>
+        <source>Mission:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="813"/>
         <source>Map:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="884"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1012"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="901"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1029"/>
         <source>Theme: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Load drawn map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Drawn Maps</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>All files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
-        <source>Small tunnels</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/>
+        <source>Small tunnels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
         <source>Medium tunnels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="136"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="137"/>
         <source>Seed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1447,7 +1452,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="96"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="239"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="242"/>
         <source>Game</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1487,157 +1492,157 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="138"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="139"/>
         <source>New team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="147"/>
         <source>Edit team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="154"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="155"/>
         <source>Delete team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="162"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="163"/>
         <source>You can&apos;t edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="169"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="170"/>
         <source>Schemes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="178"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="180"/>
         <source>New scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="185"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="187"/>
         <source>Edit scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="192"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="194"/>
         <source>Delete scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="200"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="202"/>
         <source>Weapons</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="209"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="212"/>
         <source>New weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="216"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="219"/>
         <source>Edit weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="223"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="226"/>
         <source>Delete weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="409"/>
         <source>Frontend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="426"/>
         <source>Custom colors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
         <source>Reset to default colors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
         <source>Game audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
         <source>Frontend audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="530"/>
         <source>Account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="556"/>
         <source>Proxy settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="562"/>
         <source>Proxy host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="563"/>
         <source>Proxy port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="564"/>
         <source>Proxy login</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="565"/>
         <source>Proxy password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
         <source>No proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="579"/>
         <source>System proxy settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="580"/>
         <source>Socks5 proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="581"/>
         <source>HTTP proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
         <source>Miscellaneous</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
         <source>Updates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="676"/>
         <source>Check for updates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="690"/>
         <source>Video recording options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1705,12 +1710,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="75"/>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="79"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
         <source>Land can not be destroyed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1720,72 +1720,72 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
         <source>Lower gravity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
         <source>Assisted aiming with laser sight</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
         <source>All hogs have a personal forcefield</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="119"/>
         <source>All (living) hedgehogs are fully restored at the end of turn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
-        <source>Gain 80% of the damage you do back in health</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="107"/>
-        <source>Share your opponents pain, share their damage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="111"/>
-        <source>Your hogs are unable to move, put your artillery skills to the test</source>
+        <source>Gain 80% of the damage you do back in health</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="115"/>
+        <source>Share your opponents pain, share their damage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="107"/>
+        <source>Your hogs are unable to move, put your artillery skills to the test</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
         <source>Order of play is random instead of in room order.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="119"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
         <source>Play with a King. If he dies, your side dies.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <source>Take turns placing your hedgehogs before the start of play.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
+        <source>Ammo is shared between all teams that share a colour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="75"/>
+        <source>Disable girders when generating random maps.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="79"/>
+        <source>Disable land objects when generating random maps.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="123"/>
-        <source>Take turns placing your hedgehogs before the start of play.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
-        <source>Ammo is shared between all teams that share a colour.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
-        <source>Disable girders when generating random maps.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
-        <source>Disable land objects when generating random maps.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
         <source>AI respawns on death.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1795,22 +1795,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
         <source>Weapons are reset to starting values each turn.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
         <source>Each hedgehog has its own ammo. It does not share with the team.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
         <source>You will not have to worry about wind anymore.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
         <source>Wind will affect almost everything.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1820,37 +1820,42 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
         <source>Add an indestructible border along the bottom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="324"/>
+        <source>Random</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="325"/>
-        <source>Random</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="326"/>
         <source>Seconds</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="408"/>
+        <source>None (Default)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="409"/>
-        <source>None (Default)</source>
+        <source>Wrap (World wraps)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="410"/>
-        <source>Wrap (World wraps)</source>
+        <source>Bounce (Edges reflect)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="411"/>
-        <source>Bounce (Edges reflect)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="412"/>
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1873,22 +1878,22 @@
 <context>
     <name>PageSelectWeapon</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="48"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="46"/>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
         <source>New</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="50"/>
-        <source>Copy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="51"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="52"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2020,23 +2025,23 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="274"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="910"/>
         <source>Ignore</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="278"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="922"/>
         <source>Add friend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="900"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
         <source>Unignore</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="912"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
         <source>Remove friend</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2079,115 +2084,115 @@
 <context>
     <name>QCheckBox</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
         <source>Show ammo menu tooltips</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="365"/>
         <source>Alternative damage show</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
-        <source>Team</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
-        <source>Enable team tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
-        <source>Hog</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
-        <source>Enable hedgehog tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
-        <source>Health</source>
+        <source>Team</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="387"/>
+        <source>Enable team tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
-        <source>Enable health tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
-        <source>Translucent</source>
+        <source>Hog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="391"/>
+        <source>Enable hedgehog tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+        <source>Health</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="395"/>
+        <source>Enable health tags by default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="398"/>
+        <source>Translucent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="399"/>
         <source>Enable translucent tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
         <source>Visual effects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="494"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
         <source>Sound</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="495"/>
         <source>In-game sound effects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/>
         <source>Music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
         <source>In-game music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
-        <source>Frontend sound effects</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
+        <source>Frontend sound effects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="517"/>
         <source>Frontend music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
         <source>Append date and time to record file name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="669"/>
         <source>Check for updates at startup</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="415"/>
         <source>Fullscreen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="354"/>
         <source>Show FPS</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="547"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2202,12 +2207,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/>
         <source>Record audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="782"/>
         <source>Use game resolution</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2225,87 +2230,87 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="298"/>
         <source>Community</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/>
         <source>(System default)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/>
-        <source>Disabled</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/>
-        <source>Red/Cyan</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/>
-        <source>Cyan/Red</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/>
-        <source>Red/Blue</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="317"/>
-        <source>Blue/Red</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/>
-        <source>Red/Green</source>
+        <source>Disabled</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/>
-        <source>Green/Red</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/>
-        <source>Side-by-side</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/>
-        <source>Top-Bottom</source>
+        <source>Red/Cyan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/>
-        <source>Red/Cyan grayscale</source>
+        <source>Cyan/Red</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/>
-        <source>Cyan/Red grayscale</source>
+        <source>Red/Blue</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/>
-        <source>Red/Blue grayscale</source>
+        <source>Blue/Red</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/>
-        <source>Blue/Red grayscale</source>
+        <source>Red/Green</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/>
-        <source>Red/Green grayscale</source>
+        <source>Green/Red</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="331"/>
+        <source>Side-by-side</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="332"/>
+        <source>Top-Bottom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/>
+        <source>Red/Cyan grayscale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/>
+        <source>Cyan/Red grayscale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/>
+        <source>Red/Blue grayscale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="328"/>
+        <source>Blue/Red grayscale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="329"/>
+        <source>Red/Green grayscale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="330"/>
         <source>Green/Red grayscale</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2323,7 +2328,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="150"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="153"/>
         <source>Fort</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2376,12 +2381,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="127"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="129"/>
         <source>Scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="139"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="141"/>
         <source>Weapons</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2442,157 +2447,157 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="617"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="622"/>
         <source>Locale</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="531"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
         <source>Nickname</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="632"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="638"/>
         <source>This setting will be effective at next restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="749"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="758"/>
         <source>Resolution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="295"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="299"/>
         <source>Quality</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="250"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="253"/>
         <source>Fullscreen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="255"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="258"/>
         <source>Fullscreen Resolution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="265"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="269"/>
         <source>Windowed Resolution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="309"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/>
         <source>Stereo rendering</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="372"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/>
         <source>Displayed tags above hogs and translucent tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="477"/>
         <source>Initial sound volume</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="340"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="345"/>
         <source>FPS limit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="175"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="174"/>
         <source>Damage Modifier</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="189"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="188"/>
         <source>Turn Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="203"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="202"/>
         <source>Initial Health</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="217"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="216"/>
         <source>Sudden Death Timeout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="231"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="230"/>
         <source>Sudden Death Water Rise</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="245"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="244"/>
         <source>Sudden Death Health Decrease</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="259"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="258"/>
         <source>% Rope Length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="273"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="272"/>
         <source>Crate Drops</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="286"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="285"/>
         <source>% Health Crates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="300"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="299"/>
         <source>Health in Crates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="314"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="313"/>
         <source>Mines Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="330"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="329"/>
         <source>Mines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="344"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="343"/>
         <source>% Dud Mines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="358"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="357"/>
         <source>Explosives</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="372"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="371"/>
         <source>Air Mines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="386"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="385"/>
         <source>% Get Away Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="400"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="399"/>
         <source>World Edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="418"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="417"/>
         <source>Script parameter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="432"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="431"/>
         <source>Scheme Name:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2634,52 +2639,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="104"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="97"/>
         <source>Your Email</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="112"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="103"/>
         <source>Summary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="122"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="109"/>
         <source>Send system information</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="137"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="119"/>
         <source>Description</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="165"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="142"/>
         <source>Type the security code:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="693"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="699"/>
         <source>Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="713"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="720"/>
         <source>Audio codec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/>
         <source>Video codec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="779"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="788"/>
         <source>Framerate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="793"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="802"/>
         <source>Bitrate (Kbps)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2693,12 +2698,12 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/team.cpp" line="44"/>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="307"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="310"/>
         <source>hedgehog %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/>
         <source>anonymous</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2714,12 +2719,12 @@
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="361"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="364"/>
         <source>Teams - Are you sure?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="362"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="365"/>
         <source>Do you really want to delete the team &apos;%1&apos;?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2761,35 +2766,35 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="350"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="327"/>
         <location filename="../../../../QTfrontend/util/MessageDialog.cpp" line="26"/>
         <source>Hedgewars - Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="360"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="337"/>
         <source>System Information Preview</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="375"/>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="386"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="352"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="363"/>
         <source>Failed to generate captcha</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="403"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="380"/>
         <source>Failed to download captcha</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="467"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="444"/>
         <source>Please fill out all fields. Email is optional.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/hwform.cpp" line="2028"/>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="437"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="414"/>
         <source>Hedgewars - Success</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2804,12 +2809,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="373"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="376"/>
         <source>Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="374"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="377"/>
         <source>Cannot use the ammo &apos;%1&apos;!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2941,7 +2946,7 @@
     <message>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="146"/>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="166"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="973"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="990"/>
         <source>File error</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2952,7 +2957,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="167"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="974"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="991"/>
         <source>Cannot open &apos;%1&apos; for reading</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3021,7 +3026,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="70"/>
+        <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="73"/>
         <location filename="../../../../QTfrontend/ui/page/pagetraining.cpp" line="92"/>
         <source>Go!</source>
         <translation type="unfinished"></translation>
@@ -3077,7 +3082,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="655"/>
         <source>Associate file extensions</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3110,12 +3115,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="806"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="815"/>
         <source>Set default options</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="807"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="816"/>
         <source>Restore default coding parameters</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3253,6 +3258,11 @@
         <source>Hand-drawn</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="153"/>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SeedPrompt</name>
@@ -4113,272 +4123,272 @@
 <context>
     <name>server</name>
     <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+        <source>Restricted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
-        <source>Restricted</source>
+        <source>Not room master</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
-        <source>Not room master</source>
+        <source>Corrupted hedgehogs info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
-        <source>Corrupted hedgehogs info</source>
+        <source>too many teams</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
-        <source>too many teams</source>
+        <source>too many hedgehogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
-        <source>too many hedgehogs</source>
+        <source>There&apos;s already a team with same name in the list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
-        <source>There&apos;s already a team with same name in the list</source>
+        <source>round in progress</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
-        <source>round in progress</source>
+        <source>restricted</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
-        <source>restricted</source>
+        <source>REMOVE_TEAM: no such team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
-        <source>REMOVE_TEAM: no such team</source>
+        <source>Not team owner!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+        <source>Less than two clans!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <source>You already have voted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
+        <source>Your vote counted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
+        <source>Voting closed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
+        <source>Pause toggled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
+        <source>New voting started</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
+        <source>Voting expired</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
+        <source>kick</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
+        <source>map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <source>pause</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
+        <source>new seed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
+        <source>number of hedgehogs in team</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
+        <source>Illegal room name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
-        <source>Not team owner!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
-        <source>Less than two clans!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
-        <source>You already have voted</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
-        <source>Your vote counted</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
-        <source>Voting closed</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
-        <source>Pause toggled</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
-        <source>New voting started</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
-        <source>Voting expired</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
-        <source>kick</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
-        <source>map</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
-        <source>pause</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
-        <source>new seed</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
-        <source>number of hedgehogs in team</source>
+        <source>Room with such name already exists</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
-        <source>Illegal room name</source>
+        <source>/maxteams: specify number from 2 to 8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
-        <source>Room with such name already exists</source>
+        <source>Available callvote commands: kick &lt;nickname&gt;, map &lt;name&gt;, pause, newseed, hedgehogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
-        <source>/maxteams: specify number from 2 to 8</source>
+        <source>callvote kick: specify nickname</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
-        <source>Available callvote commands: kick &lt;nickname&gt;, map &lt;name&gt;, pause, newseed, hedgehogs</source>
+        <source>callvote kick: no such user</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
-        <source>callvote kick: specify nickname</source>
+        <source>callvote map: no such map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
-        <source>callvote kick: no such user</source>
+        <source>callvote pause: no game in progress</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
-        <source>callvote map: no such map</source>
+        <source>callvote hedgehogs: specify number from 1 to 8</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
+        <source>Nickname already chosen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
+        <source>Illegal nickname</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
+        <source>Protocol already known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+        <source>Bad number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
-        <source>callvote pause: no game in progress</source>
+        <source>Nickname is already in use</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
-        <source>callvote hedgehogs: specify number from 1 to 8</source>
+        <source>No checker rights</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
-        <source>Nickname already chosen</source>
+        <source>Authentication failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
-        <source>Illegal nickname</source>
+        <source>60 seconds cooldown after kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
-        <source>Protocol already known</source>
+        <source>kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
-        <source>Bad number</source>
+        <source>Reconnected too fast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
-        <source>Nickname is already in use</source>
+        <source>Ping timeout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <source>bye</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
+        <source>No such room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
+        <source>Room version incompatible to your hedgewars version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
+        <source>Joining restricted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
+        <source>Registered users only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+        <source>You are banned in this room</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="39"/>
-        <source>No checker rights</source>
+        <source>Warning! Chat flood protection activated</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
-        <source>Authentication failed</source>
+        <source>Excess flood</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
-        <source>60 seconds cooldown after kick</source>
+        <source>Game messages flood detected - 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
-        <source>kicked</source>
+        <source>Warning! Joins flood protection activated</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
-        <source>Reconnected too fast</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
-        <source>Ping timeout</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
-        <source>bye</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
-        <source>No such room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
-        <source>Room version incompatible to your hedgewars version</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
-        <source>Joining restricted</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
-        <source>Registered users only</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
-        <source>You are banned in this room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
-        <source>Warning! Chat flood protection activated</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
-        <source>Excess flood</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
-        <source>Game messages flood detected - 1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
-        <source>Warning! Joins flood protection activated</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
         <source>There&apos;s no voting going on</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
         <source>Empty config entry</source>
         <translation type="unfinished"></translation>
     </message>
--- a/share/hedgewars/Data/Locale/hedgewars_ms.ts	Tue May 17 23:18:08 2016 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_ms.ts	Tue May 17 23:29:49 2016 +0300
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="ms_MY">
+<TS version="2.1" language="ms_MY">
 <context>
     <name>About</name>
     <message>
@@ -110,12 +110,12 @@
 <context>
     <name>FeedbackDialog</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/>
         <source>We are always happy about suggestions, ideas, or bug reports.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/>
         <source>Send us feedback!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -125,27 +125,27 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/>
         <source>If you found a bug, you can see if it&apos;s already been reported here: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="94"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/>
         <source>Your email address is optional, but necessary if you want us to get back at you.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="125"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/>
         <source>View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="130"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="179"/>
+        <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="158"/>
         <source>Send Feedback</source>
         <translation type="unfinished"></translation>
     </message>
@@ -178,17 +178,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="132"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="134"/>
         <source>Edit schemes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="150"/>
         <source>Edit weapons</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="158"/>
         <source>Game scheme will auto-select a weapon</source>
         <translation type="unfinished"></translation>
     </message>
@@ -349,52 +349,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="661"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="663"/>
         <source>%1 has been removed from your ignore list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="671"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="673"/>
         <source>%1 has been added to your ignore list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="703"/>
         <source>%1 has been removed from your friends list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="710"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="712"/>
         <source>%1 has been added to your friends list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="778"/>
         <source>Stylesheet imported from %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="777"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="779"/>
         <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="785"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="787"/>
         <source>Couldn&apos;t read %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="793"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="795"/>
         <source>StyleSheet discarded</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="817"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="819"/>
         <source>StyleSheet saved to %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="820"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="822"/>
         <source>Failed to save StyleSheet to %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -618,133 +618,138 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="121"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="112"/>
+        <source>Forts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="122"/>
         <source>Random</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="145"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="146"/>
         <source>Map preview:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="184"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
         <source>Load map drawing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="190"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/>
         <source>Edit map drawing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
-        <source>All</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/>
-        <source>Small</source>
+        <source>All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/>
-        <source>Medium</source>
+        <source>Small</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/>
-        <source>Large</source>
+        <source>Medium</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
-        <source>Cavern</source>
+        <source>Large</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+        <source>Cavern</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
         <source>Wacky</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
-        <source>Large tunnels</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/>
-        <source>Small islands</source>
+        <source>Large tunnels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/>
-        <source>Medium islands</source>
+        <source>Small islands</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/>
+        <source>Medium islands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/>
         <source>Large islands</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="760"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="772"/>
         <source>Map size:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="767"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="779"/>
         <source>Maze style:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="774"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="786"/>
         <source>Style:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="789"/>
-        <source>Mission:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="801"/>
+        <source>Mission:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="813"/>
         <source>Map:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="884"/>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1012"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="901"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="1029"/>
         <source>Theme: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Load drawn map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>Drawn Maps</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="963"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="980"/>
         <source>All files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
-        <source>Small tunnels</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/>
+        <source>Small tunnels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/>
         <source>Medium tunnels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="136"/>
+        <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="137"/>
         <source>Seed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1419,7 +1424,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="96"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="239"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="242"/>
         <source>Game</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1459,157 +1464,157 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="138"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="139"/>
         <source>New team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="147"/>
         <source>Edit team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="154"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="155"/>
         <source>Delete team</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="162"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="163"/>
         <source>You can&apos;t edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="169"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="170"/>
         <source>Schemes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="178"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="180"/>
         <source>New scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="185"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="187"/>
         <source>Edit scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="192"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="194"/>
         <source>Delete scheme</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="200"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="202"/>
         <source>Weapons</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="209"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="212"/>
         <source>New weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="216"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="219"/>
         <source>Edit weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="223"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="226"/>
         <source>Delete weapon set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="409"/>
         <source>Frontend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="426"/>
         <source>Custom colors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
         <source>Reset to default colors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
         <source>Game audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
         <source>Frontend audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="530"/>
         <source>Account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="556"/>
         <source>Proxy settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="562"/>
         <source>Proxy host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="563"/>
         <source>Proxy port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="564"/>
         <source>Proxy login</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="565"/>
         <source>Proxy password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
         <source>No proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="579"/>
         <source>System proxy settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="580"/>
         <source>Socks5 proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="581"/>
         <source>HTTP proxy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
         <source>Miscellaneous</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
         <source>Updates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="676"/>
         <source>Check for updates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="690"/>
         <source>Video recording options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1675,12 +1680,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="75"/>
-        <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="79"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
         <source>Land can not be destroyed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1690,72 +1690,72 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
         <source>Lower gravity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="91"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
         <source>Assisted aiming with laser sight</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="95"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
         <source>All hogs have a personal forcefield</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="119"/>
         <source>All (living) hedgehogs are fully restored at the end of turn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
-        <source>Gain 80% of the damage you do back in health</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="107"/>
-        <source>Share your opponents pain, share their damage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="111"/>
-        <source>Your hogs are unable to move, put your artillery skills to the test</source>
+        <source>Gain 80% of the damage you do back in health</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="115"/>
+        <source>Share your opponents pain, share their damage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="107"/>
+        <source>Your hogs are unable to move, put your artillery skills to the test</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
         <source>Order of play is random instead of in room order.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="119"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
         <source>Play with a King. If he dies, your side dies.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <source>Take turns placing your hedgehogs before the start of play.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
+        <source>Ammo is shared between all teams that share a colour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="75"/>
+        <source>Disable girders when generating random maps.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="79"/>
+        <source>Disable land objects when generating random maps.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="123"/>
-        <source>Take turns placing your hedgehogs before the start of play.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="127"/>
-        <source>Ammo is shared between all teams that share a colour.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
-        <source>Disable girders when generating random maps.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="135"/>
-        <source>Disable land objects when generating random maps.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
         <source>AI respawns on death.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1765,22 +1765,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="147"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="139"/>
         <source>Weapons are reset to starting values each turn.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="151"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="131"/>
         <source>Each hedgehog has its own ammo. It does not share with the team.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="155"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="99"/>
         <source>You will not have to worry about wind anymore.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="103"/>
         <source>Wind will affect almost everything.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1790,37 +1790,42 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="167"/>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="87"/>
         <source>Add an indestructible border along the bottom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="159"/>
+        <source>Each clan starts in its own part of the terrain.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="324"/>
+        <source>Random</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="325"/>
-        <source>Random</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="326"/>
         <source>Seconds</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="408"/>
+        <source>None (Default)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="409"/>
-        <source>None (Default)</source>
+        <source>Wrap (World wraps)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="410"/>
-        <source>Wrap (World wraps)</source>
+        <source>Bounce (Edges reflect)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="411"/>
-        <source>Bounce (Edges reflect)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="412"/>
         <source>Sea (Edges connect to sea)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1843,22 +1848,22 @@
 <context>
     <name>PageSelectWeapon</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="46"/>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
         <source>New</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="47"/>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="48"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="50"/>
-        <source>Copy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="51"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageselectweapon.cpp" line="52"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2003,23 +2008,23 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="274"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="910"/>
         <source>Ignore</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="278"/>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="922"/>
         <source>Add friend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="900"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="905"/>
         <source>Unignore</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="912"/>
+        <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="917"/>
         <source>Remove friend</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2048,7 +2053,7 @@
     <name>QCheckBox</name>
     <message>
         <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="547"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2063,119 +2068,119 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="669"/>
         <source>Check for updates at startup</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="415"/>
         <source>Fullscreen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="365"/>
         <source>Alternative damage show</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="354"/>
         <source>Show FPS</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
         <source>Show ammo menu tooltips</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
-        <source>Team</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
-        <source>Enable team tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
-        <source>Hog</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
-        <source>Enable hedgehog tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
-        <source>Health</source>
+        <source>Team</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="387"/>
+        <source>Enable team tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
-        <source>Enable health tags by default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
-        <source>Translucent</source>
+        <source>Hog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="391"/>
+        <source>Enable hedgehog tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+        <source>Health</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="395"/>
+        <source>Enable health tags by default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="398"/>
+        <source>Translucent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="399"/>
         <source>Enable translucent tags by default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
         <source>Visual effects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="494"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
         <source>Sound</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="495"/>
         <source>In-game sound effects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/>
         <source>Music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
         <source>In-game music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
-        <source>Frontend sound effects</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
+        <source>Frontend sound effects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="517"/>
         <source>Frontend music</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
         <source>Append date and time to record file name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/>
         <source>Record audio</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="782"/>
         <source>Use game resolution</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2193,87 +2198,87 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
+        <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="298"/>
         <source>Community</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
+        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/>
         <source>(System default)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/>
-        <source>Disabled</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/>
-        <source>Red/Cyan</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/>
-        <source>Cyan/Red</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/>
-        <source>Red/Blue<