merge
authornemo
Mon, 24 Sep 2018 11:18:48 -0400
changeset 13812 1f15b0ee8e34
parent 13811 54725a1d1db8 (current diff)
parent 13799 ced1e6ecaaad (diff)
child 13813 5c6052351991
merge
--- a/.travis.yml	Mon Sep 24 11:16:08 2018 -0400
+++ b/.travis.yml	Mon Sep 24 11:18:48 2018 -0400
@@ -65,7 +65,7 @@
 
 install: |
   if [ "$TRAVIS_OS_NAME" == "linux" ]; then
-    sudo apt-get install -y debhelper cmake dpkg-dev qtbase5-dev qtbase5-private-dev qttools5-dev-tools qttools5-dev libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-network-dev libghc-sandi-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev libghc-regex-tdfa-dev liblua5.1-0-dev fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev libglew1.6-dev
+    sudo apt-get install -y debhelper cmake dpkg-dev qtbase5-dev qtbase5-private-dev qttools5-dev-tools qttools5-dev libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-network-dev libghc-sandi-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev libghc-regex-tdfa-dev libghc-aeson-dev libghc-yaml-dev libghc-text-dev liblua5.1-0-dev 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 qt5
     brew install fpc glew physfs lua51 sdl2 sdl2_image sdl2_net sdl2_ttf ffmpeg ghc cabal-install
--- a/ChangeLog.txt	Mon Sep 24 11:16:08 2018 -0400
+++ b/ChangeLog.txt	Mon Sep 24 11:18:48 2018 -0400
@@ -9,6 +9,7 @@
  + Increase hedgehog limit to 64
  + Campaigns and missions now use the user's chosen custom clan colors
  + New default brown clan color for better contrast
+ + Allow to change volume during pause
  * Functionality of controllers restored
  * Fix crash when 2 or more controllers were connected
  * Fix hammer and pickhammer not digging correctly at wrap world edge
@@ -24,15 +25,21 @@
  * Fix invisible projectile timer, attack bar, target on other side of wrap world edge
  * Fix attack bar drawn over GUI elements
  * Fix hog being unable to walk after using sniper rifle without firing both shots
+ * Fix bee weapon becoming unusable when hitting attack key in mid-air
  * Fix video recorder not working when game audio was disabled
  * Fix cursor teleporting to center after leaving game with a video recording
  * Fix teleport tooltip claiming it doesn't end turn in hog placing phase with inf. attack
  * Fix /hta, /hsa and /hya commands not writing message in chat
  * Limit hedgehog health to 268435455 to prevent some bugs
  * Fix Sudden Death starting in the second turn of a round rather than the first
+ * Prevent voices from being spoken directly before a victory voice
+ * Fix damage not being displayed if hog drowns in water with 100% opacity (like in Compost theme)
+ * Fix retreat timer appearing after using baseball bat or whip and immediately taking damage
 
 Frontend:
  + Add setting to disable audio dampening when losing window focus
+ + Rework player rankings: Losing clans are now ranked in the reverse order they died
+ * Fix player rankings on round draw: Clans that died in the same turn now have the same rank
  * Fix rare crash when aborting video encoding in progress
  * Fix critical failure to cleanup teams list after rejoining game under certain conditions
  * Controllers are detected again
@@ -47,6 +54,12 @@
 TechRacer:
  * Fix rare bug causing crates and other objects to not appear on start of turn
 
+Balanced Random Weapon:
+ + Can adjust weapon start and crate probabilities
+
+Random Weapon:
+ * Fix breakage when enabling per-hog ammo
+
 Continental supplies:
  + Continents are now selected before the game starts
  + Continents give hog different start health
@@ -67,6 +80,7 @@
 Space Invasion:
  + Display round score in a separate row
  + Keep round score displayed after round ends, remove round score announcer message
+ + If team scores are tied at the end, continue playing rounds with the tied teams until there's a winner
  * Fix rare Lua error message spam at end of game
  * Fix round score and other info numbers messing up after screen resize
  * Fix kamikaze bonus not being shown
@@ -75,9 +89,13 @@
  * A Classic Fairytale: Fix clan membership of princess in some missions
  * A Classic Fairytale, Mission 5: Tribe was not in same clan as Natives, screwing up stats a bit
  + A Space Adventure, final mission: Terrain types are easier to distinguish
- * A Space Adeventure: Fix clan membership of PAotH in main Death Planet mission
+ * A Space Adventure, Searching in the Dust: Fix display error when destroying device crate
+ * A Space Adventure, Searching in the Dust: Don't take away control right above the pit near Sandy
+ * A Space Adventure: Fix clan membership of PAotH in main Death Planet mission
+ * A Space Adventure, final mission: Don't say "Missed" or "Yes, Sir!" when inappropriate
  * The Great Escape: Infinite attack mode did not work
  * Shotgun/Sniper Rifle Target Practicse: Suppress “X remaining” message
+ * Basic Movement Training: Back jumps should be easier now
  * Fix resurrection animation appearing at wrong position for some missions and styles
 
 Content:
@@ -92,6 +110,9 @@
  * Fix many server messages being not translated
 
 Lua API:
+ * Deprecation: Setting TurnTimeLeft/ReadyTimeLeft directly is deprecated and will become useless in future. Use the setter functions below
+ + New call: SetTurnTimeLeft(newTurnTimeLeft): Set remaining turn time
+ + New call: SetReadyTimeLeft(newReadyTimeLeft): Set remaining ready time
  + New call: Retreat(time [, respectGetAwayTimeFactor): Force current turn into retreating mode
  + New call: GetAmmoTimer(gearUid, ammoType): Returns current set timer for given ammoType and hog gear in ms. Returns nil for non-timerable ammo
  + New call: EnableSwitchHog(): Enable hog switching
@@ -100,22 +121,26 @@
  + New call: GetLaserSight(): Returns true if laser sight (as utility) is currenctly active (ignoring sniper rifle)
  + New call: IsHogHidden(gear): Returns true if hog is hidden
  + Changed call: AddTeam: 2nd param. color: Accepts negative value to use a default clan color from player settings
+ + Changed call: HedgewarsScriptLoad: 2nd param. mustExist. If false, it's allowed for the script to not exist
+ + Changed call: HedgewarsScriptLoad: Return true on success and false on failure
  + Change callback: onGearResurrect: 2nd parameter for visual gear spawned at resurrect position (might be nil)
  + New parameter: SetAmmoTexts: 5th param. showExtra: Set to false to hide texts like “Not yet available”
  + New parameter: ShowMission: 6th param. forceDisplay: Set to true to prevent this particular mission panel to be hidden manually by player
+ + Can set custom team rank: Call SendStat with 1st param siTeamRank and 2nd param to the desired rank, as string. Must be called before siPlayerKills of the team for which this applies
  + New Lua library: Achievements
  + Add sprite tint globals in Utilts library: U_LAND_TINT_NORMAL, U_LAND_TINT_ICE, U_LAND_TINT_INDESTRUCTIBLE and U_LAND_TINT_BOUNCY
- + Can enable infinite fly time for jetpack/Birdy by setting health to JETPACK_FUEL_INFINITE or BIRDY_ENERGY_INFINITE, respectively
+ + New globals: Infinite fly time for jetpack/Birdy by setting health to JETPACK_FUEL_INFINITE or BIRDY_ENERGY_INFINITE, respectively
  + New global game variable: MaxCaseDrops. Max. number of crats which can be in game by crate drops
- + New global: NoPointX. Value of CursorX and CursorY if cursor is inactive
+ + New global: NO_CURSOR. Value of CursorX and CursorY if cursor is inactive
  + New global: AMMO_INFINITE. Value for infinite ammo count for AddAmmo and other functions
- + New global: cMaxHogHealth. Maximum possible hedgehog health
- + New global: cMaxTurnTime. Maximum possible turn time
+ + New global: MAX_HOG_HEALTH. Maximum possible hedgehog health
+ + New global: MAX_TURN_TIME. Maximum possible turn time
  + New global: EXPLForceDraw. Flag for Explode function, forces land removal even with gfSolidLand on
  + New globals: capcolDefault, capcolSetting: Default caption colors
  * Animate library: Remove defunct follow argument for AnimVisualGear
  * Changed global: lfCurrentHog becomes lfCurHogCrate
  * Fixed variable: TotalRounds was -1 (instead of 0) in first real round after hog placement phase
+ * Fixed variables: LeftX, RightX, TopY, LAND_WIDTH, LAND_HEIGHT were broken if onVisualGearAdd was defined
  * AI sometimes intentionally shot hedgehogs with aihDoesntMatter set
 
 ====================== 0.9.24.1 ====================
--- a/INSTALL.md	Mon Sep 24 11:16:08 2018 -0400
+++ b/INSTALL.md	Mon Sep 24 11:18:48 2018 -0400
@@ -7,6 +7,8 @@
 
 Dependencies
 ------------
+### Hardware dependencies
+See README.md.
 
 ### Core dependencies
 
--- a/QTfrontend/hedgewars.qrc	Mon Sep 24 11:16:08 2018 -0400
+++ b/QTfrontend/hedgewars.qrc	Mon Sep 24 11:18:48 2018 -0400
@@ -209,6 +209,7 @@
         <file>res/StatsMostSelfDamage.png</file>
         <file>res/StatsSelfKilled.png</file>
         <file>res/StatsSkipped.png</file>
+        <file>res/StatsEverAfter.png</file>
         <file>res/StatsCustomAchievement.png</file>
         <file>res/Start.png</file>
         <file>res/mapRandom.png</file>
--- a/QTfrontend/hwconsts.cpp.in	Mon Sep 24 11:16:08 2018 -0400
+++ b/QTfrontend/hwconsts.cpp.in	Mon Sep 24 11:18:48 2018 -0400
@@ -79,6 +79,9 @@
         << qMakePair(QString("Highlander"), QString(
             AMMOLINE_HIGHLANDER_QT AMMOLINE_HIGHLANDER_PROB
             AMMOLINE_HIGHLANDER_DELAY AMMOLINE_HIGHLANDER_CRATE ))
+        << qMakePair(QString("Balanced Random Weapon"), QString(
+            AMMOLINE_BRW_QT AMMOLINE_BRW_PROB
+            AMMOLINE_BRW_DELAY AMMOLINE_BRW_CRATE ))
         << qMakePair(QString("Construction Mode"),   QString(
             AMMOLINE_CONSTRUCTION_QT AMMOLINE_CONSTRUCTION_PROB
             AMMOLINE_CONSTRUCTION_DELAY AMMOLINE_CONSTRUCTION_CRATE ))
Binary file QTfrontend/res/StatsEverAfter.png has changed
Binary file QTfrontend/res/btnTagTeam.png has changed
Binary file QTfrontend/res/btnTagTeam@2x.png has changed
--- a/QTfrontend/ui/page/pagegamestats.cpp	Mon Sep 24 11:16:08 2018 -0400
+++ b/QTfrontend/ui/page/pagegamestats.cpp	Mon Sep 24 11:18:48 2018 -0400
@@ -152,6 +152,7 @@
     labelGameRank->setText("");
     labelGameWin->setText("");
     playerPosition = 0;
+    scriptPlayerPosition = 0;
     lastColor = 0;
 }
 
@@ -326,7 +327,13 @@
             if (lastColor == c) playerPosition--;
             lastColor = c;
 
-            switch (playerPosition)
+            unsigned int realPlayerPosition;
+            if(scriptPlayerPosition == 0)
+                realPlayerPosition = playerPosition;
+            else
+                realPlayerPosition = scriptPlayerPosition;
+
+            switch (realPlayerPosition)
             {
                 case 1:
                     image = "<img src=\":/res/StatsMedal1.png\">";
@@ -353,9 +360,10 @@
                 kindOfPoints = QString("");
             }
 
-            message = QString("<p><h2>%1 %2. <font color=\"%4\">%3</font> ").arg(image, QString::number(playerPosition), playername, clanColor.name()) + killstring + "</h2></p>";
+            message = QString("<p><h2>%1 %2. <font color=\"%4\">%3</font> ").arg(image, QString::number(realPlayerPosition), playername, clanColor.name()) + killstring + "</h2></p>";
 
             labelGameRank->setText(labelGameRank->text() + message);
+            scriptPlayerPosition = 0;
             break;
         }
         case 's' :
@@ -388,6 +396,16 @@
             AddStatText(message);
             break;
         }
-
+        case 'R' :
+        {
+            scriptPlayerPosition = info.toInt();
+            break;
+        }
+        case 'h' :
+        {
+            QString message = "<p><img src=\":/res/StatsEverAfter.png\"> " + PageGameStats::tr("With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.") + "</p>";
+            AddStatText(message);
+            break;
+        }
     }
 }
--- a/QTfrontend/ui/page/pagegamestats.h	Mon Sep 24 11:16:08 2018 -0400
+++ b/QTfrontend/ui/page/pagegamestats.h	Mon Sep 24 11:18:48 2018 -0400
@@ -68,6 +68,7 @@
 
         QMap<qint32, QVector<qint32> > healthPoints;
         unsigned int playerPosition;
+        unsigned int scriptPlayerPosition;
         quint32 lastColor;
         bool defaultGraphTitle;
         QScopedPointer<QGraphicsScene> m_scene;
--- a/QTfrontend/weapons.h	Mon Sep 24 11:16:08 2018 -0400
+++ b/QTfrontend/weapons.h	Mon Sep 24 11:18:48 2018 -0400
@@ -124,10 +124,15 @@
 #define AMMOLINE_ONEEVERY_DELAY "00000000000000000000000000000000000000000000000000000000000"
 #define AMMOLINE_ONEEVERY_CRATE "11111101111111111111111111111111111111111111111111111111111"
 
+#define AMMOLINE_BRW_QT         "33323392332332322323233131122113000003232203022022200020301"
+#define AMMOLINE_BRW_PROB       "00000000000000000000000000000000111110000000000000000000000"
+#define AMMOLINE_BRW_DELAY      "00000000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_BRW_CRATE      "11111101111111111111111111111111111111111111111111111111111"
+
 #define AMMOLINE_HIGHLANDER_QT    "11111191111111111111019111111111100101111101111001001011101"
 #define AMMOLINE_HIGHLANDER_PROB  "00000000000000000000000000000000000000000000000000000000000"
 #define AMMOLINE_HIGHLANDER_DELAY "00000000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_HIGHLANDER_CRATE "00000000000000000090000000000000000000000000000000000000000"
+#define AMMOLINE_HIGHLANDER_CRATE "00000000000000000000000000000000000000000000000000000000000"
 
 #define AMMOLINE_CONSTRUCTION_QT    "11000190000000100100900000000000000000000000000000000000000"
 #define AMMOLINE_CONSTRUCTION_PROB  "11111101111111100100011111101111111111111101111100101110101"
--- a/README.md	Mon Sep 24 11:16:08 2018 -0400
+++ b/README.md	Mon Sep 24 11:18:48 2018 -0400
@@ -101,6 +101,24 @@
 * Precise + Toggle team bars + Switch: Toggle HUD
 * Precise + Capture (screenshot key): Save current map + mask into Screenshot directory
 
+System requirements
+-------------------
+For PC or Mac:
+
+* Mouse and keyboard
+* Monitor, minimal resolution 1024×768
+* 200 MiB storage space
+* Processor: 1 GHz (1 core is enough), 64bit recommended
+* Video card: 250 MHz or so
+              (any decent card from the year 2004 or later should do fine)
+* 1 GiB RAM minimum
+* Operating system: Windows Vista/7/8/10, GNU/Linux, macOS, FreeBSD, others
+
+Hedgewars has been ported to other operating systems in the past.
+Check out <https://hedgewars.org/download.html> for the latest information.
+
+Gamepads are supported partially (only in-game, not in the main menu).
+
 Installation instructions
 -------------------------
 See the `INSTALL.md` file.
@@ -145,5 +163,4 @@
 * Homepage        - https://hedgewars.org/
 * IRC channel     - irc://irc.freenode.net/hedgewars
 * Community forum - https://hedgewars.org/forum
-* Mailing list    - https://mail.gna.org/listinfo/hedgewars-dev
 
--- a/gameServer/Actions.hs	Mon Sep 24 11:16:08 2018 -0400
+++ b/gameServer/Actions.hs	Mon Sep 24 11:18:48 2018 -0400
@@ -479,7 +479,7 @@
             c <- client's isChecker
             when (not b) $ (if c then checkerLogin else playerLogin) passwd isAdmin isContr
         Guest | isRegisteredUsersOnly si -> do
-            processAction $ ByeClient "Registered users only"
+            processAction $ ByeClient $ loc "This server only allows registered users to join."
             | otherwise -> do
             b <- isBanned
             c <- client's isChecker
@@ -733,9 +733,9 @@
 
 
 processAction (Random chans items) = do
-    let i = if null items then ["heads", "tails"] else items
+    let i = if null items then [loc "heads", loc "tails"] else items
     n <- io $ randomRIO (0, length i - 1)
-    processAction $ AnswerClients chans ["CHAT", nickRandom, i !! n]
+    processAction $ AnswerClients chans ["CHAT", if null items then nickRandomCoin else nickRandomCustom, i !! n]
 
 
 processAction (LoadGhost location) = do
--- a/gameServer/CommandHelp.hs	Mon Sep 24 11:16:08 2018 -0400
+++ b/gameServer/CommandHelp.hs	Mon Sep 24 11:18:48 2018 -0400
@@ -54,9 +54,7 @@
 cmdHelpSharedAdmin = [
     loc "/global <message>: Send global chat message which can be seen by everyone on the server",
     loc "/registered_only: Toggle 'registered only' state. If enabled, only registered players can join server",
-    loc "/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server",
-    -- TODO: Add help for /save
-    loc "/save <parameter>"
+    loc "/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server"
     -- TODO: Add /restart_server? This command seems broken at the moment
     ]
 
@@ -70,10 +68,10 @@
     loc "/force <yes/no>: Force vote result for active vote",
     loc "/fix: Force this room to stay open when it is empty",
     loc "/unfix: Undo the /fix command",
-    loc "/saveroom <file name>: Save room configuration into a file",
-    loc "/loadroom <file name>: Load room configuration from a file",
-    -- TODO: Add help for /delete
-    loc "/delete <parameter>"
+    loc "/save <config ID> <config name>: Add current room configuration as votable choice for /callvote map",
+    loc "/delete <config ID>: Delete a votable room configuration",
+    loc "/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file",
+    loc "/loadroom <file name>: Load votable room configurations (and greeting) from a file"
     ]
 
 cmdHelpHeaderLobby :: [B.ByteString]
--- a/gameServer/Consts.hs	Mon Sep 24 11:16:08 2018 -0400
+++ b/gameServer/Consts.hs	Mon Sep 24 11:18:48 2018 -0400
@@ -47,8 +47,11 @@
 nickServer = "[server]"
 
 -- For /rnd command
-nickRandom :: B.ByteString
-nickRandom = "(random)"
+nickRandomCoin :: B.ByteString
+nickRandomCoin = "[random]"
+
+nickRandomCustom :: B.ByteString
+nickRandomCustom = "(random)"
 
 -- For /global command
 nickGlobal :: B.ByteString
--- a/gameServer/HWProtoInRoomState.hs	Mon Sep 24 11:16:08 2018 -0400
+++ b/gameServer/HWProtoInRoomState.hs	Mon Sep 24 11:18:48 2018 -0400
@@ -367,7 +367,7 @@
     let sameRoom = clientRoom rnc thisClientId == clientRoom rnc newAdminId
     return $
         if (not (master || serverAdmin)) then
-            [Warning $ loc "You not the room master or a server admin!"]
+            [Warning $ loc "You're not the room master or a server admin!"]
         else if (isNothing maybeClientId) then
             [Warning $ loc "Player is not online."]
         else if (Just newAdminId == thisRoomMasterId) then
@@ -407,10 +407,12 @@
     return [AnswerClients s ["CHAT", n, B.unwords $ "/rnd" : rs], Random s rs]
 
 
-handleCmd_inRoom ["MAXTEAMS", n] = roomAdminOnly $ do
+handleCmd_inRoom ["MAXTEAMS", n] = do
     cl <- thisClient
     let m = readInt_ n
-    if m < 2 || m > cMaxTeams then
+    if not $ isMaster cl then
+        return [Warning $ loc "You're not the room master!"]
+    else if m < 2 || m > cMaxTeams then
         return [AnswerClients [sendChan cl] ["CHAT", nickServer, loc "/maxteams: specify number from 2 to 8"]]
     else
         return [ModifyRoom (\r -> r{teamsNumberLimit = m})]
--- a/gameServer/hedgewars-server.cabal	Mon Sep 24 11:16:08 2018 -0400
+++ b/gameServer/hedgewars-server.cabal	Mon Sep 24 11:18:48 2018 -0400
@@ -16,7 +16,7 @@
 
   default-language:    Haskell2010
 
--- Don't forget to update INSTALL.md when you change these dependencies!
+-- Don't forget to update INSTALL.md and .travis.yml when you change these dependencies!
   Build-depends:
     base >= 4.8,
     containers,
--- a/hedgewars/ArgParsers.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/ArgParsers.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -72,37 +72,50 @@
 
 procedure DisplayUsage;
 begin
-    WriteLn(stdout, 'Usage: hwengine <path to replay file> [options]');
+    WriteLn(stdout, 'This is the Hedgewars Engine (hwengine), used to play Hedgewars games and demos.');
+    WriteLn(stdout, 'Use the command-line arguments to play a demo.');
+    WriteLn(stdout, '');
+    WriteLn(stdout, 'Usage: hwengine <path to demo file> [options]');
     WriteLn(stdout, '');
     WriteLn(stdout, 'where [options] can be any of the following:');
-    WriteLn(stdout, ' --prefix [path to folder]');
-    WriteLn(stdout, ' --user-prefix [path to folder]');
-    WriteLn(stdout, ' --locale [name of language file]');
-    WriteLn(stdout, ' --nick [string]');
-    WriteLn(stdout, ' --fullscreen-width [fullscreen width in pixels]');
-    WriteLn(stdout, ' --fullscreen-height [fullscreen height in pixels]');
-    WriteLn(stdout, ' --width [window width in pixels]');
-    WriteLn(stdout, ' --height [window height in pixels]');
-    WriteLn(stdout, ' --volume [sound level]');
-    WriteLn(stdout, ' --frame-interval [milliseconds]');
-    Writeln(stdout, ' --stereo [value]');
-    WriteLn(stdout, ' --raw-quality [flags]');
-    WriteLn(stdout, ' --low-quality');
-    WriteLn(stdout, ' --nomusic');
-    WriteLn(stdout, ' --nosound');
-    WriteLn(stdout, ' --nodampen');
-    WriteLn(stdout, ' --fullscreen');
-    WriteLn(stdout, ' --showfps');
-    WriteLn(stdout, ' --altdmg');
-    WriteLn(stdout, ' --no-teamtag');
-    WriteLn(stdout, ' --no-hogtag');
-    WriteLn(stdout, ' --no-healthtag');
-    WriteLn(stdout, ' --translucent-tags');
-    WriteLn(stdout, ' --stats-only');
-    WriteLn(stdout, ' --help');
+    WriteLn(stdout, '');
+    WriteLn(stdout, 'File locations:');
+    WriteLn(stdout, '  --prefix <path to folder>: Set the path to the system game data folder');
+    WriteLn(stdout, '  --user-prefix <path to folder>: Set the path to the custom data folder to find game content');
+    WriteLn(stdout, '  --locale <name of file>: Set the game language (en.txt for example)');
+    WriteLn(stdout, '');
+    WriteLn(stdout, 'Graphics:');
+    WriteLn(stdout, '  --width <width in pixels>: Set game window width');
+    WriteLn(stdout, '  --height <height in pixels>: Set game window height');
+    WriteLn(stdout, '  --fullscreen: Start in fullscreen');
+    WriteLn(stdout, '  --fullscreen-width <width in pixels>: Set fullscreen width');
+    WriteLn(stdout, '  --fullscreen-height <height in pixels>: Set fullscreen height');
+    WriteLn(stdout, '  --low-quality: Lowers the game quality');
     WriteLn(stdout, '');
-    WriteLn(stdout, 'For more detailed help and examples go to:');
-    WriteLn(stdout, 'https://hedgewars.org/kb/CommandLineOptions');
+    WriteLn(stdout, 'Audio:');
+    WriteLn(stdout, '  --volume <sound level>: Set volume between 0 and 100');
+    WriteLn(stdout, '  --nomusic: Disable music');
+    WriteLn(stdout, '  --nosound: Disable sound effects');
+    WriteLn(stdout, '  --nodampen: Don''t dampen sound volume when game application loses focus');
+    WriteLn(stdout, '');
+    WriteLn(stdout, 'HUD:');
+    WriteLn(stdout, '  --altdmg: Show alternative damage');
+    WriteLn(stdout, '  --no-teamtag: Disable team name tags');
+    WriteLn(stdout, '  --no-hogtag: Disable hedgehog name tags');
+    WriteLn(stdout, '  --no-healthtag: Disable hedgehog health tags');
+    WriteLn(stdout, '  --translucent-tags: Enable translucent name and health tags');
+    WriteLn(stdout, '  --showfps: Show frames per second');
+    WriteLn(stdout, '');
+    WriteLn(stdout, 'Miscellaneous:');
+    WriteLn(stdout, '  --nick <name>: Set user nickname');
+    WriteLn(stdout, '  --help: Show a list of command-line options and exit');
+    WriteLn(stdout, '');
+    Writeln(stdout, 'Advanced options:');
+    Writeln(stdout, '  --stereo <value>: Set stereoscopic rendering (1 to 14)');
+    WriteLn(stdout, '  --frame-interval <milliseconds>: Set minimum interval (in ms) between each frame. Eg, 40 would make the game run at most 25 fps');
+    WriteLn(stdout, '  --raw-quality <flags>: Manually specify the reduced quality flags');
+    WriteLn(stdout, '  --stats-only: Write the round information to console without launching the game, useful for statistics only');
+    WriteLn(stdout, '  --lua-test <path to script>: Run a Lua test script');
     GameType:= gmtSyntaxHelp;
     helpCommandUsed:= true;
 end;
@@ -110,7 +123,7 @@
 procedure setDepth(var paramIndex: LongInt);
 begin
     WriteLn(stdout, 'WARNING: --depth is a deprecated command, which could be removed in a future version!');
-    WriteLn(stdout, '         This option no longer does anything, please consider removing it');
+    WriteLn(stdout, '         This option no longer does anything, please consider removing it.');
     WriteLn(stdout, '');
    inc(ParamIndex);
 end;
@@ -130,7 +143,7 @@
         ipcPort := port
     else
         begin
-        WriteLn(stderr, 'ERROR: use of --port is not allowed');
+        WriteLn(stderr, 'ERROR: use of --port is not allowed!');
         wrongParameter := true;
         end
 end;
@@ -194,7 +207,7 @@
     val(str, tmpInt, c);
     wrongParameter:= c <> 0;
     if wrongParameter then
-        WriteLn(stderr, 'ERROR: '+ParamStr(paramIndex-1)+' expects a number, you passed "'+str+'"');
+        WriteLn(stderr, 'ERROR: '+ParamStr(paramIndex-1)+' expects a number, you passed "'+str+'"!');
 {$ENDIF}
     getLongIntParameter:= tmpInt;
 end;
@@ -205,7 +218,7 @@
     wrongParameter:= (str='') or (Copy(str,1,2) = '--');
     {$IFNDEF HWLIBRARY}
     if wrongParameter then
-        WriteLn(stderr, 'ERROR: '+ParamStr(paramIndex-1)+' expects a string, you passed "'+str+'"');
+        WriteLn(stderr, 'ERROR: '+ParamStr(paramIndex-1)+' expects a string, you passed "'+str+'"!');
     {$ENDIF}
     getstringParameter:= str;
 end;
@@ -277,12 +290,12 @@
         {--lua-test}            36 : begin cTestLua := true; SetSound(false); cScriptName := getstringParameter(arg, paramIndex, parseParameter); WriteLn(stdout, 'Lua test file specified: ' + cScriptName);end;
     else
         begin
-        //Assume the first "non parameter" is the replay file, anything else is invalid
+        //Assume the first "non parameter" is the demo file, anything else is invalid
         if (recordFileName = '') and (Copy(cmd,1,2) <> '--') then
             recordFileName := cmd
         else
             begin
-            WriteLn(stderr, '"'+cmd+'" is not a valid option');
+            WriteLn(stderr, '"'+cmd+'" is not a valid option.');
             parseParameter:= true;
             end;
         end;
@@ -294,9 +307,9 @@
     isBool, isValid: Boolean;
     cmd, arg, newSyntax: string;
 begin
-    WriteLn(stdout, 'WARNING: you are using a deprecated command, which could be removed in a future version!');
+    WriteLn(stdout, 'WARNING: You are using a deprecated command, which could be removed in a future version!');
     WriteLn(stdout, '         Consider updating to the latest syntax, which is much more flexible!');
-    WriteLn(stdout, '         Run `hwegine --help` to learn it!');
+    WriteLn(stdout, '         Run "hwegine --help" to learn it!');
     WriteLn(stdout, '');
 
     index:= 0;
@@ -376,21 +389,21 @@
 
     if (isInternal) and (ParamCount<=1) then
         begin
-        WriteLn(stderr, '--internal should not be manually used');
+        WriteLn(stderr, 'The "--internal" option should not be manually used!');
         GameType := gmtBadSyntax;
         end;
 
     if (not helpCommandUsed) then
         if (not cTestLua) and (not isInternal) and (recordFileName = '') then
             begin
-            WriteLn(stderr, 'You must specify a replay file');
+            WriteLn(stderr, 'You must specify a demo file.');
             GameType := gmtBadSyntax;
             end
         else if (recordFileName <> '') then
-            WriteLn(stdout, 'Attempting to play demo file "' + recordFilename + '"');
+            WriteLn(stdout, 'Attempting to play demo file "' + recordFilename + '".');
 
     if (GameType = gmtBadSyntax) then
-        WriteLn(stderr, 'Please use --help to see possible arguments and their usage');
+        WriteLn(stderr, 'Please use --help to see possible arguments and their usage.');
 
     (*
     WriteLn(stdout,'PathPrefix:     ' + PathPrefix);
--- a/hedgewars/uChat.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uChat.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -71,7 +71,7 @@
 
 const
     colors: array[#0..#9] 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:$00; a:$FF), // #0 warning message [Yellow]
             (r:$FF; g:$FF; b:$FF; a:$FF), // #1 chat message [White]
             (r:$FF; g:$00; b:$FF; a:$FF), // #2 action message [Purple]
             (r:$90; g:$FF; b:$90; a:$FF), // #3 join/leave message [Lime]
--- a/hedgewars/uCommandHandlers.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uCommandHandlers.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -113,7 +113,7 @@
 if s[byte(s[0])]='"' then
     Delete(s, byte(s[0]), 1);
 cScriptName:= s;
-ScriptLoad(s)
+ScriptLoad(s, true)
 end;
 
 procedure chScriptParam(var s: shortstring);
@@ -131,7 +131,8 @@
 procedure chCurU_m(var s: shortstring);
 begin
 s:= s; // avoid compiler hint
-CursorMovementY:= 0;
+if CursorMovementY < 0 then
+    CursorMovementY:= 0;
 end;
 
 procedure chCurD_p(var s: shortstring);
@@ -143,7 +144,8 @@
 procedure chCurD_m(var s: shortstring);
 begin
 s:= s; // avoid compiler hint
-CursorMovementY:= 0;
+if CursorMovementY > 0 then
+    CursorMovementY:= 0;
 end;
 
 procedure chCurL_p(var s: shortstring);
@@ -155,7 +157,8 @@
 procedure chCurL_m(var s: shortstring);
 begin
 s:= s; // avoid compiler hint
-CursorMovementX:= 0;
+if CursorMovementX < 0 then
+    CursorMovementX:= 0;
 end;
 
 procedure chCurR_p(var s: shortstring);
@@ -167,7 +170,8 @@
 procedure chCurR_m(var s: shortstring);
 begin
 s:= s; // avoid compiler hint
-CursorMovementX:= 0;
+if CursorMovementX > 0 then
+    CursorMovementX:= 0;
 end;
 
 procedure chLeft_p(var s: shortstring);
@@ -536,7 +540,7 @@
     InitStepsFlags:= InitStepsFlags or cifMap
     end;
 cMapName:= s;
-ScriptLoad('Maps/' + s + '/map.lua')
+ScriptLoad('Maps/' + s + '/map.lua', false)
 end;
 
 procedure chSetTheme(var s: shortstring);
--- a/hedgewars/uGame.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGame.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -35,6 +35,37 @@
 var i,j : LongInt;
     s: ansistring;
 begin
+
+inc(SoundTimerTicks, Lag);
+if SoundTimerTicks >= 50 then
+    begin
+    SoundTimerTicks:= 0;
+    if cVolumeDelta <> 0 then
+        begin
+        j:= Volume;
+        i:= ChangeVolume(cVolumeDelta);
+        if (not cIsSoundEnabled) or (isAudioMuted and (j<>i)) then
+            AddCaption(trmsg[sidMute], capcolSetting, capgrpVolume)
+        else if not isAudioMuted then
+            begin
+            s:= ansistring(inttostr(i));
+            AddCaption(FormatA(trmsg[sidVolume], s), capcolSetting, capgrpVolume)
+            end
+        end
+    else if cMuteToggle then
+        begin
+        MuteAudio;
+        if isAudioMuted then
+            AddCaption(trmsg[sidMute], capcolSetting, capgrpVolume)
+        else
+            begin
+            s:= ansistring(inttostr(GetVolumePercent()));
+            AddCaption(FormatA(trmsg[sidVolume], s), capcolSetting, capgrpVolume);
+            end;
+        cMuteToggle:= false;
+        end;
+    end;
+
 if isPaused then
     exit;
 
@@ -78,35 +109,6 @@
 if cTestLua then
     Lag:= High(LongInt);
 
-inc(SoundTimerTicks, Lag);
-if SoundTimerTicks >= 50 then
-    begin
-    SoundTimerTicks:= 0;
-    if cVolumeDelta <> 0 then
-        begin
-        j:= Volume;
-        i:= ChangeVolume(cVolumeDelta);
-        if (not cIsSoundEnabled) or (isAudioMuted and (j<>i)) then
-            AddCaption(trmsg[sidMute], capcolSetting, capgrpVolume)
-        else if not isAudioMuted then
-            begin
-            s:= ansistring(inttostr(i));
-            AddCaption(FormatA(trmsg[sidVolume], s), capcolSetting, capgrpVolume)
-            end
-        end
-    else if cMuteToggle then
-        begin
-        MuteAudio;
-        if isAudioMuted then
-            AddCaption(trmsg[sidMute], capcolSetting, capgrpVolume)
-        else
-            begin
-            s:= ansistring(inttostr(GetVolumePercent()));
-            AddCaption(FormatA(trmsg[sidVolume], s), capcolSetting, capgrpVolume);
-            end;
-        cMuteToggle:= false;
-        end;
-    end;
 PlayNextVoice;
 i:= 1;
 while (GameState <> gsExit) and (i <= Lag) and allOK do
--- a/hedgewars/uGears.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGears.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -62,9 +62,9 @@
 
 var delay: LongWord;
     delay2: LongWord;
-    step: (stInit, stDelay, stChDmg, stSweep, stTurnReact,
-    stAfterDelay, stChWin, stWater, stChWin2, stHealth,
-    stSpawn, stNTurn);
+    step: (stInit, stDelay, stChDmg, stSweep, stTurnStats, stChWin1,
+    stTurnReact, stAfterDelay, stChWin2, stWater, stChWin3,
+    stHealth, stSpawn, stNTurn);
     NewTurnTick: LongWord;
     //SDMusic: shortstring;
 
@@ -289,11 +289,25 @@
     else
         inc(step);
 
+    stTurnStats:
+        begin
+        if (not bBetweenTurns) and (not isInMultiShoot) then
+            uStats.TurnStats;
+        inc(step)
+        end;
+
+    stChWin1:
+        begin
+        CheckForWin();
+        inc(step)
+        end;
+
     stTurnReact:
         begin
         if (not bBetweenTurns) and (not isInMultiShoot) then
             begin
             uStats.TurnReaction;
+            uStats.TurnStatsReset;
             inc(step)
             end
         else
@@ -310,7 +324,7 @@
         if delay = 0 then
             inc(step)
             end;
-    stChWin:
+    stChWin2:
         begin
         CheckForWin();
         inc(step)
@@ -322,14 +336,18 @@
         if TotalRoundsPre = cSuddenDTurns + 1 then
             bWaterRising:= true;
         if bWaterRising and (cWaterRise > 0) then
+            begin
+            bDuringWaterRise:= true;
             AddGear(0, 0, gtWaterUp, 0, _0, _0, 0)^.Tag:= cWaterRise;
+            end;
         inc(step)
         end
-    else // since we are not raising the water, a second win-check isn't needed
+    else // since we are not raising the water, another win-check isn't needed
         inc(step,2);
-    stChWin2:
+    stChWin3:
         begin
         CheckForWin;
+        bDuringWaterRise:= false;
         inc(step)
         end;
 
@@ -444,7 +462,7 @@
         if (cHedgehogTurnTime >= 10000)
         and (CurrentHedgehog^.Gear <> nil)
         and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0)
-        and (not isGetAwayTime) then
+        and (not isGetAwayTime) and (ReadyTimeLeft = 0) then
             if TurnTimeLeft = 5000 then
                 PlaySoundV(sndHurry, CurrentTeam^.voicepack)
             else if TurnTimeLeft = 4000 then
@@ -1202,8 +1220,7 @@
                 Gear^.Text:= text;
                 Gear^.FrameTicks:= x
                 end;
-            //ParseCommand('/say [' + hh^.Name + '] '+text, true)
-            AddChatString(#9+'[' + HH^.Name + '] '+text);
+            AddChatString(#9+FormatA(trmsg[sidChatHog], [HH^.Name, text]));
             end
         end
     else if (x >= 4) then
--- a/hedgewars/uGearsHandlersMess.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGearsHandlersMess.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -307,9 +307,28 @@
         AddVisualGear(bubbleX, bubbleY, vgtBubble)
 else if Random(12) = 0 then
         AddVisualGear(bubbleX, bubbleY, vgtBubble);
+// Insta-delete gear and skip drowning animation if water is 100% opaque
 if (not SuddenDeathDmg and (WaterOpacity > $FE))
-or (SuddenDeathDmg and (SDWaterOpacity > $FE))
-or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
+or (SuddenDeathDmg and (SDWaterOpacity > $FE)) then
+    begin
+    // Teleport gear to a suitable position for the damage tag in the water
+    if (WorldEdge = weSea) and (hwRound(Gear^.X) - Gear^.Radius < leftX) then
+        begin
+        if (hwRound(Gear^.X) - Gear^.Radius > leftX - 90) then
+            Gear^.X := Gear^.X - _90
+        end
+    else if (WorldEdge = weSea) and (hwRound(Gear^.X) + Gear^.Radius > rightX) then
+        begin
+        if (hwRound(Gear^.X) - Gear^.Radius < rightX + 90) then
+            Gear^.X := Gear^.X + _90
+        end
+    else
+        Gear^.Y := int2hwFloat(Gear^.Radius + cWaterLine + cVisibleWater);
+    DeleteGear(Gear);
+    exit;
+    end;
+// Delete normally if gear is outside of visible range
+if (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
     DeleteGear(Gear);
 end;
 
@@ -3249,7 +3268,7 @@
     with HHGear^ do
         begin
         State := State and (not gstAttacking);
-        Message := Message and (not gmAttack)
+        Message := Message and (not (gmAttack or gmSwitch))
         end
 end;
 
@@ -5459,7 +5478,7 @@
         Gear^.dY.isNegative := not Gear^.dY.isNegative;
         HHGear^.dX := Gear^.dX;
         HHGear^.dY := Gear^.dY;
-        AmmoShove(Gear, 0, 80);
+        AmmoShove(Gear, 0, 79);
         Gear^.dX.isNegative := not Gear^.dX.isNegative;
         Gear^.dY.isNegative := not Gear^.dY.isNegative;
         end;
@@ -5889,6 +5908,8 @@
                 RenderHealth(resgear^.Hedgehog^);
                 RecountTeamHealth(resgear^.Hedgehog^.Team);
                 resgear^.Hedgehog^.Effects[heResurrected]:= 1;
+                { Reviving a hog implies its clan is now alive, too. }
+                resgear^.Hedgehog^.Team^.Clan^.DeathLogged:= false;
                 s:= ansistring(resgear^.Hedgehog^.Name);
                 AddCaption(FormatA(GetEventString(eidResurrected), s), capcolDefault, capgrpMessage);
                 // only make hat-less hedgehogs look like zombies, preserve existing hats
--- a/hedgewars/uGearsHedgehog.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGearsHedgehog.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -186,6 +186,9 @@
 Gear^.Message:= Gear^.Message and (not gmTimer);
 CurWeapon:= GetCurAmmoEntry(Gear^.Hedgehog^);
 with Gear^.Hedgehog^ do
+    if (((Gear^.State and gstAttacked) <> 0) and (GameFlags and gfInfAttack = 0))
+    or ((Gear^.State and gstHHDriven) = 0) then
+        exit;
     if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then
         begin
         color:= Gear^.Hedgehog^.Team^.Clan^.Color;
@@ -596,15 +599,14 @@
                 if (not CurrentTeam^.ExtDriven) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then
                     SendIPC(_S'a');
                 AfterAttack;
-                end
+                end;
+            TargetPoint.X := NoPointX;
             end
         else
             Message:= Message and (not gmAttack);
 
     ScriptCall('onHogAttack', ord(usedAmmoType));
     end; // of with Gear^, Gear^.Hedgehog^ do
-
-    TargetPoint.X := NoPointX;
 end;
 
 procedure AfterAttack;
@@ -639,10 +641,13 @@
                 begin
                 if TagTurnTimeLeft = 0 then
                     TagTurnTimeLeft:= TurnTimeLeft;
-                if (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0) and CheckCoordInWater(hwRound(CurAmmoGear^.X), hwRound(CurAmmoGear^.Y)) then
-                     TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 25
-                else TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
-                IsGetAwayTime := true;
+                if (HHGear <> nil) and ((HHGear^.State and gstHHDriven) <> 0) then
+                    begin
+                    if (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0) and CheckCoordInWater(hwRound(CurAmmoGear^.X), hwRound(CurAmmoGear^.Y)) then
+                         TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 25
+                    else TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
+                    IsGetAwayTime := true;
+                    end;
                 end;
             if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (HHGear <> nil) then
                 HHGear^.State:= HHGear^.State or gstAttacked;
@@ -864,6 +869,9 @@
     exit
     end;
 
+if (Gear^.Hedgehog^.Unplaced) then
+    exit;
+
     if ((Gear^.Message and gmAnimate) <> 0) then
         begin
         Gear^.Message:= 0;
@@ -908,7 +916,7 @@
         end;
 
     if (Gear^.Message and (gmLeft or gmRight) <> 0) and (Gear^.State and gstMoving = 0) and 
-		(CheckGearNear(Gear, gtPortal, 26, 26) <> nil) then 
+		(CheckGearNear(Gear, gtPortal, 26, 26) = nil) then
 		Gear^.PortalCounter:= 0;
     PrevdX:= hwSign(Gear^.dX);
     if (Gear^.Message and gmLeft  )<>0 then
--- a/hedgewars/uGearsList.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGearsList.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -868,8 +868,8 @@
             begin
             t:= max(Gear^.Damage, Gear^.Health);
             Gear^.Damage:= t;
-            if (((not SuddenDeathDmg) and (WaterOpacity < $FF)) or (SuddenDeathDmg and (SDWaterOpacity < $FF))) then
-                spawnHealthTagForHH(Gear, t);
+            // Display hedgehog damage in water
+            spawnHealthTagForHH(Gear, t);
             end;
 
         team:= Gear^.Hedgehog^.Team;
--- a/hedgewars/uGearsRender.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGearsRender.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -301,7 +301,7 @@
     sign, hx, hy, tx, ty, sx, sy, m: LongInt;  // hedgehog, crosshair, temp, sprite, direction
     dx, dy, ax, ay, aAngle, dAngle, hAngle, lx, ly: real;  // laser, change
     wraps: LongWord; // numbe of wraps for laser in world wrap
-    defaultPos, HatVisible: boolean;
+    defaultPos, HatVisible, inWorldBounds: boolean;
     HH: PHedgehog;
     CurWeapon: PAmmo;
     iceOffset:Longint;
@@ -444,7 +444,8 @@
                 hx:= tx;
                 hy:= ty;
                 wraps:= 0;
-                while ((Land[ty, tx] and lfAll) = 0) do
+                inWorldBounds := ((ty and LAND_HEIGHT_MASK) or (tx and LAND_WIDTH_MASK)) = 0;
+                while inWorldBounds and ((Land[ty, tx] and lfAll) = 0) do
                     begin
                     if wraps > cMaxLaserSightWraps then
                         break;
--- a/hedgewars/uGearsUtils.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uGearsUtils.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -1332,18 +1332,9 @@
     if (Gear^.State and gstNoDamage) = 0 then
         begin
 
-        if (not (Gear^.Kind in [gtMinigun, gtPortal])) and
-            (Ammo^.Kind in [gtDEagleShot, gtSniperRifleShot, gtMinigunBullet]) then
-            begin
-            VGear := AddVisualGear(t^.cX[i], t^.cY[i], vgtBulletHit);
-            if VGear <> nil then
-                VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY);
-            end;
-
         if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then
             Gear^.FlightTime:= 1;
 
-
         case Gear^.Kind of
             gtHedgehog,
             gtMine,
@@ -1355,6 +1346,12 @@
             gtExplosives: //,
             //gtStructure:
             begin
+            if Ammo^.Kind in [gtDEagleShot, gtSniperRifleShot, gtMinigunBullet] then
+                begin
+                VGear := AddVisualGear(t^.cX[i], t^.cY[i], vgtBulletHit);
+                if VGear <> nil then
+                    VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY);
+                end;
             if (Ammo^.Kind = gtDrill) then
                 begin
                 Ammo^.Timer:= 0;
@@ -1397,13 +1394,13 @@
 
             if (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then
                 begin
-                Gear^.dX:= Gear^.dX + Ammo^.dX * Power * _0_005;
-                Gear^.dY:= Gear^.dY + Ammo^.dY * Power * _0_005
+                Gear^.dX:= Ammo^.dX * Power * _0_005;
+                Gear^.dY:= Ammo^.dY * Power * _0_005
                 end
             else if ((Ammo^.Kind <> gtFlame) or (Gear^.Kind = gtHedgehog)) and (Power <> 0) then
                 begin
-                Gear^.dX:= Gear^.dX + Ammo^.dX * Power * _0_01;
-                Gear^.dY:= Gear^.dY + Ammo^.dY * Power * _0_01
+                Gear^.dX:= Ammo^.dX * Power * _0_01;
+                Gear^.dY:= Ammo^.dY * Power * _0_01
                 end;
 
             if (not isZero(Gear^.dX)) or (not isZero(Gear^.dY)) then
--- a/hedgewars/uIO.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uIO.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -254,7 +254,7 @@
 end;
 
 procedure SendStat(sit: TStatInfoType; s: shortstring);
-const stc: array [TStatInfoType] of char = ('r', 'D', 'k', 'K', 'H', 'T', 'P', 's', 'S', 'B', 'c', 'g', 'p');
+const stc: array [TStatInfoType] of char = ('r', 'D', 'k', 'K', 'H', 'T', 'P', 's', 'S', 'B', 'c', 'g', 'p', 'R', 'h');
 var buf: shortstring;
 begin
 buf:= 'i' + stc[sit] + s;
--- a/hedgewars/uLand.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uLand.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -873,6 +873,7 @@
 if (WorldEdge <> weNone) and (not hasBorder) then
     InitWorldEdges();
 
+ScriptSetMapGlobals;
 end;
 
 procedure GenPreview(out Preview: TPreview);
@@ -889,6 +890,8 @@
         OutError('Unknown mapgen', true);
     end;
 
+    ScriptSetMapGlobals;
+
     // strict scaling needed here since preview assumes a rectangle
     rh:= max(LAND_HEIGHT,2048);
     rw:= max(LAND_WIDTH,4096);
@@ -938,6 +941,8 @@
         OutError('Unknown mapgen', true);
     end;
 
+    ScriptSetMapGlobals;
+
     // strict scaling needed here since preview assumes a rectangle
     rh:= max(LAND_HEIGHT, 2048);
     rw:= max(LAND_WIDTH, 4096);
@@ -979,12 +984,14 @@
 
 procedure chSendLandDigest(var s: shortstring);
 var i: LongInt;
+	landPixelDigest  : LongInt;	
 begin
+	landPixelDigest:= 1;
     for i:= 0 to LAND_HEIGHT-1 do
-        syncedPixelDigest:= Adler32Update(syncedPixelDigest, @Land[i,0], LAND_WIDTH*2);
-    s:= 'M' + IntToStr(syncedPixelDigest); // + cScriptName; script name is no longer needed. scripts are hashed
+        landPixelDigest:= Adler32Update(landPixelDigest, @Land[i,0], LAND_WIDTH*2);
+    s:= 'M' + IntToStr(syncedPixelDigest)+'|'+IntToStr(landPixelDigest);
 
-    ScriptSetString('LandDigest', s);
+    ScriptSetString('LandDigest',IntToStr(landPixelDigest));
 
     chLandCheck(s);
     if allOK then SendIPCRaw(@s[0], Length(s) + 1)
--- a/hedgewars/uScript.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uScript.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -34,12 +34,13 @@
 procedure ScriptPrintStack;
 procedure ScriptClearStack;
 
-procedure ScriptLoad(name : shortstring);
+function ScriptLoad(name : shortstring; mustExist : boolean): boolean;
 procedure ScriptOnPreviewInit;
 procedure ScriptOnGameInit;
 procedure ScriptOnScreenResize;
 procedure ScriptSetInteger(name : shortstring; value : LongInt);
 procedure ScriptSetString(name : shortstring; value : shortstring);
+procedure ScriptSetMapGlobals;
 
 procedure ScriptCall(fname : shortstring);
 function ScriptCall(fname : shortstring; par1: LongInt) : LongInt;
@@ -99,9 +100,10 @@
     ScriptAmmoDelay : shortstring;
     ScriptAmmoReinforcement : shortstring;
     ScriptLoaded : boolean;
-    mapDims : boolean;
     PointsBuffer: shortstring;
     PrevCursorX, PrevCursorY: LongInt;
+    PendingTurnTimeLeft, PendingReadyTimeLeft: LongWord;
+    isPendingTurnTimeLeft, isPendingReadyTimeLeft: boolean;
 
 {$IFDEF USE_LUA_SCRIPT}
 procedure ScriptPrepareAmmoStore; forward;
@@ -112,6 +114,7 @@
 var LuaDebugInfo: lua_Debug;
 
 procedure SetGlobals; forward;
+procedure GetGlobals; forward;
 procedure LuaParseString(s: shortString);
 begin
     SetGlobals;
@@ -121,7 +124,9 @@
         begin
         AddFileLog('[Lua] input string parsing error!');
         AddChatString(#5 + '[Lua] Error while parsing!');
-        end;
+        end
+    else
+        GetGlobals();
 end;
 
 function LuaUpdateDebugInfo(): Boolean;
@@ -136,26 +141,43 @@
     exit(true);
 end;
 
-procedure LuaError(s: shortstring);
-var src: shortstring;
+procedure LuaErrorOrWarning(s: shortstring; isWarning: boolean);
+var src, intro: shortstring;
 const
     maxsrclen = 20;
 begin
+    if isWarning then
+        intro:= 'LUA WARNING'
+    else
+        intro:= 'LUA ERROR';
     if LuaUpdateDebugInfo() then
         begin
         src:= StrPas(LuaDebugInfo.source);
-        s:= 'LUA ERROR [ ... '
+        s:= intro + ': [ ... '
             + copy(src, Length(src) - maxsrclen, maxsrclen - 3) + ':'
             + inttostr(LuaDebugInfo.currentLine) + ']: ' + s;
         end
     else
-        s:= 'LUA ERROR: ' + s;
+        s:= intro + ': ' + s;
     WriteLnToConsole(s);
-    AddChatString(#5 + s);
-    if cTestLua then
+    if isWarning then
+        AddChatString(#0 + s)
+    else
+        AddChatString(#5 + s);
+    if cTestLua and (not isWarning) then
         halt(HaltTestLuaError);
 end;
 
+procedure LuaError(s: shortstring);
+begin
+    LuaErrorOrWarning(s, false);
+end;
+
+procedure LuaWarning(s: shortstring);
+begin
+    LuaErrorOrWarning(s, true);
+end;
+
 procedure LuaCallError(error, call, paramsyntax: shortstring);
 begin
     LuaError(call + ': ' + error);
@@ -1999,9 +2021,10 @@
         else
             respectFactor:= True;
         if respectFactor then
-            TurnTimeLeft:= (time * cGetAwayTime) div 100
+            PendingTurnTimeLeft:= (time * cGetAwayTime) div 100
         else
-            TurnTimeLeft:= time;
+            PendingTurnTimeLeft:= time;
+        isPendingTurnTimeLeft:= true;
         if ((CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)) then
             begin
             CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstAttacked;
@@ -2176,8 +2199,8 @@
 var s: LongInt;
     soundState: boolean;
 const
-    call = 'SetSoundMasked';
-    params = 'soundId, isMasked]';
+    call = 'SetSoundMask';
+    params = 'soundId, isMasked';
 begin
     if CheckLuaParamCount(L, 2, call, params) then
         begin
@@ -2787,7 +2810,7 @@
     placed, behind, flipHoriz, flipVert : boolean;
 const
     call = 'PlaceSprite';
-    params = 'x, y, sprite, frameIdx, tint, behind, flipHoriz, flipVert, [, landFlag, ... ]';
+    params = 'x, y, sprite, frameIdx, tint, behind, flipHoriz, flipVert [, landFlag, ... ]';
 begin
     placed:= false;
     if CheckAndFetchLuaParamMinCount(L, 4, call, params, n) then
@@ -2835,7 +2858,7 @@
     eraseOnLFMatch, onlyEraseLF, flipHoriz, flipVert : boolean;
 const
     call = 'EraseSprite';
-    params = 'x, y, sprite, frameIdx, eraseOnLFMatch, onlyEraseLF, flipHoriz, flipVert, [, landFlag, ... ]';
+    params = 'x, y, sprite, frameIdx, eraseOnLFMatch, onlyEraseLF, flipHoriz, flipVert [, landFlag, ... ]';
 begin
     if CheckAndFetchLuaParamMinCount(L, 4, call, params, n) then
         begin
@@ -3066,12 +3089,20 @@
 
 
 function lc_hedgewarsscriptload(L : Plua_State) : LongInt; Cdecl;
+var success : boolean;
+    n : LongInt;
 begin
-    if CheckLuaParamCount(L, 1, 'HedgewarsScriptLoad', 'scriptPath') then
-        ScriptLoad(lua_tostring(L, 1))
+    if CheckAndFetchParamCount(L, 1, 2, 'HedgewarsScriptLoad', 'scriptPath [, mustExist]', n) then
+        begin
+        if n = 1 then
+            success:= ScriptLoad(lua_tostring(L, 1), true)
+        else
+            success:= ScriptLoad(lua_tostring(L, 1), lua_toboolean(L, 2));
+        end
     else
-        lua_pushnil(L);
-    lc_hedgewarsscriptload:= 0;
+        success:= false;
+    lua_pushboolean(L, success);
+    lc_hedgewarsscriptload:= 1;
 end;
 
 
@@ -3178,6 +3209,40 @@
     lc_explode:= 1;
 end;
 
+function lc_setturntimeleft(L : Plua_State) : LongInt; Cdecl;
+var number: Int64;
+begin
+    if CheckLuaParamCount(L, 1, 'SetTurnTimeLeft', 'newTurnTimeLeft') then
+        begin
+        number:= Trunc(lua_tonumber(L, 1));
+        if number < 0 then
+            number:= 0;
+        if number > cMaxTurnTime then
+            number:= cMaxTurnTime;
+        // The real TurnTimeLeft will be set in SetGlobals
+        PendingTurnTimeLeft:= number;
+        isPendingTurnTimeLeft:= true;
+        end;
+    lc_setturntimeleft:= 0;
+end;
+
+function lc_setreadytimeleft(L : Plua_State) : LongInt; Cdecl;
+var number: Int64;
+begin
+    if CheckLuaParamCount(L, 1, 'SetReadyTimeLeft', 'newReadyTimeLeft') then
+        begin
+        number:= Trunc(lua_tonumber(L, 1));
+        if number < 0 then
+            number:= 0;
+        if number > cMaxTurnTime then
+            number:= cMaxTurnTime;
+        // The real ReadyTimeLeft will be set in SetGlobals
+        PendingReadyTimeLeft:= number;
+        isPendingReadyTimeLeft:= true;
+        end;
+    lc_setreadytimeleft:= 0;
+end;
+
 function lc_startghostpoints(L : Plua_State) : LongInt; Cdecl;
 begin
     if CheckLuaParamCount(L, 1, 'StartGhostPoints', 'count') then
@@ -3475,7 +3540,6 @@
 
 ScriptSetInteger('ClansCount', ClansCount);
 ScriptSetInteger('TeamsCount', TeamsCount);
-mapDims:= false
 end;
 
 
@@ -3560,7 +3624,7 @@
 end;
 // ⭒⭐⭒✨⭐⭒✨⭐☆✨⭐✨✧✨☆✨✧✨☆⭒✨☆⭐⭒☆✧✨⭒✨⭐✧⭒☆⭒✧☆✨✧⭐☆✨☆✧⭒✨✧⭒☆⭐☆✧
 
-procedure ScriptLoad(name : shortstring);
+function ScriptLoad(name : shortstring; mustExist : boolean): boolean;
 var ret : LongInt;
       s : shortstring;
       f : PFSFile;
@@ -3575,18 +3639,22 @@
 s:= cPathz[ptData] + name;
 if not pfsExists(s) then
     begin
-    AddFileLog('[LUA] Script not found: ' + name);
+    if mustExist then
+        OutError('Script not found: ' + name, true)
+    else
+        AddFileLog('[LUA] Script not found: ' + name);
+    ScriptLoad:= false;
     exit;
     end;
 
 f:= pfsOpenRead(s);
 if f = nil then
-    exit;
+    OutError('Error reading script: ' + name, true);
 
 hedgewarsMountPackage(Str2PChar(copy(s, 3, length(s)-6)+'.hwp'));
 
 physfsReaderSetBuffer(@buf);
-if Pos('Locale/',s) <> 0 then
+if (Pos('Locale/',s) <> 0) or (s = 'Scripts/OfficialChallengeHashes.lua') then
      ret:= lua_load(luaState, @ScriptLocaleReader, f, Str2PChar(s))
 else
 	begin
@@ -3599,13 +3667,15 @@
     begin
     LuaError('Failed to load ' + name + '(error ' + IntToStr(ret) + ')');
     LuaError(lua_tostring(luaState, -1));
+    ScriptLoad:= false;
     end
 else
     begin
     WriteLnToConsole('Lua: ' + name + ' loaded');
     // call the script file
     lua_pcall(luaState, 0, 0, 0);
-    ScriptLoaded:= true
+    ScriptLoaded:= true;
+    ScriptLoad:= true;
     end;
 end;
 
@@ -3638,31 +3708,57 @@
     PrevCursorY:= NoPointX
     end;
 
-if not mapDims then
-    begin
-    mapDims:= true;
-    ScriptSetInteger('LAND_WIDTH', LAND_WIDTH);
-    ScriptSetInteger('LAND_HEIGHT', LAND_HEIGHT);
-    ScriptSetInteger('LeftX', leftX);
-    ScriptSetInteger('RightX', rightX);
-    ScriptSetInteger('TopY', topY)
-    end;
 if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) then
     ScriptSetInteger('CurrentHedgehog', CurrentHedgehog^.Gear^.UID)
 else
     ScriptSetNil('CurrentHedgehog');
 end;
 
+procedure ScriptSetMapGlobals;
+begin
+ScriptSetInteger('LAND_WIDTH', LAND_WIDTH);
+ScriptSetInteger('LAND_HEIGHT', LAND_HEIGHT);
+ScriptSetInteger('LeftX', leftX);
+ScriptSetInteger('RightX', rightX);
+ScriptSetInteger('TopY', topY);
+end;
+
 procedure GetGlobals;
+var currentTTL, currentRTL, newTTL, newRTL: LongInt;
 begin
-// TODO
-// Use setters instead, because globals should be read-only!
-// Otherwise globals might be changed by Lua, but then unexpectatly overwritten by engine when a ScriptCall is triggered by whatever Lua is doing!
-// Sure, one could work around that in engine (e.g. by setting writable globals in SetGlobals only when their engine-side value has actually changed since SetGlobals was called the last time...), but things just get messier and messier then.
-// It is inconsistent anyway to have some globals be read-only and others not with no indication whatsoever.
-// -- sheepluva
-TurnTimeLeft:= ScriptGetInteger('TurnTimeLeft');
-ReadyTimeLeft:= ScriptGetInteger('ReadyTimeLeft');
+// Setting TurnTimeLeft and ReadyTimeLeft should now be done in the setter functions.
+// SetTurnTimeLeft and SetReadTimeLeft.
+// GetGloals should be removed in a future release.
+
+// DEPRECATED: Read TurnTimeLeft and ReadyTimeLeft from script directly.
+// TODO: Remove this behaviour in a future version.
+currentTTL:= TurnTimeLeft;
+currentRTL:= ReadyTimeLeft;
+newTTL:= ScriptGetInteger('TurnTimeLeft');
+newRTL:= ScriptGetInteger('ReadyTimeLeft');
+if (currentTTL <> newTTL) and (not isPendingTurnTimeLeft) then
+    begin
+    TurnTimeLeft:= newTTL;
+    LuaWarning('Writing to TurnTimeLeft directly is deprecated! Use SetTurnTimeLeft instead!');
+    end;
+
+if (currentRTL <> newRTL) and (not isPendingReadyTimeLeft) then
+    begin
+    ReadyTimeLeft:= newRTL;
+    LuaWarning('Writing to ReadyTimeLeft directly is deprecated! Use SetReadyTimeLeft instead!');
+    end;
+
+// Set TurnTimeLeft and ReadyTimeLeft if activated by SetTurnTimeLeft and SetReadyTimeLeft before
+if isPendingTurnTimeLeft then
+    begin
+    TurnTimeLeft:= PendingTurnTimeLeft;
+    isPendingTurnTimeLeft:= false;
+    end;
+if isPendingReadyTimeLeft then
+    begin
+    ReadyTimeLeft:= PendingReadyTimeLeft;
+    isPendingReadyTimeLeft:= false;
+    end;
 end;
 
 procedure ScriptCall(fname : shortstring);
@@ -3926,9 +4022,9 @@
 ScriptSetInteger('AMMO_INFINITE', AMMO_INFINITE);
 ScriptSetInteger('JETPACK_FUEL_INFINITE', JETPACK_FUEL_INFINITE);
 ScriptSetInteger('BIRDY_ENERGY_INFINITE', BIRDY_ENERGY_INFINITE);
-ScriptSetInteger('NoPointX', NoPointX);
-ScriptSetInteger('cMaxHogHealth', cMaxHogHealth);
-ScriptSetInteger('cMaxTurnTime', cMaxTurnTime);
+ScriptSetInteger('NO_CURSOR', NoPointX);
+ScriptSetInteger('MAX_HOG_HEALTH', cMaxHogHealth);
+ScriptSetInteger('MAX_TURN_TIME', cMaxTurnTime);
 
 // register gear types
 for at:= Low(TGearType) to High(TGearType) do
@@ -4162,6 +4258,8 @@
 lua_register(luaState, _P'SetLaserSight', @lc_setlasersight);
 lua_register(luaState, _P'GetLaserSight', @lc_getlasersight);
 lua_register(luaState, _P'Explode', @lc_explode);
+lua_register(luaState, _P'SetTurnTimeLeft', @lc_setturntimeleft);
+lua_register(luaState, _P'SetReadyTimeLeft', @lc_setreadytimeleft);
 // drawn map functions
 lua_register(luaState, _P'AddPoint', @lc_addPoint);
 lua_register(luaState, _P'FlushPoints', @lc_flushPoints);
@@ -4283,10 +4381,11 @@
 
 procedure initModule;
 begin
-mapDims:= false;
 PointsBuffer:= '';
 PrevCursorX:= NoPointX;
 PrevCursorY:= NoPointX;
+isPendingTurnTimeLeft:= false;
+isPendingReadyTimeLeft:= false;
 end;
 
 procedure freeModule;
--- a/hedgewars/uStats.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uStats.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -29,6 +29,7 @@
     SendRankingStatsOn : boolean = true;
     SendAchievementsStatsOn : boolean = true;
     SendHealthStatsOn : boolean = true;
+    ClanDeathLog : PClanDeathLogEntry;
 
 procedure initModule;
 procedure freeModule;
@@ -39,7 +40,9 @@
 procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog; Damage: Longword; killed: boolean);
 procedure TargetHit;
 procedure Skipped;
+procedure TurnStats;
 procedure TurnReaction;
+procedure TurnStatsReset;
 procedure SendStats;
 procedure hedgehogFlight(Gear: PGear; time: Longword);
 procedure declareAchievement(id, teamname, location: shortstring; value: LongInt);
@@ -135,14 +138,70 @@
 isTurnSkipped:= true
 end;
 
-procedure TurnReaction;
+procedure TurnStats;
 var i, t: LongInt;
-    killsCheck: LongInt;
+    c: Longword;
+    newEntry: PClanDeathLogEntry;
+begin
+inc(FinishedTurnsTotal);
+
+for t:= 0 to Pred(TeamsCount) do // send even on zero turn
+    with TeamsArray[t]^ do
+        for i:= 0 to cMaxHHIndex do
+            with Hedgehogs[i].stats do
+                begin
+                inc(DamageRecv, StepDamageRecv);
+                inc(DamageGiven, StepDamageGiven);
+                if StepDamageRecv > MaxStepDamageRecv then
+                    MaxStepDamageRecv:= StepDamageRecv;
+                if StepDamageGiven > MaxStepDamageGiven then
+                    MaxStepDamageGiven:= StepDamageGiven;
+                if StepKills > MaxStepKills then
+                    MaxStepKills:= StepKills;
+                end;
+
+// Write into the death log which clans died in this turn,
+// important for final rankings.
+c:= 0;
+newEntry:= nil;
+for t:= 0 to Pred(ClansCount) do
+    with ClansArray[t]^ do
+        begin
+        if (ClanHealth = 0) and (ClansArray[t]^.DeathLogged = false) then
+            begin
+            if c = 0 then
+                begin
+                new(newEntry);
+                newEntry^.Turn := FinishedTurnsTotal;
+                newEntry^.NextEntry := nil;
+                end;
+
+            newEntry^.KilledClans[c]:= ClansArray[t];
+            inc(c);
+            newEntry^.KilledClansCount := c;
+            ClansArray[t]^.DeathLogged:= true;
+            end;
+
+        if SendHealthStatsOn then
+            SendStat(siClanHealth, IntToStr(Color) + ' ' + IntToStr(ClanHealth));
+        end;
+if newEntry <> nil then
+    begin
+    if ClanDeathLog <> nil then
+        begin
+        newEntry^.NextEntry:= ClanDeathLog;
+        end;
+    ClanDeathLog:= newEntry;
+    end;
+
+end;
+
+procedure TurnReaction;
+var killsCheck: LongInt;
     s: ansistring;
 begin
 //TryDo(not bBetweenTurns, 'Engine bug: TurnReaction between turns', true);
 
-inc(FinishedTurnsTotal);
 if FinishedTurnsTotal <> 0 then
     begin
     s:= ansistring(CurrentHedgehog^.Name);
@@ -209,21 +268,16 @@
         AddCaption(FormatA(GetEventString(eidTurnSkipped), s), capcolDefault, capgrpMessage);
         end
     end;
+end;
 
-
+procedure TurnStatsReset;
+var t, i: LongInt;
+begin
 for t:= 0 to Pred(TeamsCount) do // send even on zero turn
     with TeamsArray[t]^ do
         for i:= 0 to cMaxHHIndex do
             with Hedgehogs[i].stats do
                 begin
-                inc(DamageRecv, StepDamageRecv);
-                inc(DamageGiven, StepDamageGiven);
-                if StepDamageRecv > MaxStepDamageRecv then
-                    MaxStepDamageRecv:= StepDamageRecv;
-                if StepDamageGiven > MaxStepDamageGiven then
-                    MaxStepDamageGiven:= StepDamageGiven;
-                if StepKills > MaxStepKills then
-                    MaxStepKills:= StepKills;
                 StepKills:= 0;
                 StepDamageRecv:= 0;
                 StepDamageGiven:= 0;
@@ -231,13 +285,6 @@
                 StepDied:= false;
                 end;
 
-if SendHealthStatsOn then
-    for t:= 0 to Pred(ClansCount) do
-        with ClansArray[t]^ do
-            begin
-            SendStat(siClanHealth, IntToStr(Color) + ' ' + IntToStr(ClanHealth));
-            end;
-
 Kills:= 0;
 KillsClan:= 0;
 DamageClan:= 0;
@@ -247,7 +294,7 @@
 PoisonTurn:= 0;
 AmmoUsedCount:= 0;
 AmmoDamagingUsed:= false;
-isTurnSkipped:= false
+isTurnSkipped:= false;
 end;
 
 procedure AmmoUsed(am: TAmmoType);
@@ -268,7 +315,7 @@
 end;
 
 procedure SendStats;
-var i, t: LongInt;
+var i, t, c: LongInt;
     msd, msk: Longword; msdhh, mskhh: PHedgehog;
     mskcnt: Longword;
     maxTeamKills : Longword;
@@ -278,6 +325,8 @@
     maxTeamDamage : Longword;
     maxTeamDamageName : shortstring;
     winnersClan : PClan;
+    deathEntry : PClanDeathLogEntry;
+    currentRank: Longword;
 begin
 if SendHealthStatsOn then
     msd:= 0; msdhh:= nil;
@@ -287,6 +336,7 @@
     maxTurnSkips := 0;
     maxTeamDamage := 0;
     winnersClan:= nil;
+    currentRank:= 0;
 
     for t:= 0 to Pred(TeamsCount) do
         with TeamsArray[t]^ do
@@ -311,13 +361,18 @@
                         end;
             end;
 
-            { send player stats for winner teams }
+            { Send player stats for winner clans/teams.
+            The clan that survived is ranked 1st. }
             if Clan^.ClanHealth > 0 then
                 begin
                 winnersClan:= Clan;
                 if SendRankingStatsOn then
+                    begin
+                    currentRank:= 1;
+                    SendStat(siTeamRank, '1');
                     SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
                         IntToStr(stats.Kills) + ' ' + TeamName);
+                    end;
             end;
 
             { determine maximum values of TeamKills, TurnSkips, TeamDamage }
@@ -339,19 +394,41 @@
 
         end;
 
-    { now send player stats for loser teams }
+    inc(currentRank);
+
+    { Now send player stats for loser teams/clans.
+    The losing clans are ranked in the reverse order they died.
+    The clan that died last is ranked 2nd,
+    the clan that died second to last is ranked 3rd,
+    and so on.
+    Clans that died in the same turn share their rank.
+    If a clan died multiple times in the match
+    (e.g. due to resurrection), only the *latest* death of
+    that clan counts (handled in gtResurrector).
+    }
+    deathEntry := ClanDeathLog;
+    i:= 0;
     if SendRankingStatsOn then
-        for t:= 0 to Pred(TeamsCount) do
+        while (deathEntry <> nil) do
             begin
-            with TeamsArray[t]^ do
-                begin
-                if Clan^.ClanHealth = 0 then
+            for c:= 0 to Pred(deathEntry^.KilledClansCount) do
+                if ((deathEntry^.KilledClans[c]^.ClanHealth) = 0) and (not deathEntry^.KilledClans[c]^.StatsHandled) then
                     begin
-                    SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
-                        IntToStr(stats.Kills) + ' ' + TeamName);
-                end;
+                    for t:= 0 to Pred(TeamsCount) do
+                        if TeamsArray[t]^.Clan^.ClanIndex = deathEntry^.KilledClans[c]^.ClanIndex then
+                            begin
+                            SendStat(siTeamRank, IntToStr(currentRank));
+                            SendStat(siPlayerKills, IntToStr(deathEntry^.killedClans[c]^.Color) + ' ' +
+                                IntToStr(TeamsArray[t]^.stats.Kills) + ' ' + TeamsArray[t]^.TeamName);
+                            end;
+                    deathEntry^.KilledClans[c]^.StatsHandled:= true;
+                    inc(i);
+                    end;
+            if i > 0 then
+                inc(currentRank, i);
+            i:= 0;
+            deathEntry:= deathEntry^.NextEntry;
             end;
-        end;
 
     // “Achievements” / Details part of stats screen
     if SendAchievementsStatsOn then
@@ -428,6 +505,7 @@
     TotalRoundsPre:= -1;
     TotalRoundsReal:= -1;
     FinishedTurnsTotal:= -1;
+    ClanDeathLog:= nil;
 end;
 
 procedure freeModule;
--- a/hedgewars/uTeams.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uTeams.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -58,6 +58,7 @@
     s, cap: ansistring;
     ts: array[0..(cMaxTeams - 1)] of ansistring;
     t, AliveCount, i, j: LongInt;
+    allWin: boolean;
 begin
 CheckForWin:= false;
 AliveCount:= 0;
@@ -75,9 +76,15 @@
 TurnTimeLeft:= 0;
 ReadyTimeLeft:= 0;
 
-// if the game ends during a multishot, do last TurnReaction
-if (not bBetweenTurns) and isInMultiShoot then
-    TurnReaction();
+// If the game ends during a multishot, or after the Sudden Death
+// water has risen, do last turn stats / reaction.
+if ((not bBetweenTurns) and isInMultiShoot) or (bDuringWaterRise) then
+    begin
+    TurnStats();
+    if (not bDuringWaterRise) then
+        TurnReaction();
+    TurnStatsReset();
+    end;
 
 if not TeamsGameOver then
     begin
@@ -86,10 +93,15 @@
         AddCaption(GetEventString(eidRoundDraw), capcolDefault, capgrpGameState);
         if SendGameResultOn then
             SendStat(siGameResult, shortstring(trmsg[sidDraw]));
+        if PreviousTeam <> nil then
+            AddVoice(sndNutter, PreviousTeam^.voicepack)
+        else
+            AddVoice(sndNutter, TeamsArray[0]^.voicepack);
         AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000);
         end
     else // win
         begin
+        allWin:= false;
         with AliveClan^ do
             begin
             if TeamsNumber = 1 then // single team wins
@@ -110,8 +122,11 @@
 
                 // Write victory message for caption and stats page
                 if (TeamsNumber = cMaxTeams) or (TeamsCount = TeamsNumber) then
+                    begin
                     // No enemies for some reason … Everyone wins!!1!
-                    s:= trmsg[sidWinnerAll]
+                    s:= trmsg[sidWinnerAll];
+                    allWin:= true;
+                    end
                 else if (TeamsNumber >= 2) and (TeamsNumber < cMaxTeams) then
                     // List all winning teams in a list
                     s:= FormatA(trmsg[TMsgStrId(Ord(sidWinner2) + (TeamsNumber - 2))], ts);
@@ -136,6 +151,8 @@
 
         if SendGameResultOn then
             SendStat(siGameResult, shortstring(s));
+        if allWin and SendAchievementsStatsOn then
+            SendStat(siEverAfter, '');
         AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000)
         end;
     SendStats;
@@ -305,7 +322,9 @@
         begin
         for i:= 0 to ClansCount do
             if ClansArray[i] <> nil then
+                begin
                 ClansArray[i]^.TurnNumber:= 0;
+                end;
         ResetWeapons
         end;
 
@@ -468,7 +487,9 @@
         ClanIndex:= Pred(ClansCount);
         Color:= TeamColor;
         TagTeamIndex:= 0;
-        Flawless:= true
+        Flawless:= true;
+        DeathLogged:= false;
+        StatsHandled:= false;
         end
     end
 else
--- a/hedgewars/uTypes.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uTypes.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -176,7 +176,7 @@
     TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
             siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage,
             siMaxTeamKills, siMaxTurnSkips, siCustomAchievement, siGraphTitle,
-            siPointType);
+            siPointType, siTeamRank, siEverAfter);
 
     // Various 'emote' animations a hedgehog can do
     TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
@@ -350,6 +350,16 @@
         TeamDamage : Longword;
         end;
 
+    PClanDeathLogEntry = ^TClanDeathLogEntry;
+
+    TClanDeathLogEntry = record
+        Turn : Longword; // turn in which the clans were killed
+        KilledClans : array[0..Pred(cMaxTeams)] of PClan; // array of clans that have died
+        KilledClansCount: Longword; // number of clans that died
+        NextEntry : PClanDeathLogEntry; // linked list
+        end;
+
+
     TBinds = record
                  indices: array[0..cKbdMaxIndex] of byte;
                  // zeroth element is reserved, indices[i] == 0 means no binding
@@ -443,6 +453,8 @@
             ClanHealth: LongInt;
             ClanIndex: LongInt;
             TurnNumber: LongWord;
+            DeathLogged: boolean; // true if clan is dead and its latest death has been logged in the clan death log
+            StatsHandled : boolean; // true if clan's rank has been handled for stats screen
             Flawless: boolean;
             end;
 
@@ -481,7 +493,7 @@
             sidWinner2, sidWinner3, sidWinner4, sidWinner5, sidWinner6,
             sidWinner7, sidWinnerAll, sidTeamGone, sidTeamBack, sidAutoSkip,
             sidFPS, sidLuaParsingOff, sidLuaParsingOn, sidLuaParsingDenied,
-            sidAmmoCount, sidChat, sidChatTeam, sidChatHog);
+            sidAmmoCount, sidChat, sidChatTeam, sidChatHog, sidEverAfter);
 
     TCmdHelpStrId = (
             sidCmdHeaderBasic, sidCmdTogglechat, sidCmdTeam, sidCmdMe,
--- a/hedgewars/uVariables.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uVariables.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -177,6 +177,7 @@
 
     bBetweenTurns   : boolean;
     bWaterRising    : boolean;
+    bDuringWaterRise: boolean;
 
     CrosshairX      : LongInt;
     CrosshairY      : LongInt;
@@ -2856,6 +2857,7 @@
     flagDumpLand    := false;
     bBetweenTurns   := false;
     bWaterRising    := false;
+    bDuringWaterRise:= false;
     isCursorVisible := false;
     isInLag         := false;
     isPaused        := false;
--- a/hedgewars/uWorld.pas	Mon Sep 24 11:16:08 2018 -0400
+++ b/hedgewars/uWorld.pas	Mon Sep 24 11:18:48 2018 -0400
@@ -1630,11 +1630,11 @@
 
 // various captions
 if fastUntilLag then
-    DrawTextureCentered(0, (cScreenHeight shr 1), SyncTexture);
-if isPaused then
+    DrawTextureCentered(0, (cScreenHeight shr 1), SyncTexture)
+else if isAFK then
+    DrawTextureCentered(0, (cScreenHeight shr 1), AFKTexture)
+else if isPaused then
     DrawTextureCentered(0, (cScreenHeight shr 1), PauseTexture);
-if isAFK then
-    DrawTextureCentered(0, (cScreenHeight shr 1), AFKTexture);
 if not isFirstFrame and (missionTimer <> 0) or isShowMission or isPaused or fastUntilLag or (GameState = gsConfirm) then
     begin
     if (ReadyTimeLeft = 0) and (missionTimer > 0) then
@@ -2005,6 +2005,8 @@
     ammoStr: ansistring;
     tmpsurf: PSDL_Surface;
 begin
+    if cOnlyStats then exit;
+    
     ammoStrId := Ammoz[ammoType].NameId;
 
     trluaammo[ammoStrId] := name;
@@ -2014,7 +2016,7 @@
         ammoStr:= trammo[ammoStrId];
 
     if checkFails(length(ammoStr) > 0,'No default text/translation found for ammo type #' + intToStr(ord(ammoType)) + '!',true) then exit;
-        
+
     tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(ammoStr,fnt16)].Handle, PChar(ammoStr), cWhiteColorChannels);
     if checkFails(tmpsurf <> nil,'Name-texture creation for ammo type #' + intToStr(ord(ammoType)) + ' failed!',true) then exit;
     tmpsurf:= doSurfaceConversion(tmpsurf);
--- a/share/hedgewars/Data/Locale/cs.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/cs.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/da.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/da.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/de.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/de.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 ["1 - Normal Girder"]="1 – Normaler Bauträger",
 ["1 - Normal Land"]="1 – Normales Gelände",
 ["1 - Normal Rubber"]="1 – Normales Gummi",
+["+1 point"] = "+1 Punkt", -- Mutant
 ["-1 point"] = "-1 Punkt", -- Mutant
-["+1 point"] = "+1 Punkt", -- Mutant
 ["-1 to anyone for a suicide"]="-1 für Selbstmord",
 ["+1 to the Bottom Feeder for killing anyone"] = "+1 für den Versager für jeden Abschuss", -- Mutant
 ["+1 to the Mutant for killing anyone"] = "+1 für den Mutanten für jeden Abschuss", -- Mutant
@@ -121,8 +121,8 @@
 ["Anton"] = "Anton", -- 
 ["An unexpected event!"]="Ein unerwartetes Ereignis!",
 ["Anyway, the aliens accept me for who I am."] = "Jedenfalls akzeptieren die Außerirdischen mich für den, der ich bin!", -- A_Classic_Fairytale:queen
+["A random hedgehog will inherit the weapons of his deceased team-mates"]="Ein zufälliger Igel wird die Waffen seiner verstorbenen Teamkollegen erben", -- A_Space_Adventure:death02
 ["A random hedgehog will inherit the weapons of his deceased team-mates."]="Ein zufälliger Igel wird die Waffen seiner verstorbenen Teamkollegen erben.", -- A_Space_Adventure:death02
-["A random hedgehog will inherit the weapons of his deceased team-mates"]="Ein zufälliger Igel wird die Waffen seiner verstorbenen Teamkollegen erben", -- A_Space_Adventure:death02
 ["Arashi"] = "Arashi", -- 
 ["Areas surrounded by a green dashed outline are portal-proof and repel portals."] = "Land, das mit einer grünen gestrichtelten Linie umrandet ist, ist portalabweisend.", -- A_Space_Adventure:final
 ["Areas surrounded by a security border are indestructible."] = "Land, das eine Sicherheitsumrandung hat, ist unzerstörbar.", -- A_Space_Adventure:final
@@ -163,8 +163,8 @@
 ["Attack: Throw ball"] = "Angriff: Ball werfen", -- Knockball
 ["At the end of the game your health was "]="Am Ende des Spiels war deine Gesundheit ",
 ["At the end of the game your health was %d."] = "Am Ende des Spiels hattest du %d Gesundheit.", -- A_Space_Adventure:ice01
+["At the start of the game each enemy hog has only the weapon that he is named after"]="Am Anfang des Spiels hat jeder feindliche Igel nur die Waffe, nach der er benannt wurde", -- A_Space_Adventure:death02
 ["At the start of the game each enemy hog has only the weapon that he is named after."]="Am Anfang des Spiels hat jeder feindliche Igel nur die Waffe, nach der er benannt wurde.", -- A_Space_Adventure:death02
-["At the start of the game each enemy hog has only the weapon that he is named after"]="Am Anfang des Spiels hat jeder feindliche Igel nur die Waffe, nach der er benannt wurde", -- A_Space_Adventure:death02
 ["Australia"]="Australien",
 ["Available weapon specials:"] = "Verfügbare Waffenextras:", -- Continental_supplies
 ["Average pilot"]="Durchschnittlicher Pilot",
@@ -586,11 +586,11 @@
 ["DUD MINE PLACEMENT MODE"] = "BLINDGÄNGERMINENPLATZIERUNGSMODUS", -- HedgeEditor
 ["During the final testing of the device an accident happened"]="Bei den letzten Tests des Gerätes ist ein Unfall passiert.",
 ["During the final testing of the device an accident happened."] = "Bei den letzten Tests des Geräts ist ein Unfall passiert.", -- A_Space_Adventure:moon02
+["During the game you can get new RC planes by collecting the weapon crates"]="Während des Spiels kannst du neue Funkflugzeuge erhalten, indem du die Waffenkisten sammelst",
 ["During the game you can get new RC planes by collecting the weapon crates."]="Während des Spiels kannst du neue Funkflugzeuge erhalten, indem du die Waffenkisten sammelst.",
-["During the game you can get new RC planes by collecting the weapon crates"]="Während des Spiels kannst du neue Funkflugzeuge erhalten, indem du die Waffenkisten sammelst",
 ["Dust Storm"] = "Staubsturm", -- Continental_supplies
+["Each time you destroy all the targets on your current level you'll get teleported to the next level"]="Jedes Mal, wenn du alle Zielscheiben im aktuellen Level zerstörst, wirst du zum nächsten Level teleportiert",
 ["Each time you destroy all the targets on your current level you'll get teleported to the next level."]="Jedes Mal, wenn du alle Zielscheiben im aktuellen Level zerstörst, wirst du zum nächsten Level teleportiert.",
-["Each time you destroy all the targets on your current level you'll get teleported to the next level"]="Jedes Mal, wenn du alle Zielscheiben im aktuellen Level zerstörst, wirst du zum nächsten Level teleportiert",
 ["Each time you play this missions enemy hogs will play in a random order"]="Jedes Mal, wenn du diese Mission spielst, werden die feindlichen Igel in einer zufälligen Reihenfolge spielen", -- A_Space_Adventure:death02
 ["Each turn is only ONE SECOND!"]="Jeder Zug dauert nur EINE SEKUNDE!",
 ["Each turn you get 1-3 random weapons"]="Du bekommst jede Runde 1-3 zufällig gewählte Waffen",
@@ -627,8 +627,8 @@
 ["Epilogue"] = "Epilog", -- A_Classic_Fairytale:epil
 ["Eugene"] = "Eugen", -- 
 ["Europe"]="Europa",
+["Every 2 rings, the ring color will be green and you'll get an extra flying saucer"]="Alle 2 Ringe wird der Ring grün und du erhältst eine neue fliegende Untertasse",
 ["Every 2 rings, the ring color will be green and you'll get an extra flying saucer."]="Alle 2 Ringe wird der Ring grün und du erhältst eine neue fliegende Untertasse.",
-["Every 2 rings, the ring color will be green and you'll get an extra flying saucer"]="Alle 2 Ringe wird der Ring grün und du erhältst eine neue fliegende Untertasse",
 ["Every 2 rings you'll get extra flying saucers"]="Alle 2 Ringe erhältst du neue fliegende Untertassen",
 ["Every 2 rings you'll get extra flying saucers."] = "Alle 2 Ringe erhältst du neue fliegende Untertassen.", -- A_Space_Adventure:ice02
 ["Everyone knows this."]="Das weiß jeder.",
@@ -1961,8 +1961,8 @@
 ["So I shook my fist in the air!"] = "Und so schlug ich die Faust gen Himmel!", -- A_Classic_Fairytale:epil
 ["Soldier"]="Soldat",
 ["So, let me tell you what I know about Professor Hogevil."]="Also, lass mich erzählen, was ich über Professor Bösigel weiß.",
+["Some parts of the land are indestructible"]="Einige Teile des Landes sind unzerstörbar",
 ["Some parts of the land are indestructible."]="Einige Teile des Landes sind unzerstörbar.",
-["Some parts of the land are indestructible"]="Einige Teile des Landes sind unzerstörbar",
 ["Some sick game of yours?!"] = "Ein krankes Spiel von euch?!", -- A_Classic_Fairytale:queen
 ["Some weapons can be dropped from the rope."] = "Einige Waffen können vom Seil aus fallen gelassen werden.", -- Basic_Training_-_Rope
 ["Somewhere else on the planet of fruits, Captain Lime helps Hog Solo"]="Irgendwo anders auf dem Obstplaneten hilft Leutnant Limone Igel Einsam",
@@ -2150,6 +2150,7 @@
 ["Team Identity Mode"]="Team-Identitätsmodus",
 ["TEAM IDENTITY MODE"]="TEAMIDENTITÄTSMODUS",
 ["Team of Hearts"]="Team der Herzen",
+["Teams are tied! Continue playing rounds until we have a winner!"] = "Gleichstand! Spielt weiter Runden, bis wir einen Sieger haben!", -- Space_Invasion
 ["Team’s best heights per round"]="Die Besthöhen der Teams pro Runde",
 ["Teamwork 2"] = "Teamwork 2", -- User_Mission_-_Teamwork_2
 ["Teamwork"] = "Teamwork", -- User_Mission_-_Teamwork
@@ -2233,8 +2234,8 @@
 ["The First Encounter"]="Das erste Zusammentreffen",
 ["The first hedgehog to kill someone becomes the Mutant."] = "Der erste Igel, der einen anderen tötet, mutiert.", -- Mutant
 ["The first stop"]="Der erste Halt",
+["The first turn will last 25 sec and every other turn 15 sec"]="Der 1. Zug wird 25 Sek., jeder andere Zug 15 Sek. dauern",
 ["The first turn will last 25 sec and every other turn 15 sec."]="Der 1. Zug wird 25 Sek., jeder andere Zug 15 Sek. dauern.",
-["The first turn will last 25 sec and every other turn 15 sec"]="Der 1. Zug wird 25 Sek., jeder andere Zug 15 Sek. dauern",
 ["The flag will respawn next round."]="Die Flagge wird nächste Runde wieder auftauchen.",
 ["The flood has stopped! Challenge over."] = "Die Flut ist vorbei! Herausforderung beendet.", -- User_Mission_-_That_Sinking_Feeling
 ["The food bites back"]="Das Essen beißt zurück",
@@ -2308,6 +2309,8 @@
 ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "Die Geister der Ahnen sind sicherlich erfreut, Undichte Stelle.", -- A_Classic_Fairytale:first_blood
 ["The targets will guide you through the training."] = "Die Zielscheiben führen dich durch die Übung.", -- Basic_Training_-_Rope
 ["The team continued their quest of finding the rest of the tribe."] = "Das Team setzte die Suche nach dem Rest ihres Stammes fort.", -- A_Classic_Fairytale:queen
+["The teams were tied, so an additional round has been played to determine the winner."] = "Die Teams hatten Gleichstand, also wurde eine weitere Runde gespielt, um den Sieger zu bestimmen.", -- Space_Invasion
+["The teams were tied, so %d additional rounds have been played to determine the winner."] = "Die Teams hatten Gleichstand, also wurden %d weitere Runden gespielt, um den Sieger zu bestimmen.", -- Space_Invasion
 ["The time that you have left when you reach the blue hedgehog will be added to the next turn."]="Deine verbleibende Zeit wird zu deinem nächsten Zug addiert, sobald du den blauen Igel erreichst.",
 ["The Torment"]="Die Qual",
 ["The truth about Professor Hogevil"]="Die Wahrheit über Professor Bösigel",
@@ -2375,6 +2378,7 @@
 ["Throw a grenade to destroy the target!"] = "Wirf eine Granate, um die Zielscheibe zu zerstören!", -- Basic_Training_-_Grenade
 ["Thug #%d"] = "Rowdy %d", -- A_Space_Adventure:death01
 ["thug"]="Rowdy",
+["Tie-breaking round %d"] = "%d. Stichrunde", -- Space_Invasion
 ["Timbers"] = "Holz", -- 
 ["Time: %.1fs"] = "Zeit: %.1fs", -- Racer, TechRacer
 ["Time: %.3fs by %s"] = "Zeit: %.3fs von %s", -- TrophyRace
@@ -2425,8 +2429,8 @@
 ["To win the game you have to find the right crate."]="Um das Spiel zu gewinnen, musst du die richtige Kiste finden.",
 ["To win the game you have to go next to Thanta."]="Um das Spiel zu gewinnen, musst du neben Thanta stehen.",
 ["To win the game you have to go to the surface."]="Um das Spiel zu gewinnen, musst du an die Oberfläche gelangen.",
+["To win the game you have to pass into the rings in time"]="Um das Spiel zu gewinnen, musst du rechtzeitig durch die Ringe fliegen",
 ["To win the game you have to pass into the rings in time."]="Um das Spiel zu gewinnen, musst du rechtzeitig durch die Ringe fliegen.",
-["To win the game you have to pass into the rings in time"]="Um das Spiel zu gewinnen, musst du rechtzeitig durch die Ringe fliegen",
 ["To win the game you have to stand next to Thanta."] = "Um das Spiel zu gewinnen, musst du neben Thanta stehen.", -- A_Space_Adventure:ice01
 ["Toxic Team"]="Giftige Gegner",
 ["Track completed!"] = "Strecke durchlaufen!", -- Racer, TechRacer
@@ -2512,16 +2516,16 @@
 ["Use space button twice to change flying saucer while being in air."]="Drücke die Angriffstaste 2 mal, um die fliegende Untertasse im Flug zu wechseln",
 ["Use space button twice to change flying saucer while floating in mid-air."]="Drücke die Angriffstaste 2 mal, um die fliegende Untertasse im Flug zu wechseln.",
 ["Use the attack key twice to change the flying saucer while being in air."] = "Benutze die Angriffstaste 2 mal, um die fliegende Untertasse in der Luft zu wechseln.", -- A_Space_Adventure:ice02
+["Use the attack key twice to change the flying saucer while floating in mid-air"] = "Benutze die Angriffstaste 2 mal, um die Fliegende Untertasse während des Fluges zu wechseln", -- A_Space_Adventure:ice02
 ["Use the attack key twice to change the flying saucer while floating in mid-air."] = "Benutze die Angriffstaste 2 mal, um die Fliegende Untertasse während des Fluges zu wechseln.", -- A_Space_Adventure:ice02
-["Use the attack key twice to change the flying saucer while floating in mid-air"] = "Benutze die Angriffstaste 2 mal, um die Fliegende Untertasse während des Fluges zu wechseln", -- A_Space_Adventure:ice02
 ["Use the bazooka and the flying saucer to get the freezer."] = "Benutze die Bazooka und die fliegende Untertasse, um die Eiskanone zu ergattern.", -- A_Space_Adventure:ice01
 ["Use the bazooka and the flying saucer to get the icegun."]="Benutze die Bazooka und die fliegende Untertasse, um die Eiskanone zu ergattern",
 ["Use the flying saucer from the crate to fly to the moon."] = "Benutze die fliegende Untertasse aus der Kiste, um zum Mond zu fliegen.", -- A_Space_Adventure:cosmos
 ["Use the flying saucer to fly to the other planets."] = "Benutze die fliegende Untertasse, um zu den anderen Planeten zu fliegen.", -- A_Space_Adventure:cosmos
 ["Use the parachute ([Space] while in air) to get the next crate"]="Benutze den Fallschirm ([Leer] drücken, wenn in der Luft), um die nächste Kiste zu erhalten.",
 ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"]="Benutze das Portalgewehr, um zur nächsten Kiste zu kommen,|dann benutze das nächste Werkzeug, um zum letzten Ziel zu kommen.|",
+["Use the RC plane and destroy the all the targets"]="Benutze das Funkflugzeug und zerstöre alle Zielscheiben",
 ["Use the RC plane and destroy the all the targets."]="Benutze das Funkflugzeug und zerstöre alle Zielscheiben.",
-["Use the RC plane and destroy the all the targets"]="Benutze das Funkflugzeug und zerstöre alle Zielscheiben",
 ["Use the rope in order to catch the blue hedgehog"]="Benutze das Seil, um den blauen Igel zu fangen.",
 ["Use the rope to complete the obstacle course!"] = "Benutze das Seil, um die Hindernisstrecke abzuschließen!", -- Basic_Training_-_Rope
 ["Use the rope to get on the head of the mole, young one!"]="Benutze das Seil, um auf den Kopf des Maulwurfs zu gelangen, Jüngling!",
@@ -2552,8 +2556,8 @@
 ["Use this mode to tag gears for win/lose conditions."]="Benutze diesen Modus, um Gears für Sieg-/Niederlagebedingungen zu markieren.",
 ["Use this mode to waypoints"]="Benutze diesen Modus, um Wegpunkte zu platzieren",
 ["Use your ammo wisely."]="Benutze deine Munition weise.",
+["Use your available weapons in order to eliminate the enemies"]="Benutze deine verfügbaren Waffen, um die Gegner zu eliminieren",
 ["Use your available weapons in order to eliminate the enemies."]="Benutze deine verfügbaren Waffen, um die Gegner zu eliminieren.",
-["Use your available weapons in order to eliminate the enemies"]="Benutze deine verfügbaren Waffen, um die Gegner zu eliminieren",
 ["Use your ready time to think."]="Benutze deine Vorbereitungszeit zum Denken.",
 ["Use your rope to collect all crates as fast as possible."] = "Benutze dein Seil, um alle Kisten so schnell wie möglich einzusammeln.", -- 
 ["Use your rope to get from start to finish as fast as you can!"]="Nutze das Seil, um von Start zu Ziel zu gelangen – so schnell du kannst!",
@@ -2796,8 +2800,8 @@
 ["You can dive with your flying saucer!"] = "Mit deiner fliegenden Untertasse kannst du abtauchen!", -- Basic_Training_-_Flying_Saucer
 ["You can even change your aiming direction in mid-flight if you first hold [Precise] and then press [Up] or [Down]."] = "Du kannst sogar deine Zielrichtung im Flug ändern, wenn du|zuerst [Genaues Zielen] gedrückt hältst, und dann [Hoch] oder [Runter] drückst.", -- Basic_Training_-_Flying_Saucer
 ["You can further customize the race by changing the scheme script parameter."] = "Du kannst das Rennen ferner bearbeiten, indem du den Skriptparameter im Schema änderst.", -- TechRacer
+["You can only use the sniper rifle or the watermelon bomb"]="Du kannst nur das Scharfschützengewehr oder die Wassermelonenbombe benutzen",
 ["You can only use the sniper rifle or the watermelon bomb."]="Du kannst nur das Scharfschützengewehr oder die Wassermelonenbombe benutzen.",
-["You can only use the sniper rifle or the watermelon bomb"]="Du kannst nur das Scharfschützengewehr oder die Wassermelonenbombe benutzen",
 ["You can practice moving around and using utilities in this mission.|However, it will never end!"] = "In dieser Mission kannst du üben, dich herumbewegen|und Werkzeuge benutzen.|Aber sie wird niemals enden!", -- A_Classic_Fairytale:epil
 ["You can set the bounciness of grenades (and grenade-like weapons)."] = "Du kannst die Sprunghaftigkeit von Granaten (und granatenähnlichen Waffen) setzen.", -- Basic_Training_-_Grenade
 ["You can’t open a portal on the blue surface."] = "Du kannst kein Portal auf der blauen Oberfläche öffnen.", -- portal
@@ -2918,16 +2922,16 @@
 ["You killed my father, you monster!"]="Du hast meinen Vater umgebracht, du Monster!",
 ["You know...taking a stroll."]="Du weißt schon … umherbummeln.",
 ["You know what? I don't even regret anything!"]="Weißt du was? Ich bereue nichts!",
+["You'll get an extra sniper rifle every time you kill an enemy hog with a limit of max 4 rifles"] = "Du erhältst ein zusätzliches Scharfschützengewehr für jeden Igel, den du tötest (max. 4 Gewehre)", -- A_Space_Adventure:fruit03
 ["You'll get an extra sniper rifle every time you kill an enemy hog with a limit of max 4 rifles."] = "Du erhältst ein zusätzliches Scharfschützengewehr für jeden Igel, den du tötest (max. 4 Gewehre).", -- A_Space_Adventure:fruit03
-["You'll get an extra sniper rifle every time you kill an enemy hog with a limit of max 4 rifles"] = "Du erhältst ein zusätzliches Scharfschützengewehr für jeden Igel, den du tötest (max. 4 Gewehre)", -- A_Space_Adventure:fruit03
+["You'll get an extra teleport every time you kill an enemy hog with a limit of max 2 teleports"]="Du erhältst einen zusätzlichen Teleporter für jeden getöteten Igel (max. 2 Teleporter)", -- A_Space_Adventure:fruit03
 ["You'll get an extra teleport every time you kill an enemy hog with a limit of max 2 teleports."]="Du erhältst einen zusätzlichen Teleporter für jeden getöteten Igel (max. 2 Teleporter).", -- A_Space_Adventure:fruit03
-["You'll get an extra teleport every time you kill an enemy hog with a limit of max 2 teleports"]="Du erhältst einen zusätzlichen Teleporter für jeden getöteten Igel (max. 2 Teleporter)", -- A_Space_Adventure:fruit03
+["You'll get extra time in case you need it when you pass a ring"]="Du erhältst Bonuszeit, wenn du sie brauchst, sobald du einen Ring passierst", -- A_Space_Adventure:ice02
 ["You'll get extra time in case you need it when you pass a ring."]="Du erhältst Bonuszeit, wenn du sie brauchst, sobald du einen Ring passierst.", -- A_Space_Adventure:ice02
-["You'll get extra time in case you need it when you pass a ring"]="Du erhältst Bonuszeit, wenn du sie brauchst, sobald du einen Ring passierst", -- A_Space_Adventure:ice02
+["You'll have only 2 watermelon bombs during the game"]="Du hast nur 2 Wassermelonenbomben während des Spiels", -- A_Space_Adventure:fruit03
 ["You'll have only 2 watermelon bombs during the game."]="Du hast nur 2 Wassermelonenbomben während des Spiels.", -- A_Space_Adventure:fruit03
-["You'll have only 2 watermelon bombs during the game"]="Du hast nur 2 Wassermelonenbomben während des Spiels", -- A_Space_Adventure:fruit03
+["You'll have only one RC plane at the start of the mission"]="Am Anfang der Mission hast du nur ein Funkflugzeug",
 ["You'll have only one RC plane at the start of the mission."]="Am Anfang der Mission hast du nur ein Funkflugzeug.",
-["You'll have only one RC plane at the start of the mission"]="Am Anfang der Mission hast du nur ein Funkflugzeug",
 ["You'll have to eliminate Captain Lime at the end."]="Am Ende musst du Leutnant Limone eliminieren.", -- A_Space_Adventure:fruit02
 ["You'll have to eliminate the Fruit Assassins at the end."] = "Am Ende musst du die Obstassassinen eliminieren.", -- A_Space_Adventure:fruit02
 ["You'll have to eliminate the Strawberry Assassins at the end."]="Am Ende musst du die Erdbeerassassinen eliminieren.", -- A_Space_Adventure:fruit02
--- a/share/hedgewars/Data/Locale/de.txt	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/de.txt	Mon Sep 24 11:18:48 2018 -0400
@@ -393,19 +393,14 @@
 ; Round ends in a draw
 02:04=Unentschieden
 02:04=Es ist unentschieden!
-02:04=Keiner gewinnt! Unentschieden
-02:04=Unglaublich, diese Runde endet unentschieden
 02:04=Unentschieden, wie langweilig
-02:04=Unmöglich! Es ist unentschieden
 02:04=Unentschieden! Jetzt müssen wir von vorne anfangen …
-02:04=Spiel vorbei! Es hat niemand gewonnen
 02:04=Unentschieden, was für eine Enttäuschung!
-02:04=Heute ist jeder ein Verlierer
+02:04=Unentschieden. Alle kämpften bis zum bitteren Ende
 02:04=Hey, wo ist der Sieger?
 02:04=Wo sind all die Igel hin?
 02:04=Öde! Ich will mein Geld zurück!
-
-02:04=Ach nö, es steht Unentschieden!
+02:04=Alle sind tot. Gut so!
 
 ; New health crate
 02:05=Hilfspaket gesichtet!
@@ -661,7 +656,6 @@
 02:06=Es ist gefährlich da draußen. Nimm dies!
 02:06=Der Himmel spielt gern mit Sterblichen
 02:06=Peng-peng in einer Kiste!
-02:06=Können ein paar von euch bitte sterben?
 
 02:06=Waffenkiste: Nur echt mit dem Fragezeichen
 02:06=Ein schlagkräftiges Argument!
--- a/share/hedgewars/Data/Locale/en.txt	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/en.txt	Mon Sep 24 11:18:48 2018 -0400
@@ -371,16 +371,9 @@
 ; Round ends in a draw
 02:04=Round draw
 02:04=It's a draw!
-02:04=Nobody wins! Round draw
-02:04=Unbelievable, the round ended in a draw
 02:04=Round draw, how boring
-02:04=Impossible! The round ends in a draw
 02:04=Round draw! Now we have to start again …
-02:04=Game over! Nobody's a winner today
 02:04=Round draw, so disappointing!
-02:04=Nobody wins, how boring!
-02:04=Everyone's a loser today
-02:04=A draw! World balance has been sustained
 02:04=A draw. Everyone fought bravely to the end
 02:04=Hey! Where is the winner?!
 02:04=Where have all the hedgehogs gone?
@@ -647,7 +640,6 @@
 02:06=It's dangerous to go alone. Take this!
 02:06=Heaven likes to play with mortals
 02:06=Pew pew in a box!
-02:06=Could more of you die, please?
 
 ; New utility crate
 02:07=Tooltime!
--- a/share/hedgewars/Data/Locale/es.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/es.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/fr.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/fr.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
       ["-1 to anyone for a suicide"] = "-1 pour cause de suicide",
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -1582,8 +1582,8 @@
 	  ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "L'une des deux tribus était pacifique, passant son temps à chasser et à s'entraîner, appréciant les petits plaisirs de la vie",
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1666,8 +1666,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
       ["Play with me!"] = "Joue avec moi !",
@@ -1860,8 +1860,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2182,6 +2182,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2344,6 +2345,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
       ["The Torment"] = "Le supplice",
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2415,6 +2418,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/hedgewars_ar.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1346,6 +1346,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4123,10 +4127,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4147,10 +4147,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4167,18 +4163,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4191,14 +4175,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4230,5 +4206,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_bg.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1353,6 +1353,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4159,10 +4163,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4183,10 +4183,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4203,18 +4199,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4227,14 +4211,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4266,5 +4242,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_cs.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1384,6 +1384,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4233,10 +4237,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4257,10 +4257,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4277,18 +4273,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4301,14 +4285,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4340,5 +4316,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_da.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_da.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1371,6 +1371,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4229,10 +4233,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4253,10 +4253,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4273,18 +4269,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4297,14 +4281,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4336,5 +4312,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -966,7 +966,7 @@
 
 Please check the host name and port settings and/or try again later.</source>
         <translation>Die Verbindung wurde vom Host abgelehnt oder die maximale Wartezeit ist abgelaufen. Dies könnte einen der folgenden Gründe haben:
-– Das Hedgewars-Server-Programm läuft momentant nicht auf dem Host
+– Das Hedgewars-Server-Programm läuft momentan nicht auf dem Host
 – Die angegebene Portnummer ist falsch
 – Es gibt ein temporäres Netzwerkproblem
 
@@ -1187,7 +1187,7 @@
     <name>PageAdmin</name>
     <message>
         <source>Clear Accounts Cache</source>
-        <translation>Zwischenspeicher leeren</translation>
+        <translation>Konten-Zwischenspeicher leeren</translation>
     </message>
     <message>
         <source>Fetch data</source>
@@ -1228,7 +1228,7 @@
     </message>
     <message>
         <source>Expiration</source>
-        <translation>Ablaufzeitpunkt</translation>
+        <translation>Ablaufzeit</translation>
     </message>
     <message>
         <source>Reason</source>
@@ -1545,6 +1545,10 @@
             <numerusform>&lt;b&gt;%1&lt;/b&gt; erledigte &lt;b&gt;%2&lt;/b&gt; der eigenen Igel.</numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation>Da alle die gleiche Klanfarbe hatten, gab es keinen Grund für einen Kampf. Und wenn sie nicht gestorben sind, dann leben die Igel noch heute in Frieden.</translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4732,7 +4736,7 @@
     </message>
     <message>
         <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
-        <translation>/rnd: Wirft eine virtuelle Münze und antwortet mit »heads« oder »tails«</translation>
+        <translation>/rnd: Wirft eine virtuelle Münze und antwortet mit »Kopf« oder »Zahl«</translation>
     </message>
     <message>
         <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
@@ -4756,7 +4760,7 @@
     </message>
     <message>
         <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation>/greeting &lt;Nachricht&gt;: Begrüßungsnachricht für Spieler, die diesen Raum betreten, setzen</translation>
+        <translation type="vanished">/greeting &lt;Nachricht&gt;: Begrüßungsnachricht für Spieler, die diesen Raum betreten, setzen</translation>
     </message>
     <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
@@ -4780,7 +4784,7 @@
     </message>
     <message>
         <source>/save &lt;parameter&gt;</source>
-        <translation>/save &lt;Parameter&gt;</translation>
+        <translation type="vanished">/save &lt;Parameter&gt;</translation>
     </message>
     <message>
         <source>/stats: Query server stats</source>
@@ -4800,15 +4804,15 @@
     </message>
     <message>
         <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation>/saveroom &lt;Dateiname&gt;: Raumeinstellungen in eine Datei speichern</translation>
+        <translation type="vanished">/saveroom &lt;Dateiname&gt;: Raumeinstellungen in eine Datei speichern</translation>
     </message>
     <message>
         <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation>/loadroom &lt;Dateiname&gt;: Raumeinstellungen aus einer Datei laden</translation>
+        <translation type="vanished">/loadroom &lt;Dateiname&gt;: Raumeinstellungen aus einer Datei laden</translation>
     </message>
     <message>
         <source>/delete &lt;parameter&gt;</source>
-        <translation>/delete &lt;Parameter&gt;</translation>
+        <translation type="vanished">/delete &lt;Parameter&gt;</translation>
     </message>
     <message>
         <source>List of lobby chat commands:</source>
@@ -4824,11 +4828,11 @@
     </message>
     <message>
         <source>Unknown command:</source>
-        <translation>Unbekannter Befehl</translation>
+        <translation type="vanished">Unbekannter Befehl</translation>
     </message>
     <message>
         <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation>Sag »/help« im Chat für eine Liste von Befehlen</translation>
+        <translation type="vanished">Sag »/help« im Chat für eine Liste von Befehlen</translation>
     </message>
     <message>
         <source>room</source>
@@ -4862,5 +4866,97 @@
         <source>Kicked</source>
         <translation>Hinausgeworfen</translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation>Dieser Server lässt nur registrierte Server rein.</translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation>Kopf</translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation>Zahl</translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation>Dieser Server unterstützt keine Wiederholungen!</translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation>/greeting [Nachricht]: Setze oder leere die Begrüßungsnachricht für Spieler, die den Raum betreten</translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation>/save &lt;Konfig-ID&gt; &lt;Konfig-Name&gt;: Aktuelle Raumeinstellung als Wahloption für /callvote map hinzufügen</translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation>/delete &lt;Konfig-ID&gt;: Eine wählbare Raumeinstellung löschen</translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation>/saveroom &lt;Dateiname&gt;: Alle wählbaren Raumeinstellungen (und die Begrüßung) dieses Raums in eine Datei speichern</translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation>/loadroom &lt;Dateiname&gt;: Wählbare Raumeinstellungen (und Begrüßung) aus einer Datei laden</translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation>»Registered only«-Zustand umgeschaltet.</translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation>Superkraft aktiviert.</translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation>Unbekannter Befehl oder ungültige Parameter. Sag »/help« im Chat für eine Liste an Befehlen.</translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation>Du kannst dich nicht selbst hinauswerfen!</translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation>Du kannst nicht den einzigen anderen Spieler hinauswerfen!</translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation>Der Spieler befindet sich nicht in deinem Raum.</translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation>Dieser Spieler wird vor Hinauswürfen geschützt.</translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation>Du bist nicht der Raumleiter oder ein Server-Admin!</translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation>Du bist bereits der Raumleiter.</translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation>Begrüßungsnachricht geleert.</translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation>Begrüßungsnachricht gesetzt.</translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation>/callvote kick: Dies ist nur in Räumen ohne Raumleiter erlaubt.</translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation>/callvote map: Keine Karten verfügbar.</translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation>Du bist der neue Raumleiter!</translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_el.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_el.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1365,6 +1365,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4207,10 +4211,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4231,10 +4231,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4251,18 +4247,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4275,14 +4259,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4314,5 +4290,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_en.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1461,6 +1461,10 @@
             <numerusform>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of their own hedgehogs.</numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4540,7 +4544,7 @@
     </message>
     <message>
         <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</translation>
+        <translation type="vanished">/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</translation>
     </message>
     <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
@@ -4564,7 +4568,7 @@
     </message>
     <message>
         <source>/save &lt;parameter&gt;</source>
-        <translation>/save &lt;parameter&gt;</translation>
+        <translation type="vanished">/save &lt;parameter&gt;</translation>
     </message>
     <message>
         <source>/stats: Query server stats</source>
@@ -4584,15 +4588,15 @@
     </message>
     <message>
         <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation>/saveroom &lt;file name&gt;: Save room configuration into a file</translation>
+        <translation type="vanished">/saveroom &lt;file name&gt;: Save room configuration into a file</translation>
     </message>
     <message>
         <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation>/loadroom &lt;file name&gt;: Load room configuration from a file</translation>
+        <translation type="vanished">/loadroom &lt;file name&gt;: Load room configuration from a file</translation>
     </message>
     <message>
         <source>/delete &lt;parameter&gt;</source>
-        <translation>/delete &lt;parameter&gt;</translation>
+        <translation type="vanished">/delete &lt;parameter&gt;</translation>
     </message>
     <message>
         <source>List of lobby chat commands:</source>
@@ -4608,11 +4612,11 @@
     </message>
     <message>
         <source>Unknown command:</source>
-        <translation>Unknown command:</translation>
+        <translation type="vanished">Unknown command:</translation>
     </message>
     <message>
         <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation>Say ‘/help’ in chat for a list of commands</translation>
+        <translation type="vanished">Say ‘/help’ in chat for a list of commands</translation>
     </message>
     <message>
         <source>room</source>
@@ -4646,5 +4650,97 @@
         <source>Kicked</source>
         <translation>Kicked</translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation>This server only allows registered users to join.</translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation>heads</translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation>tails</translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation>This server does not support replays!</translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation>/greeting [message]: Set or clear greeting message to be shown to players who join the room</translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation>/delete &lt;config ID&gt;: Delete a votable room configuration</translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation>‘Registered only’ state toggled.</translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation>Super power activated.</translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation>Unknown command or invalid parameters. Say ‘/help’ in chat for a list of commands.</translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation>You can’t kick yourself!</translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation>You can’t kick the only other player!</translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation>The player is not in your room.</translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation>This player is protected from being kicked.</translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation>You’re not the room master or a server admin!</translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation>You’re already the room master.</translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation>Greeting message cleared.</translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation>Greeting message set.</translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation>/callvote kick: This is only allowed in rooms without a room master.</translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation>/callvote map: No maps available.</translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation>You’re the new room master!</translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_es.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_es.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1371,6 +1371,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4225,10 +4229,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,10 +4249,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4269,18 +4265,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4293,14 +4277,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4332,5 +4308,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_fi.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1422,6 +1422,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4425,10 +4429,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4449,10 +4449,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4469,18 +4465,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4493,14 +4477,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4532,5 +4508,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1447,6 +1447,10 @@
             <numerusform>&lt;b&gt;%1&lt;/b&gt; a tué &lt;b&gt;%2&lt;/b&gt; de ses propres hérissons.</numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4607,10 +4611,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4631,10 +4631,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4651,18 +4647,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4675,14 +4659,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4714,5 +4690,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_gd.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_gd.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1456,6 +1456,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4473,10 +4477,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4497,10 +4497,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4517,18 +4513,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4541,14 +4525,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4580,5 +4556,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_gl.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_gl.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1345,6 +1345,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4150,10 +4154,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4174,10 +4174,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4194,18 +4190,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4218,14 +4202,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4257,5 +4233,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_hu.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1330,6 +1330,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4140,10 +4144,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4164,10 +4164,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4184,18 +4180,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4208,14 +4192,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4247,5 +4223,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_it.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1430,6 +1430,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4479,10 +4483,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4503,10 +4503,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4523,18 +4519,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4547,14 +4531,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4586,5 +4562,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ja.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1340,6 +1340,10 @@
             <numerusform>&lt;b&gt;%1&lt;/b&gt;は自分の針鼠を&lt;b&gt;%2&lt;/b&gt;匹犠牲にしました。</numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4086,10 +4090,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4110,10 +4110,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4130,18 +4126,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4154,14 +4138,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4193,5 +4169,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ko.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1307,6 +1307,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -3981,10 +3985,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4005,10 +4005,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4025,18 +4021,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4049,14 +4033,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4088,5 +4064,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_lt.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -660,45 +660,45 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="1814"/>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="1822"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2206"/>
         <source>Cannot save record to file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2128"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2136"/>
         <source>Hedgewars Demo File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2129"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2137"/>
         <source>Hedgewars Save File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2264"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2272"/>
         <source>Unknown network error (possibly missing SSL library).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2268"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2276"/>
         <source>This feature requires an Internet connection, but you don&apos;t appear to be online (error code: %1).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2273"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
         <source>Internal error: Reply object is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1011,17 +1011,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="579"/>
         <source>Server authentication error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="781"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="801"/>
         <source>Room destroyed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="538"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="558"/>
         <source>You got kicked</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1041,24 +1041,24 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="724"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="856"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="744"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="876"/>
         <source>%1 *** %2 has joined the room</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="871"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="891"/>
         <source>%1 *** %2 has left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="878"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="898"/>
         <source>%1 *** %2 has left (message: &quot;%3&quot;)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="883"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="886"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="903"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="906"/>
         <source>%1 *** %2 has left (%3)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1546,7 +1546,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="76"/>
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="166"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="167"/>
         <source>Health graph</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1566,7 +1566,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="266"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="267"/>
         <source>The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1575,7 +1575,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="274"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="275"/>
         <source>The best killer is &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills in a turn.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1584,7 +1584,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="281"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="282"/>
         <source>A total of &lt;b&gt;%1&lt;/b&gt; hedgehog(s) were killed during this round.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1593,7 +1593,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="356"/>
         <source>(%1 kill)</source>
         <extracomment>Number of kills in stats screen, written after the team name</extracomment>
         <translation type="unfinished">
@@ -1603,7 +1603,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="362"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
         <source>(%1 %2)</source>
         <extracomment>For custom number of points in the stats screen, written after the team name. %1 is the number, %2 is the word. Example: “4 points”</extracomment>
         <translation type="unfinished">
@@ -1613,7 +1613,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="375"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="373"/>
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot their own hedgehogs for &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1622,7 +1622,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="383"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="381"/>
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of their own hedgehogs.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1631,7 +1631,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="391"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="389"/>
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -1639,6 +1639,11 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="406"/>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -1785,7 +1790,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="147"/>
         <source>Start fighting (requires at least 2 teams)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2525,13 +2530,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="709"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="707"/>
         <source>%1 (%2%) - %3</source>
         <extracomment>Video encoding list entry. %1 = file name, %2 = percent complete, %3 = video operation type (e.g. “encoding”)</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="712"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="710"/>
         <source>encoding</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2929,7 +2934,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="295"/>
         <source>Playing teams</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3321,12 +3326,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2289"/>
         <source>Not all players are ready</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2282"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2290"/>
         <source>Are you sure you want to start this game?
 Not all players are ready.</source>
         <translation type="unfinished"></translation>
@@ -3359,18 +3364,18 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2168"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2176"/>
         <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="418"/>
         <source>Hedgewars - Success</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2169"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2177"/>
         <source>All file associations have been set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2174"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2182"/>
         <source>File association failed.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3401,7 +3406,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagenet.cpp" line="118"/>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="253"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="257"/>
         <source>Netgame - Error</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3411,7 +3416,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="254"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="258"/>
         <source>Please enter room name</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3462,18 +3467,18 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="589"/>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="618"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="587"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="616"/>
         <source>Videos - Are you sure?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="590"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="588"/>
         <source>Do you really want to delete the video &apos;%1&apos;?</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="619"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="617"/>
         <source>Do you really want to remove %1 file(s)?</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3906,7 +3911,7 @@
 <context>
     <name>TeamSelWidget</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="300"/>
         <source>At least two teams are required to play!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4681,447 +4686,527 @@
 <context>
     <name>server</name>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="99"/>
         <source>New voting started</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="101"/>
         <source>kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="102"/>
         <source>map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="103"/>
         <source>pause</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="104"/>
         <source>new seed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="59"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
         <source>/maxteams: specify number from 2 to 8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
         <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="90"/>
-        <source>Nickname is already in use</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
-        <source>No checker rights</source>
+        <source>Nickname is already in use</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
-        <source>Authentication failed</source>
+        <source>This server only allows registered users to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
-        <source>60 seconds cooldown after kick</source>
+        <source>No checker rights</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
-        <source>Kicked</source>
+        <source>Authentication failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
-        <source>kicked</source>
+        <source>60 seconds cooldown after kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
-        <source>Reconnected too fast</source>
+        <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
-        <source>Ping timeout</source>
+        <source>kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
-        <source>/info &lt;player&gt;: Show info about player</source>
+        <source>Reconnected too fast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
-        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
+        <source>Ping timeout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
-        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
+        <source>heads</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
-        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
+        <source>tails</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
-        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
+        <source>This server does not support replays!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
-        <source>/help: Show chat command help</source>
+        <source>/info &lt;player&gt;: Show info about player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
-        <source>/callvote [arguments]: Start a vote</source>
+        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
-        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
+        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
+        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
-        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
+        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
-        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
+        <source>/help: Show chat command help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
-        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
+        <source>/callvote [arguments]: Start a vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
-        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
-        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
+        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
-        <source>/save &lt;parameter&gt;</source>
+        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
-        <source>/stats: Query server stats</source>
+        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
-        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
+        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
-        <source>/fix: Force this room to stay open when it is empty</source>
+        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
-        <source>/unfix: Undo the /fix command</source>
+        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
+        <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
+        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
-        <source>/delete &lt;parameter&gt;</source>
+        <source>/fix: Force this room to stay open when it is empty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+        <source>/unfix: Undo the /fix command</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>List of room chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
-        <source>Commands for server admins only:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
-        <source>Unknown command:</source>
+        <source>Commands for server admins only:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
+        <source>room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
+        <source>lobby</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
+        <source>(playing)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
+        <source>(spectating)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
+        <source>Player is not online.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
+        <source>The game can&apos;t be started with less than two clans!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <source>Empty config entry.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
+        <source>Access denied.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
+        <source>You&apos;re not the room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <source>Corrupted hedgehogs info!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
+        <source>Too many teams!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
+        <source>Too many hedgehogs!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
+        <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="59"/>
+        <source>Joining not possible: Round is in progress.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <source>This room currently does not allow adding new teams.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
+        <source>Error: The team you tried to remove does not exist.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
+        <source>You can&apos;t remove a team you don&apos;t own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
+        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
+        <source>A room with the same name already exists.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
+        <source>/callvote kick: You need to specify a nickname.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
+        <source>/callvote kick: No such user!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
+        <source>/callvote map: No such map!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
+        <source>/callvote pause: No game in progress!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
+        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
+        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
+        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <source>No such room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <source>Room version incompatible to your Hedgewars version!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <source>Access denied. This room is for registered users only.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
+        <source>You are banned from this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="90"/>
+        <source>Nickname already provided.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="91"/>
+        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="92"/>
+        <source>Protocol already known.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="93"/>
+        <source>Bad number.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="94"/>
+        <source>There&apos;s no voting going on.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="95"/>
+        <source>You already have voted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="96"/>
+        <source>Your vote has been counted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="97"/>
+        <source>Voting closed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="98"/>
+        <source>Pause toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="100"/>
+        <source>Voting expired.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="105"/>
+        <source>hedgehogs per team: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="106"/>
+        <source>You&apos;re the new room master!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="39"/>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
+        <source>Warning! Chat flood protection activated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
-        <source>room</source>
+        <source>Excess flood</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
-        <source>lobby</source>
+        <source>Game messages flood detected - 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
-        <source>(playing)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
-        <source>(spectating)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
-        <source>Player is not online.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
-        <source>The game can&apos;t be started with less than two clans!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
-        <source>Empty config entry.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
-        <source>Access denied.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
-        <source>You&apos;re not the room master!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
-        <source>Corrupted hedgehogs info!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
-        <source>Too many teams!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
-        <source>Too many hedgehogs!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
-        <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="53"/>
-        <source>Joining not possible: Round is in progress.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
-        <source>This room currently does not allow adding new teams.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
-        <source>Error: The team you tried to remove does not exist.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
-        <source>You can&apos;t remove a team you don&apos;t own.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
-        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
-        <source>A room with the same name already exists.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
-        <source>/callvote kick: You need to specify a nickname.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
-        <source>/callvote kick: No such user!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
-        <source>/callvote map: No such map!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
-        <source>/callvote pause: No game in progress!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
-        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
-        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
-        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
-        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
-        <source>No such room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
-        <source>Room version incompatible to your Hedgewars version!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
-        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
-        <source>Access denied. This room is for registered users only.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
-        <source>You are banned from this room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
-        <source>Nickname already provided.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
-        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
-        <source>Protocol already known.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
-        <source>Bad number.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
-        <source>There&apos;s no voting going on.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
-        <source>You already have voted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
-        <source>Your vote has been counted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
-        <source>Voting closed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
-        <source>Pause toggled.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
-        <source>Voting expired.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
-        <source>hedgehogs per team: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
-        <source>Warning! Chat flood protection activated</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
-        <source>Excess flood</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
-        <source>Game messages flood detected - 1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>Warning! Joins flood protection activated</source>
         <translation type="unfinished"></translation>
     </message>
--- a/share/hedgewars/Data/Locale/hedgewars_ms.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ms.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -648,45 +648,45 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="1814"/>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="1822"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2206"/>
         <source>Cannot save record to file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2128"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2136"/>
         <source>Hedgewars Demo File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2129"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2137"/>
         <source>Hedgewars Save File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2264"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2272"/>
         <source>Unknown network error (possibly missing SSL library).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2268"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2276"/>
         <source>This feature requires an Internet connection, but you don&apos;t appear to be online (error code: %1).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2273"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
         <source>Internal error: Reply object is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -999,34 +999,34 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="538"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="558"/>
         <source>You got kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="579"/>
         <source>Server authentication error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="871"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="891"/>
         <source>%1 *** %2 has left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="878"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="898"/>
         <source>%1 *** %2 has left (message: &quot;%3&quot;)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="883"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="886"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="903"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="906"/>
         <source>%1 *** %2 has left (%3)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="724"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="856"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="744"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="876"/>
         <source>%1 *** %2 has joined the room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1046,7 +1046,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="781"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="801"/>
         <source>Room destroyed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1532,7 +1532,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="76"/>
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="166"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="167"/>
         <source>Health graph</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1552,28 +1552,28 @@
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="266"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="267"/>
         <source>The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="274"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="275"/>
         <source>The best killer is &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills in a turn.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="281"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="282"/>
         <source>A total of &lt;b&gt;%1&lt;/b&gt; hedgehog(s) were killed during this round.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="356"/>
         <source>(%1 kill)</source>
         <extracomment>Number of kills in stats screen, written after the team name</extracomment>
         <translation type="unfinished">
@@ -1581,7 +1581,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="362"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
         <source>(%1 %2)</source>
         <extracomment>For custom number of points in the stats screen, written after the team name. %1 is the number, %2 is the word. Example: “4 points”</extracomment>
         <translation type="unfinished">
@@ -1589,26 +1589,31 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="375"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="373"/>
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot their own hedgehogs for &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="383"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="381"/>
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of their own hedgehogs.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="391"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="389"/>
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="406"/>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -1755,7 +1760,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="147"/>
         <source>Start fighting (requires at least 2 teams)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2491,13 +2496,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="709"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="707"/>
         <source>%1 (%2%) - %3</source>
         <extracomment>Video encoding list entry. %1 = file name, %2 = percent complete, %3 = video operation type (e.g. “encoding”)</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="712"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="710"/>
         <source>encoding</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2905,7 +2910,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="295"/>
         <source>Playing teams</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3287,12 +3292,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2289"/>
         <source>Not all players are ready</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2282"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2290"/>
         <source>Are you sure you want to start this game?
 Not all players are ready.</source>
         <translation type="unfinished"></translation>
@@ -3325,24 +3330,24 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2168"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2176"/>
         <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="418"/>
         <source>Hedgewars - Success</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2169"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2177"/>
         <source>All file associations have been set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2174"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2182"/>
         <source>File association failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagenet.cpp" line="118"/>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="253"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="257"/>
         <source>Netgame - Error</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3352,7 +3357,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="254"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="258"/>
         <source>Please enter room name</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3403,18 +3408,18 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="589"/>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="618"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="587"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="616"/>
         <source>Videos - Are you sure?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="590"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="588"/>
         <source>Do you really want to delete the video &apos;%1&apos;?</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="619"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="617"/>
         <source>Do you really want to remove %1 file(s)?</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3870,7 +3875,7 @@
 <context>
     <name>TeamSelWidget</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="300"/>
         <source>At least two teams are required to play!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4645,447 +4650,527 @@
 <context>
     <name>server</name>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="99"/>
         <source>New voting started</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="101"/>
         <source>kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="102"/>
         <source>map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="103"/>
         <source>pause</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="104"/>
         <source>new seed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="59"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
         <source>/maxteams: specify number from 2 to 8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
         <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="90"/>
-        <source>Nickname is already in use</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
-        <source>No checker rights</source>
+        <source>Nickname is already in use</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
-        <source>Authentication failed</source>
+        <source>This server only allows registered users to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
-        <source>60 seconds cooldown after kick</source>
+        <source>No checker rights</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
-        <source>Kicked</source>
+        <source>Authentication failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
-        <source>kicked</source>
+        <source>60 seconds cooldown after kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
-        <source>Reconnected too fast</source>
+        <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
-        <source>Ping timeout</source>
+        <source>kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
-        <source>/info &lt;player&gt;: Show info about player</source>
+        <source>Reconnected too fast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
-        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
+        <source>Ping timeout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
-        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
+        <source>heads</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
-        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
+        <source>tails</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
-        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
+        <source>This server does not support replays!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
-        <source>/help: Show chat command help</source>
+        <source>/info &lt;player&gt;: Show info about player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
-        <source>/callvote [arguments]: Start a vote</source>
+        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
-        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
+        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
+        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
-        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
+        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
-        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
+        <source>/help: Show chat command help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
-        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
+        <source>/callvote [arguments]: Start a vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
-        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
-        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
+        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
-        <source>/save &lt;parameter&gt;</source>
+        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
-        <source>/stats: Query server stats</source>
+        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
-        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
+        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
-        <source>/fix: Force this room to stay open when it is empty</source>
+        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
-        <source>/unfix: Undo the /fix command</source>
+        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
+        <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
+        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
-        <source>/delete &lt;parameter&gt;</source>
+        <source>/fix: Force this room to stay open when it is empty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+        <source>/unfix: Undo the /fix command</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>List of room chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
-        <source>Commands for server admins only:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
-        <source>Unknown command:</source>
+        <source>Commands for server admins only:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
+        <source>room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
+        <source>lobby</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
+        <source>(playing)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
+        <source>(spectating)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
+        <source>Player is not online.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
+        <source>The game can&apos;t be started with less than two clans!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <source>Empty config entry.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
+        <source>Access denied.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
+        <source>You&apos;re not the room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <source>Corrupted hedgehogs info!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
+        <source>Too many teams!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
+        <source>Too many hedgehogs!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
+        <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="59"/>
+        <source>Joining not possible: Round is in progress.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <source>This room currently does not allow adding new teams.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
+        <source>Error: The team you tried to remove does not exist.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
+        <source>You can&apos;t remove a team you don&apos;t own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
+        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
+        <source>A room with the same name already exists.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
+        <source>/callvote kick: You need to specify a nickname.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
+        <source>/callvote kick: No such user!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
+        <source>/callvote map: No such map!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
+        <source>/callvote pause: No game in progress!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
+        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
+        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
+        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <source>No such room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <source>Room version incompatible to your Hedgewars version!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <source>Access denied. This room is for registered users only.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
+        <source>You are banned from this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="90"/>
+        <source>Nickname already provided.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="91"/>
+        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="92"/>
+        <source>Protocol already known.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="93"/>
+        <source>Bad number.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="94"/>
+        <source>There&apos;s no voting going on.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="95"/>
+        <source>You already have voted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="96"/>
+        <source>Your vote has been counted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="97"/>
+        <source>Voting closed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="98"/>
+        <source>Pause toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="100"/>
+        <source>Voting expired.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="105"/>
+        <source>hedgehogs per team: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="106"/>
+        <source>You&apos;re the new room master!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="39"/>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
+        <source>Warning! Chat flood protection activated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
-        <source>room</source>
+        <source>Excess flood</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
-        <source>lobby</source>
+        <source>Game messages flood detected - 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
-        <source>(playing)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
-        <source>(spectating)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
-        <source>Player is not online.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
-        <source>The game can&apos;t be started with less than two clans!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
-        <source>Empty config entry.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
-        <source>Access denied.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
-        <source>You&apos;re not the room master!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
-        <source>Corrupted hedgehogs info!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
-        <source>Too many teams!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
-        <source>Too many hedgehogs!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
-        <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="53"/>
-        <source>Joining not possible: Round is in progress.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
-        <source>This room currently does not allow adding new teams.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
-        <source>Error: The team you tried to remove does not exist.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
-        <source>You can&apos;t remove a team you don&apos;t own.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
-        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
-        <source>A room with the same name already exists.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
-        <source>/callvote kick: You need to specify a nickname.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
-        <source>/callvote kick: No such user!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
-        <source>/callvote map: No such map!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
-        <source>/callvote pause: No game in progress!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
-        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
-        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
-        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
-        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
-        <source>No such room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
-        <source>Room version incompatible to your Hedgewars version!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
-        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
-        <source>Access denied. This room is for registered users only.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
-        <source>You are banned from this room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
-        <source>Nickname already provided.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
-        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
-        <source>Protocol already known.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
-        <source>Bad number.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
-        <source>There&apos;s no voting going on.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
-        <source>You already have voted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
-        <source>Your vote has been counted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
-        <source>Voting closed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
-        <source>Pause toggled.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
-        <source>Voting expired.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
-        <source>hedgehogs per team: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
-        <source>Warning! Chat flood protection activated</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
-        <source>Excess flood</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
-        <source>Game messages flood detected - 1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>Warning! Joins flood protection activated</source>
         <translation type="unfinished"></translation>
     </message>
--- a/share/hedgewars/Data/Locale/hedgewars_nl.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1322,6 +1322,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -3999,10 +4003,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4023,10 +4023,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4043,18 +4039,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4067,14 +4051,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4106,5 +4082,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pl.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1521,6 +1521,10 @@
             <numerusform>&lt;b&gt;%1&lt;/b&gt; zabili &lt;b&gt;%2&lt;/b&gt; swoich jeży.</numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4733,7 +4737,7 @@
     </message>
     <message>
         <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation>/greeting &lt;wiadomość&gt;: Ustaw wiadomość powitalną, która zostanie pokazana graczom dołączającym do pokoju</translation>
+        <translation type="vanished">/greeting &lt;wiadomość&gt;: Ustaw wiadomość powitalną, która zostanie pokazana graczom dołączającym do pokoju</translation>
     </message>
     <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
@@ -4757,7 +4761,7 @@
     </message>
     <message>
         <source>/save &lt;parameter&gt;</source>
-        <translation>/save &lt;parametr&gt;</translation>
+        <translation type="vanished">/save &lt;parametr&gt;</translation>
     </message>
     <message>
         <source>/stats: Query server stats</source>
@@ -4777,15 +4781,15 @@
     </message>
     <message>
         <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation>/saveroom &lt;nazwa pliku&gt;: Zapisz konfigurację pokoju do pliku</translation>
+        <translation type="vanished">/saveroom &lt;nazwa pliku&gt;: Zapisz konfigurację pokoju do pliku</translation>
     </message>
     <message>
         <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation>/loadroom &lt;nazwa pliku&gt;: Wczytaj  konfigurację pokoju z pliku</translation>
+        <translation type="vanished">/loadroom &lt;nazwa pliku&gt;: Wczytaj  konfigurację pokoju z pliku</translation>
     </message>
     <message>
         <source>/delete &lt;parameter&gt;</source>
-        <translation>/delete &lt;parametr&gt;</translation>
+        <translation type="vanished">/delete &lt;parametr&gt;</translation>
     </message>
     <message>
         <source>List of lobby chat commands:</source>
@@ -4801,11 +4805,11 @@
     </message>
     <message>
         <source>Unknown command:</source>
-        <translation>Nieznana komenda:</translation>
+        <translation type="vanished">Nieznana komenda:</translation>
     </message>
     <message>
         <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation>Powiedz /help do czatu, by dostać listę komend</translation>
+        <translation type="vanished">Powiedz /help do czatu, by dostać listę komend</translation>
     </message>
     <message>
         <source>room</source>
@@ -4839,5 +4843,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1424,6 +1424,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4419,10 +4423,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4443,10 +4443,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4463,18 +4459,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4487,14 +4471,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4526,5 +4502,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1432,6 +1432,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4509,10 +4513,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4533,10 +4533,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4553,18 +4549,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4577,14 +4561,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4616,5 +4592,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ro.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ro.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1364,6 +1364,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4145,10 +4149,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4169,10 +4169,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4189,18 +4185,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4213,14 +4197,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4252,5 +4228,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ru.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1481,6 +1481,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4460,10 +4464,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4484,10 +4484,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4504,18 +4500,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4528,14 +4512,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4567,5 +4543,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_sk.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1420,6 +1420,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4405,10 +4409,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4429,10 +4429,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4449,18 +4445,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4473,14 +4457,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4512,5 +4488,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_sv.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1371,6 +1371,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4225,10 +4229,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,10 +4249,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4269,18 +4265,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4293,14 +4277,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4332,5 +4308,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1418,6 +1418,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4510,10 +4514,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,10 +4534,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4554,18 +4550,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4578,14 +4562,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4617,5 +4593,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_uk.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1444,6 +1444,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4505,10 +4509,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4529,10 +4529,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4549,18 +4545,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4573,14 +4557,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4612,5 +4588,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -652,45 +652,45 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2128"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2136"/>
         <source>Hedgewars Demo File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2129"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2137"/>
         <source>Hedgewars Save File</source>
         <comment>File Types</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2190"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
         <source>Demo name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2264"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2272"/>
         <source>Unknown network error (possibly missing SSL library).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2268"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2276"/>
         <source>This feature requires an Internet connection, but you don&apos;t appear to be online (error code: %1).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2273"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
         <source>Internal error: Reply object is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="1814"/>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2198"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="1822"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2206"/>
         <source>Cannot save record to file %1</source>
         <translation>无法录入文件 %1</translation>
     </message>
@@ -1022,29 +1022,29 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="559"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="579"/>
         <source>Server authentication error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="871"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="891"/>
         <source>%1 *** %2 has left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="878"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="898"/>
         <source>%1 *** %2 has left (message: &quot;%3&quot;)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="883"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="886"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="903"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="906"/>
         <source>%1 *** %2 has left (%3)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="724"/>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="856"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="744"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="876"/>
         <source>%1 *** %2 has joined the room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1053,12 +1053,12 @@
         <translation type="vanished">退出原因:</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="781"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="801"/>
         <source>Room destroyed</source>
         <translation>房间损坏</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="538"/>
+        <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="558"/>
         <source>You got kicked</source>
         <translation>被踢出</translation>
     </message>
@@ -1551,7 +1551,7 @@
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="76"/>
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="166"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="167"/>
         <source>Health graph</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1571,28 +1571,28 @@
         <translation type="unfinished">保存</translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="266"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="267"/>
         <source>The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="274"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="275"/>
         <source>The best killer is &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills in a turn.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="281"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="282"/>
         <source>A total of &lt;b&gt;%1&lt;/b&gt; hedgehog(s) were killed during this round.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="356"/>
         <source>(%1 kill)</source>
         <extracomment>Number of kills in stats screen, written after the team name</extracomment>
         <translation type="unfinished">
@@ -1600,7 +1600,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="362"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="359"/>
         <source>(%1 %2)</source>
         <extracomment>For custom number of points in the stats screen, written after the team name. %1 is the number, %2 is the word. Example: “4 points”</extracomment>
         <translation type="unfinished">
@@ -1608,26 +1608,31 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="375"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="373"/>
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot their own hedgehogs for &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="383"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="381"/>
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of their own hedgehogs.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="391"/>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="389"/>
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="406"/>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -1769,7 +1774,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="146"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="147"/>
         <source>Start fighting (requires at least 2 teams)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2522,13 +2527,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="709"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="707"/>
         <source>%1 (%2%) - %3</source>
         <extracomment>Video encoding list entry. %1 = file name, %2 = percent complete, %3 = video operation type (e.g. “encoding”)</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="712"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="710"/>
         <source>encoding</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2919,7 +2924,7 @@
         <translation>城堡模式</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="295"/>
         <source>Playing teams</source>
         <translation>玩家队伍</translation>
     </message>
@@ -3359,12 +3364,12 @@
         <translation type="vanished">服务器连接丢失</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2281"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2289"/>
         <source>Not all players are ready</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2282"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2290"/>
         <source>Are you sure you want to start this game?
 Not all players are ready.</source>
         <translation type="unfinished"></translation>
@@ -3397,24 +3402,24 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2168"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2176"/>
         <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="418"/>
         <source>Hedgewars - Success</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2169"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2177"/>
         <source>All file associations have been set</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/hwform.cpp" line="2174"/>
+        <location filename="../../../../QTfrontend/hwform.cpp" line="2182"/>
         <source>File association failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/ui/page/pagenet.cpp" line="118"/>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="253"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="257"/>
         <source>Netgame - Error</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3424,7 +3429,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="254"/>
+        <location filename="../../../../QTfrontend/ui/page/pagenetgame.cpp" line="258"/>
         <source>Please enter room name</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3475,18 +3480,18 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="589"/>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="618"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="587"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="616"/>
         <source>Videos - Are you sure?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="590"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="588"/>
         <source>Do you really want to delete the video &apos;%1&apos;?</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="619"/>
+        <location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="617"/>
         <source>Do you really want to remove %1 file(s)?</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3925,7 +3930,7 @@
 <context>
     <name>TeamSelWidget</name>
     <message>
-        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/>
+        <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="300"/>
         <source>At least two teams are required to play!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4708,447 +4713,527 @@
 <context>
     <name>server</name>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="99"/>
         <source>New voting started</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="101"/>
         <source>kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="102"/>
         <source>map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="103"/>
         <source>pause</source>
         <translation type="unfinished">暂停</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="104"/>
         <source>new seed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="59"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
         <source>/maxteams: specify number from 2 to 8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
         <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="90"/>
-        <source>Nickname is already in use</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
-        <source>No checker rights</source>
+        <source>Nickname is already in use</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
-        <source>Authentication failed</source>
+        <source>This server only allows registered users to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
-        <source>60 seconds cooldown after kick</source>
+        <source>No checker rights</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
-        <source>Kicked</source>
+        <source>Authentication failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
-        <source>kicked</source>
+        <source>60 seconds cooldown after kick</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
-        <source>Reconnected too fast</source>
+        <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="8"/>
-        <source>Ping timeout</source>
+        <source>kicked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
-        <source>/info &lt;player&gt;: Show info about player</source>
+        <source>Reconnected too fast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
-        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
+        <source>Ping timeout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
-        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
+        <source>heads</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
-        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
+        <source>tails</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
-        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
+        <source>This server does not support replays!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
-        <source>/help: Show chat command help</source>
+        <source>/info &lt;player&gt;: Show info about player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
-        <source>/callvote [arguments]: Start a vote</source>
+        <source>/me &lt;message&gt;: Chat action, e.g. &apos;/me eats pizza&apos; becomes &apos;* Player eats pizza&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
-        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
+        <source>/rnd: Flip a virtual coin and reply with &apos;heads&apos; or &apos;tails&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
+        <source>/rnd [A] [B] [C] [...]: Reply with a random word from the given list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
-        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
+        <source>/watch &lt;id&gt;: Watch a demo stored on the server with the given ID</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
-        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
+        <source>/help: Show chat command help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
-        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
+        <source>/callvote [arguments]: Start a vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
-        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
-        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
+        <source>/vote &lt;yes/no&gt;: Vote &apos;yes&apos; or &apos;no&apos; for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
-        <source>/save &lt;parameter&gt;</source>
+        <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
-        <source>/stats: Query server stats</source>
+        <source>/maxteams &lt;N&gt;: Limit maximum number of teams to N</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
-        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
+        <source>/global &lt;message&gt;: Send global chat message which can be seen by everyone on the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
-        <source>/fix: Force this room to stay open when it is empty</source>
+        <source>/registered_only: Toggle &apos;registered only&apos; state. If enabled, only registered players can join server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
-        <source>/unfix: Undo the /fix command</source>
+        <source>/super_power: Activate your super power. With it you can enter any room and are protected from kicking. Expires when you leave server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
+        <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
+        <source>/force &lt;yes/no&gt;: Force vote result for active vote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
-        <source>/delete &lt;parameter&gt;</source>
+        <source>/fix: Force this room to stay open when it is empty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+        <source>/unfix: Undo the /fix command</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>List of room chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
-        <source>Commands for server admins only:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="38"/>
-        <source>Unknown command:</source>
+        <source>Commands for server admins only:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
+        <source>room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
+        <source>lobby</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
+        <source>(playing)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
+        <source>(spectating)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
+        <source>Player is not online.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
+        <source>The game can&apos;t be started with less than two clans!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
+        <source>Empty config entry.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="53"/>
+        <source>Access denied.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
+        <source>You&apos;re not the room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
+        <source>Corrupted hedgehogs info!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
+        <source>Too many teams!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
+        <source>Too many hedgehogs!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
+        <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="59"/>
+        <source>Joining not possible: Round is in progress.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="60"/>
+        <source>This room currently does not allow adding new teams.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
+        <source>Error: The team you tried to remove does not exist.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
+        <source>You can&apos;t remove a team you don&apos;t own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
+        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
+        <source>A room with the same name already exists.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
+        <source>/callvote kick: You need to specify a nickname.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
+        <source>/callvote kick: No such user!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
+        <source>/callvote map: No such map!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
+        <source>/callvote pause: No game in progress!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
+        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
+        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
+        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="85"/>
+        <source>No such room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="86"/>
+        <source>Room version incompatible to your Hedgewars version!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="87"/>
+        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="88"/>
+        <source>Access denied. This room is for registered users only.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
+        <source>You are banned from this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="90"/>
+        <source>Nickname already provided.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="91"/>
+        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="92"/>
+        <source>Protocol already known.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="93"/>
+        <source>Bad number.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="94"/>
+        <source>There&apos;s no voting going on.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="95"/>
+        <source>You already have voted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="96"/>
+        <source>Your vote has been counted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="97"/>
+        <source>Voting closed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="98"/>
+        <source>Pause toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="100"/>
+        <source>Voting expired.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="105"/>
+        <source>hedgehogs per team: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="106"/>
+        <source>You&apos;re the new room master!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="39"/>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
+        <source>Warning! Chat flood protection activated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="32"/>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="33"/>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="40"/>
-        <source>room</source>
+        <source>Excess flood</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="41"/>
-        <source>lobby</source>
+        <source>Game messages flood detected - 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../../../../QTfrontend/servermessages.h" line="42"/>
-        <source>(playing)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="43"/>
-        <source>(spectating)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="44"/>
-        <source>Player is not online.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="45"/>
-        <source>The game can&apos;t be started with less than two clans!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="46"/>
-        <source>Empty config entry.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="47"/>
-        <source>Access denied.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="48"/>
-        <source>You&apos;re not the room master!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="49"/>
-        <source>Corrupted hedgehogs info!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="50"/>
-        <source>Too many teams!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="51"/>
-        <source>Too many hedgehogs!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="52"/>
-        <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="53"/>
-        <source>Joining not possible: Round is in progress.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="54"/>
-        <source>This room currently does not allow adding new teams.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="55"/>
-        <source>Error: The team you tried to remove does not exist.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="56"/>
-        <source>You can&apos;t remove a team you don&apos;t own.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="57"/>
-        <source>Illegal room name! The room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="58"/>
-        <source>A room with the same name already exists.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="61"/>
-        <source>/callvote kick: You need to specify a nickname.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="62"/>
-        <source>/callvote kick: No such user!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="63"/>
-        <source>/callvote map: No such map!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="64"/>
-        <source>/callvote pause: No game in progress!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="65"/>
-        <source>/callvote hedgehogs: Specify number from 1 to 8.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
-        <source>/force: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
-        <source>/vote: Please use &apos;yes&apos; or &apos;no&apos;.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="68"/>
-        <source>Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="69"/>
-        <source>No such room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="70"/>
-        <source>Room version incompatible to your Hedgewars version!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="71"/>
-        <source>Access denied. This room currently doesn&apos;t allow joining.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="72"/>
-        <source>Access denied. This room is for registered users only.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="73"/>
-        <source>You are banned from this room.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="74"/>
-        <source>Nickname already provided.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="75"/>
-        <source>Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="76"/>
-        <source>Protocol already known.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="77"/>
-        <source>Bad number.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="78"/>
-        <source>There&apos;s no voting going on.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="79"/>
-        <source>You already have voted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="80"/>
-        <source>Your vote has been counted.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="81"/>
-        <source>Voting closed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="82"/>
-        <source>Pause toggled.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="84"/>
-        <source>Voting expired.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="89"/>
-        <source>hedgehogs per team: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
-        <source>Warning! Chat flood protection activated</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="35"/>
-        <source>Excess flood</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="36"/>
-        <source>Game messages flood detected - 1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../../QTfrontend/servermessages.h" line="37"/>
         <source>Warning! Joins flood protection activated</source>
         <translation type="unfinished"></translation>
     </message>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts	Mon Sep 24 11:18:48 2018 -0400
@@ -1415,6 +1415,10 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>With everyone having the same clan color, there was no reason to fight. And so the hedgehogs happily lived in peace ever after.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PageInGame</name>
@@ -4473,10 +4477,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/greeting &lt;message&gt;: Set greeting message to be shown to players who join the room</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/delegate &lt;player&gt;: Surrender room control to player</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4497,10 +4497,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/save &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>/stats: Query server stats</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4517,18 +4513,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/saveroom &lt;file name&gt;: Save room configuration into a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/loadroom &lt;file name&gt;: Load room configuration from a file</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/delete &lt;parameter&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>List of lobby chat commands:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4541,14 +4525,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown command:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Say &apos;/help&apos; in chat for a list of commands</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4580,5 +4556,97 @@
         <source>Kicked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This server only allows registered users to join.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>heads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tails</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This server does not support replays!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/greeting [message]: Set or clear greeting message to be shown to players who join the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/save &lt;config ID&gt; &lt;config name&gt;: Add current room configuration as votable choice for /callvote map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/delete &lt;config ID&gt;: Delete a votable room configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/saveroom &lt;file name&gt;: Save all votable room configurations (and the greeting) of this room into a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/loadroom &lt;file name&gt;: Load votable room configurations (and greeting) from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&apos;Registered only&apos; state toggled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Super power activated.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown command or invalid parameters. Say &apos;/help&apos; in chat for a list of commands.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick yourself!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can&apos;t kick the only other player!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The player is not in your room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This player is protected from being kicked.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re not the room master or a server admin!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re already the room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message cleared.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Greeting message set.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote kick: This is only allowed in rooms without a room master.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>/callvote map: No maps available.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You&apos;re the new room master!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/it.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/it.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
     ["-1 to anyone for a suicide"] = "-1 a chiunque per essersi suicidato", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -1569,8 +1569,8 @@
     ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "Una tribù era pacifica, andava a caccia e si allenanava, godendo dei piccoli piaceri della vita...", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1652,8 +1652,8 @@
 --      ["Place weapon crates"] = "", -- HedgeEditor
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
+    ["Planes Used"] = "Aerei usati", -- User_Mission_-_RCPlane_Challenge
     ["Planes Used:"] = "Aerei usati:", -- User_Mission_-_RCPlane_Challenge
-    ["Planes Used"] = "Aerei usati", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
     ["The Torment"] = "La tormenta", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/ko.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/ko.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/lt.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/lt.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/pl.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/pl.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
     ["%.1f seconds were remaining."] = "%.1f sekund pozostało.", -- Basic_Training_-_Bazooka
     ["+1 Grenade"] = "+1 granat", -- Basic_Training_-_Flying_Saucer
     ["+1 mine!"] = "+1 mina!", -- Tumbler
+    ["+1 point"] = "+1 punkt", -- Mutant
     ["-1 point"] = "-1 punkt", -- Mutant
-    ["+1 point"] = "+1 punkt", -- Mutant
     ["-1 to anyone for a suicide"] = "-1 dla każdego za samobójstwo", -- Mutant
     ["+1 to the Bottom Feeder for killing anyone"] = "+1 dla Pasożyta za zabicie kogokolwiek", -- Mutant
     ["+1 to the Mutant for killing anyone"] = "+1 dla Mutanta za zabicie kogokolwiek", -- Mutant
@@ -1570,8 +1570,8 @@
     ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "Nasze plemię było pokojowe, spędzając swój czas na polowaniu i treningu, ciesząc się z małych przyjemności w życiu...", -- A_Classic_Fairytale:first_blood
     ["Oneye"] = "Jednooki", -- portal
     ["Only Hog Solo can be trusted with the crate."] = "Skrzynia może być powierzona tylko Hogowi Solo.", -- A_Space_Adventure:fruit02
+    ["Only one hog per team allowed! Excess hogs will be removed"] = "Dozwolony tylko jeden jeż na drużynę! Nadmiarowe jeże będą usunięte", -- Mutant
     ["Only one hog per team allowed! Excess hogs will be removed."] = "Dozwolony tylko jeden jeż na drużynę! Nadmiarowe jeże będą usunięte.", -- Mutant
-    ["Only one hog per team allowed! Excess hogs will be removed"] = "Dozwolony tylko jeden jeż na drużynę! Nadmiarowe jeże będą usunięte", -- Mutant
     ["Only the best pilots can master the following stunts."] = "Tylko najlepsi piloci mogą opanować następujące wyczyny.", -- Basic_Training_-_Flying_Saucer
     ["Only two clans allowed! Excess hedgehogs will be removed."] = "Tylko dwa klany dozwolone! Nadmiarowe jeże będą usunięte.", -- CTF_Blizzard
     ["On the Ice Planet, where ice rules ..."] = "Na Lodowej Planecie, gdzie rządzi lód...", -- A_Space_Adventure:ice01
@@ -1849,8 +1849,8 @@
     ["Score points by killing other hedgehogs (see below)."] = "Zdobądź punkty, zabijając inne jeże (zobacz niżej).", -- Mutant
     ["Score points by killing other hedgehogs."] = "Zdobądź punkty zabijając inne jeże.", -- Mutant
     ["Scores: "] = "Wyniki: ", -- Capture_the_Flag
+    ["Scores"] = "Wyniki", -- Mutant
     ["Scores:"] = "Wyniki:", -- Mutant
-    ["Scores"] = "Wyniki", -- Mutant
     ["Scoring: "] = "Wynki: ", -- Mutant
     ["Script parameter examples:"] = "Przykłady parametrów skryptu:", -- Gravity
 --      ["%s (%d)"] = "", -- Continental_supplies
@@ -2171,6 +2171,7 @@
     ["Team Identity Mode"] = "Tryb Tożsamości Drużyny", -- HedgeEditor
     ["TEAM IDENTITY MODE"] = "TRYB TOŻSAMOŚCI DRUŻYNY", -- HedgeEditor
     ["Team of Hearts"] = "Drużyna Serc", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
     ["Team Scores:"] = "Wyniki drużyn:", -- Control
     ["Team scores:"] = "Wyniki drużyn:", -- Space_Invasion
     ["Teamwork 2"] = "Praca zespołowa 2", -- User_Mission_-_Teamwork_2
@@ -2333,6 +2334,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
     ["The targets will guide you through the training."] = "Cele poprowadzą cię przez trening.", -- Basic_Training_-_Rope
     ["The team continued their quest of finding the rest of the tribe."] = "Drużyna kontynuowała swoje zadanie odnalezienia reszty plemienia.", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
     ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "Czas, który ci pozostanie po dotarciu do niebieskiego jeża, zosanie dodany do następnej tury.", -- A_Space_Adventure:moon02
     ["The Torment"] = "Udręka", -- A_Classic_Fairytale:first_blood
     ["The truth about Professor Hogevil"] = "Prawda o Profesorze Jeżozło", -- A_Space_Adventure:moon02
@@ -2403,6 +2406,7 @@
     ["Throw a grenade to destroy the target!"] = "Rzuć granatem, by zniszczyć cel!", -- Basic_Training_-_Grenade
     ["Throw some grenades to destroy the targets!"] = "Rzuć trochę granatów, by zniszczyć cele!", -- Basic_Training_-_Grenade
     ["Thug #%d"] = "Zbir #%d", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
     ["Timbers"] = "Drewna",
     ["Time: %.1fs"] = "Czas: %.1fs", -- Racer, TechRacer
     ["Time: %.3fs by %s"] = "Czas: %.3fs (%s)", -- TrophyRace
--- a/share/hedgewars/Data/Locale/pt_BR.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/pt_BR.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/pt_PT.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/pt_PT.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/ru.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/ru.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
       ["-1 to anyone for a suicide"] = "-1 за самоубийство", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
       ["Generator"] = "Генератор", -- Construction_Mode
@@ -1053,8 +1053,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1568,8 +1568,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1844,8 +1844,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2166,6 +2166,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
       ["Team of Hearts"] = "Команда сердец", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2327,6 +2328,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2397,6 +2400,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/sk.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/sk.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2170,6 +2170,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2332,6 +2333,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2402,6 +2405,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/stub.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/stub.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -8,8 +8,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -2030,6 +2030,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
 --      ["Teamwork"] = "", -- User_Mission_-_Teamwork
 --      ["Team Zook"] = "", -- Target_Practice_-_Bazooka_easy, Target_Practice_-_Bazooka_hard
@@ -2177,6 +2178,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2242,6 +2245,7 @@
 --      ["Throw a baseball at your foes|and send them flying!"] = "", -- Knockball
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/sv.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/sv.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -1,6 +1,6 @@
 locale = {
+	["!!!"] = "!!!",
 --      ["..."] = "",
-	["!!!"] = "!!!",
 --      ["011101000"] = "", -- A_Classic_Fairytale:dragon
 --      ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united
 --      ["10 weapon schemes"] = "", -- Continental_supplies
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1653,8 +1653,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1847,8 +1847,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2169,6 +2169,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2331,6 +2332,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2401,6 +2404,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/tips_de.xml	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/tips_de.xml	Mon Sep 24 11:18:48 2018 -0400
@@ -80,6 +80,7 @@
     <tip>Denk an den Wind, denn Flammen und einige Waffen werden von ihm beeinflusst.</tip>
     <tip>Benutze einen Schweißbrenner, um Igel und Minen mit einem langen Zeitzünder zu schubsen.</tip>
     <tip>Wenn du mit einem Schweißbrenner in ein Pulverfass rennst, wirst du eine explosive Überraschung erleben.</tip>
+    <tip>Gib »/help« im Chat für eine Liste von Chatbefehlen ein. Chatbefehle bieten Zugriff auf ein paar besondere Funktionen wie Spott oder Abstimmungen.</tip>
     <windows-only>
         <tip>Du kannst deine Hedgewars-Einstellungsdateien unter »Eigene Dokumente\Hedgewars« finden. Erstelle Backups oder nimm die Dateien mit, aber bitte bearbeite sie nicht von Hand.</tip>
     </windows-only>
--- a/share/hedgewars/Data/Locale/tips_en.xml	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/tips_en.xml	Mon Sep 24 11:18:48 2018 -0400
@@ -79,6 +79,7 @@
     <tip>Mind the wind, because flames and some projectiles are affected by wind.</tip>
     <tip>Use a blow torch to push hedgehogs and mines with a long timer.</tip>
     <tip>Running with a blow torch into a barrel is an explosive recipe for disaster!</tip>
+    <tip>Enter “/help” in chat for a list of chat commands. Chat commands give you access to some special features like taunts or voting.</tip>
     <windows-only>
         <tip>You can find your Hedgewars configuration files under “My Documents\Hedgewars”. Create backups or take the files with you, but don’t edit them by hand.</tip>
     </windows-only>
--- a/share/hedgewars/Data/Locale/tr.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/tr.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1570,8 +1570,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1654,8 +1654,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1849,8 +1849,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2172,6 +2172,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2334,6 +2335,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2404,6 +2407,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/uk.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/uk.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -10,8 +10,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -712,8 +712,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1053,8 +1053,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1568,8 +1568,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1652,8 +1652,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
         ["Play with me!"] = "Зіграй зі мною!", -- A_Classic_Fairytale:shadow
@@ -1846,8 +1846,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2168,6 +2168,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2330,6 +2331,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2400,6 +2403,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Locale/zh_CN.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Locale/zh_CN.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -11,8 +11,8 @@
 --      ["%.1fs"] = "", -- Racer, TechRacer
 --      ["+1 Grenade"] = "", -- Basic_Training_-_Flying_Saucer
 --      ["+1 mine!"] = "", -- Tumbler
+--      ["+1 point"] = "", -- Mutant
 --      ["-1 point"] = "", -- Mutant
---      ["+1 point"] = "", -- Mutant
 --      ["-1 to anyone for a suicide"] = "", -- Mutant
 --      ["+1 to the Bottom Feeder for killing anyone"] = "", -- Mutant
 --      ["+1 to the Mutant for killing anyone"] = "", -- Mutant
@@ -713,8 +713,8 @@
 --      ["Gear information hidden"] = "", -- HedgeEditor
 --      ["Gear information shown"] = "", -- HedgeEditor
 --      ["Gear Placement Tool"] = "", -- HedgeEditor
+--      ["General information"] = "", -- Continental_supplies
 --      ["General information:"] = "", -- Continental_supplies
---      ["General information"] = "", -- Continental_supplies
 --      ["General Lemon"] = "", -- A_Space_Adventure:fruit01
 --      ["Generator"] = "", -- Construction_Mode
 --      ["Generator: Generates energy."] = "", -- Construction_Mode
@@ -1054,8 +1054,8 @@
 --      ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey
 --      ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow
 --      ["If you don't want to slip away, you have to keep moving!"] = "", -- Basic_Training_-_Movement
+--      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
---      ["If you get stuck, use your Desert Eagle or restart the mission!"] = "", -- A_Classic_Fairytale:journey
 --      ["If you help us you can keep the device if you find it but we'll keep everything else."] = "", -- A_Space_Adventure:fruit02
 --      ["If you hurt an enemy, you'll get one third of the damage dealt."] = "", -- A_Space_Adventure:death02
 --      ["If you injure a hedgehog you'll get 35% of the damage dealt."] = "", -- A_Space_Adventure:death02
@@ -1569,8 +1569,8 @@
 --      ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
 --      ["Oneye"] = "", -- portal
 --      ["Only Hog Solo can be trusted with the crate."] = "", -- A_Space_Adventure:fruit02
+--      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only one hog per team allowed! Excess hogs will be removed."] = "", -- Mutant
---      ["Only one hog per team allowed! Excess hogs will be removed"] = "", -- Mutant
 --      ["Only the best pilots can master the following stunts."] = "", -- Basic_Training_-_Flying_Saucer
 --      ["Only two clans allowed! Excess hedgehogs will be removed."] = "", -- CTF_Blizzard
 --      ["On the Ice Planet, where ice rules ..."] = "", -- A_Space_Adventure:ice01
@@ -1655,8 +1655,8 @@
 --      ["- Place your clan flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["- Place your team flag at the end of your first turn"] = "", -- Capture_the_Flag
 --      ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+--      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
---      ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
 --      ["Planets with all missions completed will be marked with two flowers."] = "", -- A_Space_Adventure:cosmos
 --      ["Planets with completed main missions will be marked with a flower."] = "", -- A_Space_Adventure:cosmos
 --      ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
@@ -1849,8 +1849,8 @@
 --      ["Score points by killing other hedgehogs."] = "", -- Mutant
 --      ["Score points by killing other hedgehogs (see below)."] = "", -- Mutant
 --      ["Scores: "] = "", -- Capture_the_Flag
+--      ["Scores"] = "", -- Mutant
 --      ["Scores:"] = "", -- Mutant
---      ["Scores"] = "", -- Mutant
 --      ["Scoring: "] = "", -- Mutant
 --      ["Script parameter examples:"] = "", -- Gravity
 --      ["%s (+%d)"] = "", -- Battalion
@@ -2171,6 +2171,7 @@
 --      ["Team Identity Mode"] = "", -- HedgeEditor
 --      ["TEAM IDENTITY MODE"] = "", -- HedgeEditor
 --      ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+--      ["Teams are tied! Continue playing rounds until we have a winner!"] = "", -- Space_Invasion
 --      ["Team Scores:"] = "", -- Control
 --      ["Team scores:"] = "", -- Space_Invasion
 --      ["Teamwork 2"] = "", -- User_Mission_-_Teamwork_2
@@ -2333,6 +2334,8 @@
 --      ["The spirits of the ancestors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
 --      ["The targets will guide you through the training."] = "", -- Basic_Training_-_Rope
 --      ["The team continued their quest of finding the rest of the tribe."] = "", -- A_Classic_Fairytale:queen
+--      ["The teams were tied, so an additional round has been played to determine the winner."] = "", -- Space_Invasion
+--      ["The teams were tied, so %d additional rounds have been played to determine the winner."] = "", -- Space_Invasion
 --      ["The time that you have left when you reach the blue hedgehog will be added to the next turn."] = "", -- A_Space_Adventure:moon02
 --      ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
 --      ["The truth about Professor Hogevil"] = "", -- A_Space_Adventure:moon02
@@ -2403,6 +2406,7 @@
 --      ["Throw a grenade to destroy the target!"] = "", -- Basic_Training_-_Grenade
 --      ["Throw some grenades to destroy the targets!"] = "", -- Basic_Training_-_Grenade
 --      ["Thug #%d"] = "", -- A_Space_Adventure:death01
+--      ["Tie-breaking round %d"] = "", -- Space_Invasion
 --      ["Timbers"] = "", -- 
 --      ["Time: %.1fs"] = "", -- Racer, TechRacer
 --      ["Time: %.3fs by %s"] = "", -- TrophyRace
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -580,6 +580,10 @@
 	fSpawnX[1] = 3123
 	fSpawnY[1] = 1747
 
+	if ClansCount < 2 then
+		return
+	end
+
 	for i = 0, 1 do
 		fGear[i] = SpawnFakeAmmoCrate(fSpawnX[i],fSpawnY[i],false,false)
 		fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
--- a/share/hedgewars/Data/Maps/ClimbHome/map.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Maps/ClimbHome/map.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -86,7 +86,7 @@
 
 function onGameInit()
     -- Ensure people get same map for same theme
-    TurnTime = cMaxTurnTime
+    TurnTime = MAX_TURN_TIME
     CaseFreq = 0
     Explosives = 0
     MineDudPercent = 0
@@ -348,7 +348,7 @@
 
     if CurrentHedgehog ~= nil and TurnTimeLeft > 0 and band(GetState(CurrentHedgehog),gstHHDriven) ~= 0 then
         if MaxHeight < delayHeight and
-           TurnTimeLeft<(cMaxTurnTime-delayTime) and
+           TurnTimeLeft<(MAX_TURN_TIME-delayTime) and
             MaxHeight > 286 and WaterLine > 286 then
             if waterAccel ~= 0 then
                 SetWaterLine(WaterLine-(baseWaterSpeed+div(getActualHeight(MaxHeight)*100,waterAccel)))
--- a/share/hedgewars/Data/Maps/Control/map.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Maps/Control/map.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -424,7 +424,7 @@
 					end
 				end			
 			end
-			TurnTimeLeft = 1
+			SetTurnTimeLeft(1)
 		end
 
 	end
--- a/share/hedgewars/Data/Maps/TrophyRace/map.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -82,7 +82,9 @@
     for i=0, ClansCount-1 do
         clantimes[i] = 0
     end
-    SendAchievementsStatsOff()
+    if ClansCount >= 2 then
+        SendAchievementsStatsOff()
+    end
 end
 
 function onAmmoStoreInit()
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -576,7 +576,7 @@
 
 function AfterHogDeadAnim()
   freshDead = nil
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 --------------------------Anim skip functions--------------------------
@@ -587,7 +587,7 @@
   AddAmmo(speakerHog, amSwitch, 100)
   SetGearMessage(speakerHog, 0)
   SetState(speakerHog, 0)
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   ShowMission(loc("Backstab"), loc("The food bites back"), loc("Defeat the cannibals"), 1, 4000)
   SpawnCrates()
 end
@@ -602,7 +602,7 @@
   SetGearMessage(CurrentHedgehog, 0)
   SetState(CurrentHedgehog, 0)
   SpawnCrates()
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 function SkipWave2DeadAnim()
@@ -1106,7 +1106,7 @@
 function onNewTurn()
   tmpVar = 0
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
 
@@ -1131,7 +1131,7 @@
     else
       SetGearMessage(CurrentHedgehog, 0)
       --AnimSwitchHog(natives[leaksNum])
-      TurnTimeLeft = -1
+      SetTurnTimeLeft(MAX_TURN_TIME)
     end
   else
     if freshDead ~= nil and GetHogTeamName(CurrentHedgehog) == loc("Natives") then
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/dragon.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/dragon.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -362,7 +362,7 @@
   end
   FollowGear(native)
   AddNewEvent(CheckGearsDead, {{crates[1], crates[2]}}, PutCrates, {2}, 0) 
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   ShowMission(loc("Dragon's Lair"), loc("Obstacle course"), loc("In order to get to the other side, you need to get rid of the crates first.") .. "|" ..
                                                   loc("As the ammo is sparse, you might want to reuse ropes while mid-air.") .. "|" ..
                                                   loc("The enemy can't move but it might be a good idea to stay out of sight!") .. "|" ..
@@ -381,7 +381,7 @@
 function AfterKillAnim()
   if not cyborgsKilledBeforeCrates then
     PutWeaponCrates()
-    TurnTimeLeft = TurnTime
+    SetTurnTimeLeft(TurnTime)
     AddEvent(CheckCyborgsDead, {}, DoCyborgsDead, {}, 0)
     ShowMission(loc("Dragon's Lair"), loc("The Slaughter"), loc("Kill the aliens!").."|"..loc("Mines time: 5 seconds"), 1, 2000)
   end
@@ -396,7 +396,7 @@
 function AfterKilledAnim()
   -- Final mission segment with the portal gun
   HideHedge(cyborg)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   SetGearMessage(native, 0)
   SpawnSupplyCrate(1184, 399, amPortalGun, 100)
   SpawnSupplyCrate(2259, 755, amTeleport, 2)
@@ -745,7 +745,7 @@
       AddAmmo(CurrentHedgehog, amSniperRifle, 1)
       AddAmmo(CurrentHedgehog, amDEagle, 1)
     end
-    TurnTimeLeft = 30000
+    SetTurnTimeLeft(30000)
   elseif GetHogTeamName(CurrentHedgehog) == loc("011101001") then
     EndTurn(true)
   end
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/enemy.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/enemy.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -676,7 +676,7 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
   if playersDeadFresh then
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/epil.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/epil.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -484,14 +484,14 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
   -- Don't allow player to play with traitor, except when it is the final hog left
   if CurrentHedgehog == traitor and not IsEveryoneExceptTraitorDead() then
     EndTurn(true)
   else
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
   end
 end
 
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/family.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/family.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -295,7 +295,7 @@
   AddNewEvent(CheckOutOfCluster, {}, DoOutOfCluster, {}, 1)
   AddNewEvent(CheckOutOfGrenade, {}, DoOutOfGrenade, {}, 1)
 --  AddNewEvent(CheckNeedToHide, {}, DoNeedToHide, {}, 1)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   ShowMission(loc("Family Reunion"), loc("Hostage Situation"), loc("Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"), 1, 7000)
 end
 
@@ -636,7 +636,7 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
   if CurrentHedgehog == cyborg then
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -546,7 +546,7 @@
 
 function DoCratesColled()
   RemoveEventFunc(CheckTimesUp)
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   AddCaption(loc("As the challenge was completed, Leaks A Lot set foot on the ground..."))
 end
 
@@ -573,7 +573,7 @@
   challengeFailed = true
   deleteCrate = true
   DeleteGear(crates[1])
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   AddCaption(loc("And so happened that Leaks A Lot failed to complete the challenge! He landed, pressured by shame ..."))
   AddEvent(CheckChallengeFailed, {}, DoChallengeFailed, {}, 0)
 end
@@ -658,7 +658,7 @@
 function StartChallenge(time)
   cratesCollected = 0
   PutCrate(1)
-  TurnTimeLeft = time
+  SetTurnTimeLeft(time)
   ShowMission(loc("First Blood"), loc("The Crate Frenzy"), loc("Collect the crates within the time limit!|If you fail, you'll have to try again."), 1, 5000)
 end
 
@@ -684,11 +684,11 @@
 end
 
 function SetTime(time)
-  TurnTimeLeft = time
+  SetTurnTimeLeft(time)
 end
 
 function ResetTurnTime()
-  TurnTimeLeft = tTime
+  SetTurnTimeLeft(tTime)
   tTime = -1
 end
 
@@ -751,7 +751,7 @@
 
 function onGameStart()
   progress = tonumber(GetCampaignVar("Progress"))
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   FollowGear(youngh)
 	ShowMission(loc("A Classic Fairytale"), loc("First Blood"), loc("Finish your training|Hint: Animations can be skipped with the [Precise] key."), -amSkip, 0)
   HideHog(cannibal)
@@ -846,7 +846,7 @@
   end
   SwitchHog(youngh)
   FollowGear(youngh)
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
 end
 
 function onGearDamage(gear, damage)
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/journey.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/journey.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -197,7 +197,7 @@
   AddEvent(CheckFailedCourse, {}, DoFailedCourse, {}, 0)
   SetGearMessage(leaks, 0)
   TurnsLeft = 12
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   ShowMission(loc("The Journey Back"), loc("Collateral Damage"),
     loc("Save the princess by collecting the crate in under 12 turns!") .. "|" ..
     loc("Mines time: 3 seconds"), 0, 6000)
@@ -230,7 +230,7 @@
   stage = endStage
   SwitchHog(leaks)
   SetGearMessage(leaks, 0)
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   ShowMission(loc("The Journey Back"), loc("Collateral Damage II"), loc("Save Fell From Heaven!"), 1, 4000)
   AddEvent(CheckLost, {}, DoLost, {}, 0)
   AddEvent(CheckWon, {}, DoWon, {}, 0)
@@ -242,7 +242,7 @@
   SwitchHog(leaks)
   SetGearMessage(leaks, 0)
   SetGearMessage(dense, 0)
-  TurnTimeLeft = -1
+  SetTurnTimeLeft(MAX_TURN_TIME)
   ShowMission(loc("The Journey Back"), loc("Collateral Damage II"), loc("Save Fell From Heaven!"), 1, 4000)
   AddEvent(CheckLost, {}, DoLost, {}, 0)
   AddEvent(CheckWon, {}, DoWon, {}, 0)
@@ -258,7 +258,7 @@
 
 function AfterStartAnim()
   SetGearMessage(leaks, 0)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   local goal = loc("Get the crate on the other side of the island.")
   local hint = loc("Hint: You might want to stay out of sight and take all the crates ...")
   local stuck = loc("If you get stuck, use your Desert Eagle or restart the mission!")
@@ -1188,15 +1188,15 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
   elseif victory then
     EndTurn(true)
   elseif stage == endStage and CurrentHedgehog ~= leaks then
     AnimSwitchHog(leaks)
     SetGearMessage(leaks, 0)
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
   elseif GetHogTeamName(CurrentHedgehog) ~= loc("Natives") then
-    TurnTimeLeft = 20000
+    SetTurnTimeLeft(20000)
   else
     TurnsLeft = TurnsLeft - 1
     if TurnsLeft >= 1 then
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/queen.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/queen.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -99,7 +99,7 @@
 
 cyborgsDif = {2, 2, 2, 2, 2, 2, 2, 2}
 cyborgsHealth = {100, 100, 100, 100, 100, 100, 100, 100}
-cyborgPos = {1765, 1145}
+cyborgHidePos = {1665, 1800}
 cyborgsTeamNum = {4, 3}
 cyborgsNum = 7
 cyborgsPos = {{2893, 1717}, {2958, 1701}, {3027, 1696}, {3096, 1698},
@@ -492,7 +492,7 @@
   SetHealth(SpawnHealthCrate(519, 1519), 25)
   SetHealth(SpawnHealthCrate(826, 895), 25)
   SpawnSupplyCrate(701, 1046, amGirder, 3)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 function SkipAnim(anim)
@@ -513,7 +513,7 @@
   SetGearMessage(CurrentHedgehog, 0)
   HideHedge(enemy)
   ShowMission(loc("Long Live The Queen"), loc("Coward"), loc("The leader escaped. Defeat the rest of the aliens!"), 1, 0)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 function AfterLeaderDeadAnim()
@@ -649,6 +649,7 @@
 end
 
 function SetupPlace()
+  HideHedge(cyborg)
   SetHogHat(natives[1], nativeHats[m5DeployedNum])
   SetHogName(natives[1], nativeNames[m5DeployedNum])
 
@@ -747,9 +748,7 @@
 
   AddTeam(loc("011101001"), -1, "ring", "UFO", "Robot", "cm_binary")
   cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1")
-  HideHedge(cyborg)
-
-  SetGearPosition(cyborg, 0, 0)
+  SetGearPosition(cyborg, unpack(cyborgHidePos))
 
   for i = 1, nativesNum do
     AnimSetGearPosition(natives[i], unpack(nativePos[i]))
@@ -858,7 +857,7 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
   if GetHogTeamName(CurrentHedgehog) == loc("011101001") then
@@ -869,11 +868,5 @@
 function onPrecise()
   if GameTime > 2500 and AnimInProgress() then
     SetAnimSkip(true)
---  else
---    DeleteGear(cyborgs[1])
---    table.remove(cyborgs, 1)
---    if cyborgsLeft == 0 then
---      DeleteGear(enemy)
---    end
   end
 end
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/shadow.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/shadow.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -189,7 +189,7 @@
   end
   stage = spyStage
   ShowMission(loc("The Shadow Falls"), loc("Play with me!"), loc("Kill the cannibal!").."|"..loc("Both your hedgehogs must survive."), 1, 6000)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 
@@ -223,7 +223,7 @@
   SwitchHog(dense)
   SetGearMessage(dense, 0)
   SetGearMessage(leaks, 0)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   ShowMission(loc("The Shadow Falls"), loc("Why do you not like me?"), loc("Obliterate them!|Hint: You might want to take cover...").."|"..loc("Both your hedgehogs must survive."), 1, 6000)
 end
 
@@ -330,7 +330,7 @@
   AddAmmo(cannibals[9], amFirePunch, 0)
   AddAmmo(cannibals[9], amBaseballBat, 0)
   SetGearMessage(leaks, 0)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   AddEvent(CheckStronglingsDead, {}, DoStronglingsDeadAttacked, {}, 0)
   SwitchHog(leaks)
   AnimWait(dense, 1)
@@ -893,7 +893,7 @@
   AddAmmo(cannibals[9], amShotgun, 2)
   SetGearMessage(leaks, 0)
   SetGearMessage(dense, 0)
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 function DoStronglingsDead()
@@ -1091,17 +1091,17 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
   elseif stage == cyborgStage then
     if CurrentHedgehog ~= dense then
       EndTurn(true)
     else
-      TurnTimeLeft = -1
+      SetTurnTimeLeft(MAX_TURN_TIME)
     end
   elseif stage == acceptedReturnStage then
     SwitchHog(dense)
     FollowGear(dense)
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
   end
 end
 
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/united.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/united.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -66,13 +66,13 @@
 --------------------------Anim skip functions--------------------------
 function AfterHogDeadAnim()
   freshDead = nil
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
 end
 
 function AfterStartAnim()
   local goal = loc("Defeat the cannibals!|")
   local chiefgoal = loc("Try to protect the chief! You won't lose if he dies, but it is advised that he survives.")
-  TurnTimeLeft = TurnTime
+  SetTurnTimeLeft(TurnTime)
   ShowMission(loc("United We Stand"), loc("Invasion"), goal .. chiefgoal, 1, 6000)
 end
 
@@ -532,7 +532,7 @@
 
 function onNewTurn()
   if AnimInProgress() then
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     return
   end
   if freshDead ~= nil and GetHogTeamName(CurrentHedgehog) == loc("Natives") then
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -306,7 +306,7 @@
 			getReadyForRumble = false
 		else
 			if guard1.keepTurning then
-				TurnTimeLeft = -1
+				SetTurnTimeLeft(MAX_TURN_TIME)
 			end
 		end
 	elseif not onHeroDeath() and CurrentHedgehog == director.gear or CurrentHedgehog == doctor.gear then
@@ -468,7 +468,7 @@
 			SaveCampaignVar("HeroHealth",GetHealth(hero.gear))
 		end
 		AnimCaption(hero.gear,loc("Welcome to the moon!"))
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 		SaveCampaignVar("HeroHealth", GetHealth(hero.gear))
 		SaveCampaignVar("Planet", "moon")
 		SaveCampaignVar("UnlockedMissions", "3")
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -108,7 +108,7 @@
 	battleStarted = true
 	if firstTurn then
 		-- Generous ready time in first turn to more time to read the mission panel
-		ReadyTimeLeft = 35000
+		SetReadyTimeLeft(35000)
 		firstTurn = false
 	end
 	if CurrentHedgehog ~= hero.gear then
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -213,9 +213,9 @@
 	if CurrentHedgehog ~= hero.gear and not heroIsInBattle then
 		AnimSwitchHog(hero.gear)
 		getReady(hero.gear)
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 	elseif CurrentHedgehog == hero.gear and not heroIsInBattle then
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 	elseif (CurrentHedgehog == smuggler2.gear or CurrentHedgehog == smuggler3.gear) and ongoingBattle == 1 then
 		AnimSwitchHog(smuggler1.gear)
 		getReady(smuggler1.gear)
@@ -270,11 +270,13 @@
 			-- Turn the other crate into a fake crate; this will “contain” the device.
 			SetGearPos(other_crate_table.gear, bor(GetGearPos(other_crate_table.gear), 0x8))
 		elseif cratesFound == 1 then
-			-- Second win crate collected:
-			-- This crate contains the anti-gravity part! VICTORY!
-			PlaySound(sndShotgunReload)
-			-- It's displayed as if collecting a normal ammo/utility crate. :-)
-			AddCaption(loc("Anti-Gravity Device Part (+1)"), GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
+			if not candidate_crate_table.destroyed then
+				-- Second win crate collected:
+				-- This crate contains the anti-gravity part! VICTORY!
+				PlaySound(sndShotgunReload)
+				-- It's displayed as if collecting a normal ammo/utility crate. :-)
+				AddCaption(loc("Anti-Gravity Device Part (+1)"), GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
+			end
 		end
 	end
 
@@ -308,7 +310,7 @@
 end
 
 function onHeroAtFirstBattle(gear)
-	if not hero.dead and not heroIsInBattle and GetHealth(smuggler1.gear) and GetX(hero.gear) <= 1450 and GetX(hero.gear) > 80
+	if not hero.dead and not heroIsInBattle and GetHealth(smuggler1.gear) and GetX(hero.gear) <= 1233 and GetX(hero.gear) > 80
 			and GetY(hero.gear) <= GetY(smuggler1.gear)+5 and GetY(hero.gear) >= GetY(smuggler1.gear)-40 and
 			-- If hero is standing or at a rope
 			(StoppedGear(hero.gear) or GetGearElasticity(hero.gear) ~= 0) then
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert03.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert03.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -61,7 +61,7 @@
 function onGameInit()
 	GameFlags = gfOneClanMode
 	Seed = 1
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	Ready = 30000
 	CaseFreq = 0
 	MinesNum = 0
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/final.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/final.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -38,7 +38,7 @@
 function onGameInit()
 	GameFlags = gfDisableWind + gfOneClanMode
 	Seed = 1
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	CaseFreq = 0
 	MinesNum = 0
 	MinesTime = 1
@@ -160,6 +160,8 @@
 end
 
 function heroBoomReaction(gear)
+	SetSoundMask(sndMissed, true)
+	SetSoundMask(sndYesSir, true)
 	if GetHealth(gear) and GetHealth(gear) > 0 then
 		HogSay(gear, loc("Kaboom! Hahahaha! Take this, stupid meteorite!"), SAY_SHOUT, 2)
 	end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -242,10 +242,10 @@
 				return
 			end
 		end
-		TurnTimeLeft = 20000
+		SetTurnTimeLeft(20000)
 		wind()
 	elseif not inBattle and CurrentHedgehog == hero.gear then
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 		wind()
 	else
 		EndTurn(true)
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -145,14 +145,14 @@
 	if CurrentHedgehog == hero.gear then
 		if firstTurn then
 			-- Unique game rule in this mission: First turn has more time
-			TurnTimeLeft = 25000
+			SetTurnTimeLeft(25000)
 			-- Generous ready time on first turn to give more time to read
-			ReadyTimeLeft = 35000
+			SetReadyTimeLeft(35000)
 			battleStarted = true
 			firstTurn = false
 		end
 		if lastWeaponUsed == amSkip then
-			TurnTimeLeft = TurnTime + timeLeft
+			SetTurnTimeLeft(TurnTime + timeLeft)
 		end
 		timeLeft = 0
 		heroTurns = heroTurns + 1
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -240,7 +240,7 @@
 	if not heroVisitedAntiFlyArea and CurrentHedgehog ~= hero.gear then
 		EndTurn(true)
 	elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 	elseif not heroAtFinalStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then
 		AnimSwitchHog(hero.gear)
 		EndTurn(true)
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -262,7 +262,7 @@
 			end
 			local message 
 			if TurnTimeLeft <= 22000 then
-				TurnTimeLeft = TurnTimeLeft + 8000
+				SetTurnTimeLeft(TurnTimeLeft + 8000)
 				totalTime = totalTime + 8000
 				PlaySound(sndExtraTime)
 				message = loc("Got 1 more saucer and 8 more seconds added to the clock")
@@ -273,7 +273,7 @@
 		else
 			SetVisualGearValues(wp.gear, wp.x,wp.y, 20, 200, 0, 0, 100, radius, 3, GREEN)
 			if TurnTimeLeft <= 16000 then
-				TurnTimeLeft = TurnTimeLeft + 6000
+				SetTurnTimeLeft(TurnTimeLeft + 6000)
 				totalTime = totalTime + 6000
 				if currentWaypoint ~= 1 then
 					PlaySound(sndExtraTime)
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -245,7 +245,7 @@
 	-- rounds start if hero got his weapons or got near the enemies
 	if CurrentHedgehog == hero.gear then
 		if not weaponsAcquired and not battleZoneReached then
-			TurnTimeLeft = -1
+			SetTurnTimeLeft(MAX_TURN_TIME)
 		end
 	elseif CurrentHedgehog == minion1.gear or CurrentHedgehog == minion2.gear or CurrentHedgehog == minion3.gear then
 		if not battleZoneReached then
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon02.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon02.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -115,7 +115,7 @@
 				lose()
 			end
 			SetWeapon(amRope)
-			TurnTimeLeft = runner.places[currentPosition].turnTime + previousTimeLeft
+			SetTurnTimeLeft(runner.places[currentPosition].turnTime + previousTimeLeft)
 			previousTimeLeft = 0
 		end
 	end
--- a/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -194,7 +194,7 @@
 		else
 			-- ... or just lower the timer by 1.
 			-- Reset the time left to stop the timer
-			TurnTimeLeft = time_goal
+			SetTurnTimeLeft(time_goal)
 		end
         end_timer = end_timer - 20
 	end
--- a/share/hedgewars/Data/Missions/Challenge/ClimbHome.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Challenge/ClimbHome.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -16,7 +16,7 @@
     -- Ensure people get same map for same theme
     Theme = themes[GetRandom(#themes)+1]
     Seed = ClimbHome
-    TurnTime = cMaxTurnTime
+    TurnTime = MAX_TURN_TIME
     EnableGameFlags(gfOneClanMode)
     DisableGameFlags(gfBottomBorder+gfBorder)
     CaseFreq = 0
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -21,7 +21,7 @@
 	GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand
 
 	-- Basically unlimited turn time
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 
 	Map = "Ropes"
 	Theme = "Eyes"
@@ -279,7 +279,7 @@
 end
 
 function onNewTurn()
-	TurnTimeLeft = -1
+	SetTurnTimeLeft(MAX_TURN_TIME)
 end
 
 function onGearAdd(gear)
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -72,16 +72,21 @@
 
 local playerTeamName = loc("Wannabe Shoppsta")
 
-function GenericEnd()
-	EndGame()
-end
-
 function GetKillScore()
 	return math.ceil((hogsKilled / 16)*6000)
 end
 
+function ProtectEnemies()
+	for i=1, 16 do
+		if hhs[i] and GetHealth(hhs[i]) then
+			SetEffect(hhs[i], heInvulnerable, 1)
+		end
+	end
+end
+
 function GameOverMan()
 	missionWon = false
+	ProtectEnemies()
 	ShowMission(loc("Rope-knocking Challenge"), loc("Challenge over!"), loc("Oh no! Just try again!"), -amSkip, 0)
 	SendStat(siGameResult, loc("Challenge over!"))
 	local score = GetKillScore()
@@ -89,6 +94,7 @@
 	SendStat(siPointType, loc("points"))
 	SendStat(siPlayerKills, tostring(score), playerTeamName)
 	PlaySound(sndHellish)
+	EndGame()
 end
 
 function GG()
@@ -100,11 +106,17 @@
 	local hogScore = GetKillScore()
 	local timeScore = math.ceil((finishTime/TurnTime)*6000)
 	local score = hogScore + timeScore
+
 	SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, hogScore))
 	SendStat(siCustomAchievement, string.format(loc("You have completed this challenge in %.2f s (+%d points)."), completeTime, timeScore))
 	SendStat(siPointType, loc("points"))
 	SendStat(siPlayerKills, tostring(score), playerTeamName)
 	SetTeamLabel(playerTeamName, tostring(score))
+
+	if hhs[0] and GetHealth(hhs[0]) then
+		SetEffect(hhs[0], heInvulnerable, 1)
+	end
+	SetTurnTimeLeft(MAX_TURN_TIME)
 end
 
 function AssignCharacter(p)
@@ -217,7 +229,7 @@
 
 		endTimer = endTimer - 1
 		if endTimer == 1 then
-			GenericEnd()
+			EndGame()
 		end
 
 		if missionWon == true then
@@ -234,6 +246,7 @@
 
 	if gear == hhs[0] then
 		ouchies = true
+		ProtectEnemies()
 	end
 
 	if gear ~= hhs[0] and GetGearType(gear) == gtHedgehog and missionWon == nil and ouchies == false then
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -86,7 +86,7 @@
 
 
 function onNewTurn()
-	TurnTimeLeft = -1
+	SetTurnTimeLeft(MAX_TURN_TIME)
 end
 
 function onGameTick()
--- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -114,7 +114,7 @@
 		if (CurrentHedgehog ~= nil) and (CurrentHedgehog == instructor) then
 			if endTimer >= 3000 then
 				--SetHealth(instructor,0)
-				TurnTimeLeft = 1
+				SetTurnTimeLeft(1)
 				DismissTeam(loc("Bloody Rookies"))
 			end
 			ShowMission(loc("Dangerous Ducklings"), loc("MISSION FAILED"), loc("You've failed. Try again."), -amRope, 5000);
@@ -136,14 +136,14 @@
 			gameLost = true
 		elseif (gear == instructor) and (GetY(gear) > WaterLine) then
 			HogSay(player, loc("See ya!"), SAY_THINK)
-			TurnTimeLeft = 3000
+			Retreat(3000)
 			awardAchievement(loc("Naughty Ninja"))
 			DismissTeam(loc("Blue Team"))
 			gameWon = true
 		elseif gear == enemy then
 			HogSay(player, loc("Enjoy the swim..."), SAY_THINK)
 			gameWon = true
-			TurnTimeLeft = 3000
+			Retreat(3000)
 		end
 
 	end
--- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Spooky_Tree.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Spooky_Tree.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -140,11 +140,11 @@
 function onGearDelete(gear)
 
 	if gear == GirderCrate then
-		TurnTimeLeft = TurnTimeLeft + 30000
+		SetTurnTimeLeft(TurnTimeLeft + 30000)
 	end
 
 	if GetGearType(gear) == gtCase then
-		TurnTimeLeft = TurnTimeLeft + 5000
+		SetTurnTimeLeft(TurnTimeLeft + 5000)
 	end
 
 	if (gear == enemy) and (GameOver == false) then
--- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -104,7 +104,7 @@
 	end
 
 	if GetGearType(gear) == gtCase then
-		TurnTimeLeft = TurnTimeLeft + 5000
+		SetTurnTimeLeft(TurnTimeLeft + 5000)
 	end
 	-- Note: The victory sequence is done automatically by Hedgewars
 	if  ( ((gear == player) or (gear == p2)) and (GameOver == false)) then
--- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork_2.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork_2.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -13,7 +13,7 @@
 function onGameInit()
 	Seed = 0
 	GameFlags = gfDisableWind
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	CaseFreq = 0
 	MinesNum = 0
 	MinesTime = 0
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -38,7 +38,7 @@
 	Seed = 0
 	Theme = "Nature"
 	MapGen = mgDrawn
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	Explosives = 0
 	MinesNum = 0
 	CaseFreq = 0
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -198,7 +198,7 @@
 	SendStat(siCustomAchievement, loc("Good job!"))
 	SendStat(siPlayerKills, "0", loc("Hogonauts"))
 
-	TurnTimeLeft = 0
+	EndTurn(true)
 	EndGame()
 end,
 }
@@ -365,7 +365,7 @@
 function onGameInit()
 	Seed = 1
 	GameFlags = gfInfAttack + gfOneClanMode + gfSolidLand + gfDisableWind
-	TurnTime = cMaxTurnTime --[[ This effectively hides the turn time; a turn time above 1000s is not displayed.
+	TurnTime = MAX_TURN_TIME --[[ This effectively hides the turn time; a turn time above 1000s is not displayed.
 			   	     We will also ensure this timer always stays above 999s later ]]
 	CaseFreq = 0
 	MinesNum = 0
@@ -504,7 +504,7 @@
 
 function onGameTick20()
 	if (TurnTimeLeft < 1500000 and not Objective) then
-		TurnTimeLeft = TurnTime
+		SetTurnTimeLeft(TurnTime)
 	end
 	if Check then
 		CheckTimer = CheckTimer - 20
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -30,7 +30,7 @@
 	Map = "Mushrooms"
 	Seed = 0
 	Theme = "Nature"
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	Explosives = 0
 	MinesNum = 0
 	CaseFreq = 0
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -103,7 +103,7 @@
 	Seed = 0
 	Theme = "Brick"
 	MapGen = mgDrawn
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	Explosives = 0
 	MinesNum = 0
 	CaseFreq = 0
@@ -162,7 +162,8 @@
 	PlaceSprite(1175, 1772, sprAmGirder, 0, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1226, 1738, sprAmGirder, 2, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1275, 1705, sprAmGirder, 0, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
-	PlaceSprite(1325, 1683, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
+	PlaceSprite(1325, 1700, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
+	PlaceSprite(1342, 1638, sprAmGirder, 2, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1368, 1560, sprAmGirder, 3, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1390, 1665, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1481, 1716, sprAmGirder, 4, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
@@ -192,7 +193,7 @@
 	PlaceSprite(1545, 1811, sprAmGirder, 2, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1577, 1761, sprAmGirder, 0, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(1610, 1811, sprAmGirder, 2, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
-	PlaceSprite(1440, 1531, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
+	PlaceSprite(1440, 1511, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(2082, 1337, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(2187, 1273, sprAmGirder, 6, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
 	PlaceSprite(2097, 1246, sprAmGirder, 4, U_LAND_TINT_NORMAL, nil, nil, nil, lfNormal)
@@ -237,7 +238,7 @@
 	crates[4] = SpawnHealthCrate(889, 1829)			-- Back Jumping
 	crates[5] = SpawnHealthCrate(1486, 1694)		-- Walking on Ice
 	crates[6] = SpawnHealthCrate(2033, 1470)		-- Walking on Ice completed
-	crates[7] = SpawnHealthCrate(1297, 1683)		-- Back Jumping 2
+	crates[7] = SpawnHealthCrate(1198, 1750)		-- Back Jumping 2
 	crates[8] = SpawnSupplyCrate(1851, 1402, amSwitch, 100)	-- Switch Hedgehog
 	crates[9] = SpawnHealthCrate(564, 1772)			-- Health
 	crates[10] = SpawnHealthCrate(2290, 1622)		-- Turning Around
@@ -247,6 +248,7 @@
 	ShowMission(loc("Basic Movement Training"), loc("Training complete!"),loc("Congratulations! You have completed the obstacle course!"), 0, 0)
 	SendStat(siGameResult, loc("You have completed the Basic Movement Training!"))
 	SendStat(siCustomAchievement, loc("Congratulations!"))
+	SendStat(siCustomAchievement, loc("Return to the training menu by pressing the “Go back” button."))
 	SendStat(siPlayerKills, "0", loc("Training Team"))
 	PlaySound(sndVictory, CurrentHedgehog)
 	-- Disable controls, end game
@@ -310,10 +312,8 @@
 		loc("High Jump: [Backspace]").."|"..loc("Back Jump: [Backspace] ×2"), 2, 6600)
 	elseif gear == crates[7] then
 		ShowMission(loc("Basic Movement Training"), loc("Back Jumping (2/2)"),
-		loc("To get over the next obstacle, you need to perform your back jump precisely.").."|"..
-		loc("Hint: Hit “High Jump” again when you're close to the highest point of a high jump.").."|"..
-		loc("Hint: Don't stand too close at the wall before you jump!").."|"..
-		loc("Hint: Use the flower for orientation.").."|"..
+		loc("To get over the next obstacles, keep some distance from the wall before you back jump.").."|"..
+		loc("Hint: To jump higher, wait a bit before you hit “High Jump” a second time.").."|"..
 		loc("High Jump: [Backspace]").."|"..loc("Back Jump: [Backspace] ×2"), 2, 15000)
 	elseif gear == crates[5] then
 		ShowMission(loc("Basic Movement Training"), loc("Walking on Ice"),
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -110,7 +110,7 @@
 	MapFeatureSize = 12
 	TemplateFilter = 0
 	TemplateNumber = 0
-	TurnTime = cMaxTurnTime
+	TurnTime = MAX_TURN_TIME
 	Explosives = 0
 	MinesNum = 0
 	CaseFreq = 0
--- a/share/hedgewars/Data/Scripts/Animate.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Animate.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -310,7 +310,7 @@
     skipping = false
     return true
   else
-    TurnTimeLeft = -1
+    SetTurnTimeLeft(MAX_TURN_TIME)
     if Animate(AnimList[1]) == true then
       RemoveAnim()
     end
--- a/share/hedgewars/Data/Scripts/Locale.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Locale.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -1,6 +1,8 @@
 -- Library for localizing strings in lua scripts
 
-local lang = HedgewarsScriptLoad("Locale/" .. tostring(LOCALE) .. ".lua")
+if LOCALE ~= "en" then
+    HedgewarsScriptLoad("Locale/" .. tostring(LOCALE) .. ".lua", false)
+end
 
 function loc(text)
     if locale ~= nil and locale[text] ~= nil then return locale[text]
--- a/share/hedgewars/Data/Scripts/Multiplayer/Balanced_Random_Weapon.cfg	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Balanced_Random_Weapon.cfg	Mon Sep 24 11:18:48 2018 -0400
@@ -1,2 +1,2 @@
 *
-locked
+Balanced_Random_Weapon
--- a/share/hedgewars/Data/Scripts/Multiplayer/Balanced_Random_Weapon.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Balanced_Random_Weapon.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -1,36 +1,83 @@
+--[[
+Balanced Random Weapon
+
+Every turn, each hog gets 1-3 random weapons. Weapons are reset every turn.
+
+= CUSTOMIZATION =
+The weapon chances are chosen with the weapons scheme.
+
+The "ammo count" tab is used to set the probability level that you get
+equipped with the ammo at the start of a turn:
+
+* infinity = always get this weapon
+* 3-8 bullets = high probability (more bullets don't make it more likely)
+* 2 bullets = medium probability
+* 1 bullet = low probability
+* 0 bullets = never
+
+For utilities, the low and medium probabilities are the same.
+
+The "probabilities" tab is, as usual, for crate probabilities.
+The "ammo in crate" and "delay" tabs also work as expected.
+]]
+
 HedgewarsScriptLoad("/Scripts/Locale.lua")
 HedgewarsScriptLoad("/Scripts/Tracker.lua")
 
-local weapons = { amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amMine, amDEagle, amDynamite, amFirePunch, amWhip, amPickHammer, amBaseballBat, amMortar, amCake, amSeduction, amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane, amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb, amFlamethrower, amSMine, amKamikaze, amMinigun, amAirMine, amKnife }
-
---                      G,C,B,B,S,M,D,D,F,W,P,B,M,C,S,W,H,D,B,R,S,M,B,B,G,F,S,K,M,A,K
-local weapons_values = {1,1,1,2,1,1,1,2,1,1,1,2,1,3,1,3,3,2,3,3,1,1,2,1,1,2,2,1,3,1,2}
-
-local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike }
+local weapons = {}
+local weapons_values = {}
+local weapons_count = 0
+local utilities = {}
+local utilities_values = {}
+local utilities_count = 0
 
---                         A,M,N,D
-local airweapons_values = {2,2,2,2}
+local gotten_air_weapons = {}
 
-local utilities = { amTeleport, amGirder, amSwitch, amLowGravity, amResurrector, amRope, amParachute, amJetpack, amPortalGun, amSnowball }
-
---                        T,G,S,L,R,R,P,J,P,S
-local utilities_values = {1,2,2,1,2,2,1,2,2,2}
+local isUtility, isAirWeapon
 
 function randomAmmo()
+--[[
+= WEAPON SELECTION ALGORITHM =
+Each turn, a team gets 3 "points". Each ammo that has been activated
+has a "cost" of 1-3 which is derived from the ammo probability specified
+from the ammo menu (see getCost).
+Utilities are forced to have a cost of 1-2.
+
+Steps:
+1. Add a random weapon to ammo and subtract cost
+2. If there's still points left:
+    a. Forget any item in mind
+    b. Choose a random weapon and keep it in mind (but don't add it to the ammo yet)
+    c. Choose a random utility and keep it in mind (but don't add it to the ammo yet)
+    d. Forget any items which are either too expensive or have already been taken by this hedgehog
+    e. Randomly add one of the items which are still in mind to the hedgehog's ammo and substract cost
+    f. Return to step 2
+
+If 0 points are left, the algorithm terminates.
+]]
+    local picked_items = {}
+
     local n = 3   --"points" to be allocated on weapons
 
     --pick random weapon and subtract cost
-    local r = GetRandom(table.maxn(weapons_values)) + 1
-    local picked_items = {}
-    table.insert(picked_items, weapons[r])
-    n = n - weapons_values[r]
-
+    if weapons_count > 0 then
+        local r = GetRandom(weapons_count) + 1
+        table.insert(picked_items, weapons[r])
+        n = n - weapons_values[r]
+    elseif utilities_count > 0 then
+        local r = GetRandom(utilities_count) + 1
+        table.insert(picked_items, utilities[r])
+        n = n - utilities_values[r]
+    else
+        return picked_items
+    end
 
     --choose any weapons or utilities to use up remaining n
 
     while n > 0 do
         local items = {}
         local items_values = {}
+        local items_count = 0
 
         for i, w in pairs(weapons_values) do
             local used = false
@@ -44,6 +91,7 @@
                 if not used then
                     table.insert(items_values, w)
                     table.insert(items, weapons[i])
+                    items_count = items_count + 1
                 end
             end
         end
@@ -60,13 +108,18 @@
                 if not used then
                     table.insert(items_values, w)
                     table.insert(items, utilities[i])
+                    items_count = items_count + 1
                 end
             end
         end
 
-        local r = GetRandom(table.maxn(items_values)) + 1
-        table.insert(picked_items, items[r])
-        n = n - items_values[r]
+        if items_count > 0 then
+            local r = GetRandom(items_count) + 1
+            table.insert(picked_items, items[r])
+            n = n - items_values[r]
+        else
+            break
+        end
     end
 
     return picked_items
@@ -82,7 +135,7 @@
             setTeamValue(name, "ammo", ammo)
         end
         for i, w in pairs(ammo) do
-            AddAmmo(hog, w)
+            AddAmmo(hog, w, 1)
         end
         setTeamValue(name, "processed", true)
     end
@@ -93,19 +146,74 @@
 end
 
 function onGameInit()
-    DisableGameFlags(gfPerHogAmmo)
+    DisableGameFlags(gfPerHogAmmo, gfSharedAmmo)
     EnableGameFlags(gfResetWeps)
     Goals = loc("Each turn you get 1-3 random weapons")
+
+    isUtility = {
+        [amTeleport] = true,
+        [amGirder] = true,
+        [amSwitch] = true,
+        [amLowGravity] = true,
+        [amResurrector] = true,
+        [amRope] = true,
+        [amParachute] = true,
+        [amJetpack] = true,
+        [amPortalGun] = true,
+        [amRubber] = true,
+        [amTardis] = true,
+        [amLandGun] = true,
+        [amExtraTime] = true,
+        [amVampiric] = true,
+        [amLaserSight] = true,
+        [amExtraDamage] = true,
+        [amInvulnerable] = true,
+
+        -- unusual classification
+        [amSnowball] = true,
+    }
+
+    isAirWeapon = {
+        [amAirAttack] = true,
+        [amMineStrike] = true,
+        [amNapalm] = true,
+        [amDrillStrike] = true,
+        [amPiano] = true,
+    }
+
+end
+
+local function getCost(ammoType, ammoCount)
+    if ammoCount == 0 or ammoCount == 9 then
+        return 0
+    else
+        local max
+        if isUtility[ammoType] then
+            -- Force-limit cost of utilities to 2 because utilities with
+            -- a cost of 3 could never be "paid"
+            max = 2
+        else
+            max = 3
+        end
+        return math.max(1, math.min(max, 4 - ammoCount))
+    end
 end
 
 function onGameStart()
     trackTeams()
+    -- Add air weapons
     if MapHasBorder() == false then
-        for i, w in pairs(airweapons) do
-            table.insert(weapons, w)
-        end
-        for i, w in pairs(airweapons_values) do
-            table.insert(weapons_values, w)
+        for a = 0, AmmoTypeMax do
+            if isAirWeapon[a] then
+                local gotten = gotten_air_weapons[a]
+                local ammoCount, prob, delay, ammoInCrate = gotten[1], gotten[2], gotten[3], gotten[4]
+                local cost = getCost(a, ammoCount)
+                if cost > 0 then
+                    table.insert(weapons, a)
+                    table.insert(weapons_values, cost)
+                    weapons_count = weapons_count + 1
+                end
+            end
         end
     end
 end
@@ -113,22 +221,34 @@
 function onAmmoStoreInit()
     SetAmmo(amSkip, 9, 0, 0, 0)
 
-    SetAmmo(amExtraDamage, 0, 1, 0, 1)
-    SetAmmo(amInvulnerable, 0, 1, 0, 1)
-    SetAmmo(amExtraTime, 0, 1, 0, 1)
-    SetAmmo(amLaserSight, 0, 1, 0, 1)
-    SetAmmo(amVampiric, 0, 1, 0, 1)
-
-    for i, w in pairs(utilities) do
-        SetAmmo(w, 0, 0, 0, 1)
-    end
-
-    for i, w in pairs(weapons) do
-        SetAmmo(w, 0, 0, 0, 1)
-    end
-
-    for i, w in pairs(airweapons) do
-        SetAmmo(w, 0, 0, 0, 1)
+    for a=0, AmmoTypeMax do
+        if a ~= amNothing and a ~= amSkip then
+            local ammoCount, prob, delay, ammoInCrate = GetAmmo(a)
+            if (not isAirWeapon[a]) then
+                local cost = getCost(a, ammoCount)
+                if cost > 0 then
+                    if isUtility[a] then
+                        table.insert(utilities, a)
+                        table.insert(utilities_values, cost)
+                        utilities_count = utilities_count + 1
+                    else
+                        table.insert(weapons, a)
+                        table.insert(weapons_values, cost)
+                        weapons_count = weapons_count + 1
+                    end
+                end
+            else
+                -- air weapons are handled in onGameStart
+                gotten_air_weapons[a] = { ammoCount, prob, delay, ammoInCrate }
+            end
+            local realAmmoCount
+            if ammoCount ~= 9 then
+                realAmmoCount = 0
+            else
+                realAmmoCount = 1
+            end
+            SetAmmo(a, realAmmoCount, prob, delay, ammoInCrate)
+        end
     end
 end
 
--- a/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -53,9 +53,11 @@
 	-- Set attacked state to prevent “Boring” sound to be played
 	SetState(CurrentHedgehog, bor(GetState(CurrentHedgehog), gstAttacked))
 	--set escape time
-	TurnTimeLeft = GetAwayTime*10*seconds
-	if TurnTimeLeft > 0 then
-		Retreat(TurnTimeLeft, false)
+	local escapeTime = GetAwayTime*10*seconds
+	if escapeTime > 0 then
+		Retreat(escapeTime, false)
+	else
+		SetTurnTimeLeft(escapeTime)
 	end
  end
 
@@ -1212,7 +1214,7 @@
 				CS.HOG_HEALTH=GetHealth(CurrentHedgehog)
 			end
 
-			TurnTimeLeft=100000
+			SetTurnTimeLeft(100000)
 
 			AddCaption(string.format(CS.SELECT_WEP_INFORMATION_SHORT, GetHogTeamName(CurrentHedgehog)), capcolDefault, capgrpGameState)
 			AddCaption(loc("No continent selected"), GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
@@ -1637,8 +1639,11 @@
 	end
 end
 
-function ShowContinentLabel()
-	if CS.TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)] == 0 then
+function ShowContinentLabel(continent)
+	if not continent then
+		continent = CS.TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]
+	end
+	if continent == 0 then
 		AddCaption(loc("Random continent"), GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
 	else
 		AddCaption(CS.CONTINENT_INFORMATION[CS.TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]][1], GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
@@ -1680,7 +1685,15 @@
 		CS.SELECT_CONTINENT_CHECK=false
 		EndTurnCS(0)
 		PlaySound(sndPlaced)
-		ShowContinentLabel()
+		if(CurrentHedgehog and CS.TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
+		then
+			CS.TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(CS.CONTINENT_INFORMATION))+1
+			SetContinentWeapons()
+			HideMission()
+			ShowContinentLabel(0)
+		else
+			ShowContinentLabel()
+		end
 		CS.CONFIRM_CONTINENT_SELECTION = -1
 	end
 
--- a/share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -2868,7 +2868,7 @@
 
 -- Display the X and Y coordinates of the cursor while the cursor is active
 function updateCursorCoords()
-	if band(GetState(CurrentHedgehog), gstChooseTarget) ~= 0 and CursorX ~= NoPointX then
+	if band(GetState(CurrentHedgehog), gstChooseTarget) ~= 0 and CursorX ~= NO_CURSOR then
 		local x1, y = 12, 24
 		if tagCursorX then
 			DeleteVisualGear(tagCursorX)
@@ -3785,7 +3785,7 @@
 	-- regardless of our other ammo, give stuff that is useful for editing
 	SetEditingWeps(100)
 	if GetHogLevel(CurrentHedgehog) == 0 then
-		TurnTimeLeft = cMaxTurnTime
+		SetTurnTimeLeft(MAX_TURN_TIME)
 	else
 		SkipTurn() -- skip the computer's turn
 	end
--- a/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -153,9 +153,11 @@
 end
 
 function onGameStart()
-    SendHealthStatsOff()
+    if ClansCount >= 2 then
+        SendHealthStatsOff()
+        SendAchievementsStatsOff()
+    end
     SendRankingStatsOff()
-    SendAchievementsStatsOff()
     trackTeams()
     teamScan()
     runOnHogs(saveStuff)
--- a/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -663,10 +663,12 @@
 end
 
 function onGameStart()
-	SendGameResultOff()
-	SendRankingStatsOff()
-        SendHealthStatsOff()
-	SendAchievementsStatsOff()
+	if ClansCount >= 2 then
+		SendGameResultOff()
+		SendRankingStatsOff()
+        	SendHealthStatsOff()
+		SendAchievementsStatsOff()
+	end
 
         SetSoundMask(sndIncoming, true)
         SetSoundMask(sndMissed, true)
--- a/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -47,7 +47,7 @@
 
 function onGameInit()
     -- Limit flags that can be set, but allow game schemes to be used
-    DisableGameFlags(gfInfAttack)
+    DisableGameFlags(gfInfAttack, gfPerHogAmmo, gfSharedAmmo)
     EnableGameFlags(gfResetWeps)
     -- Set a custom game goal that will show together with the scheme ones
     Goals = loc("Each turn you get one random weapon")
--- a/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -89,13 +89,11 @@
 
 -- add support for other world edges (they are currently disabled)
 
--- maybe add a check for a tie, IMPOSSIBRU THERE ARE NO TIES
-
--- if more weps are added, replace primshotsfired all over the place
+-- if more weapons are added, replace primshotsfired all over the place
 
 -- look for derp and let invaders shoot again
 
--- more weps? flamer/machineballgun,
+-- more weapons? flamer/machineballgun,
 -- some kind of bomb that just drops straight down
 -- "fire and forget" missile
 -- shockwave
@@ -106,7 +104,7 @@
 
 -- new invader: golden snitch, doesn't show up on your radar
 
--- maybe replace (48/100*vCircRadius[i])/2 with something better
+-- maybe replace (48/100*SI.vCircRadius[i])/2 with something better
 
 -------------------
 -- CAPTION TYPES --
@@ -128,203 +126,195 @@
 -- so I herd u liek wariables
 ----------------------------------
 
-local fMod = 1000000 -- use this for dev and .16+ games
+-- The table that holds the Space Invasion variables
+local SI = {}
+
+SI.fMod = 1000000 -- use this for dev and .16+ games
 
 -- Tag IDs
-local TAG_TIME = 0
-local TAG_BARRELS = 1
-local TAG_SHIELD = 2
-local TAG_ROUND_SCORE = 4
+SI.TAG_TIME = 0
+SI.TAG_BARRELS = 1
+SI.TAG_SHIELD = 2
+SI.TAG_ROUND_SCORE = 4
 
 -- some console stuff
-local shellID = 0
-local explosivesID = 0
-local luaGameTicks = 0
+SI.shellID = 0
+SI.explosivesID = 0
 
 -- gaudyRacer
-local boosterOn = false
-local preciseOn = false
-local roundLimit = 3		-- can be overridden by script parameter "rounds"
-local roundNumber = 0
-local firstClan = 10
-local gameOver = false
-local gameBegun = false
-
-local bestClan = 10
-local bestScore = 0
-local sdScore = {}
-local sdName = {}
-local sdKills = {}
-
-local roundN = 0
-local lastRound
-local RoundHasChanged = true
+SI.boosterOn = false
+SI.preciseOn = false
+SI.roundLimit = 3		-- can be overridden by script parameter "rounds"
+SI.roundNumber = 0
+SI.lastRound = -1
+SI.gameOver = false
+SI.gameBegun = false
 
 -- for script parameters
 -- NOTE: If you change this, also change the default “Space Invasion” game scheme
-local startBarrels = 5		-- "barrels"
-local startShield = 30		-- "shield"
-local startRadShots = 2		-- "pings"
-local shieldBonus = 30		-- "shieldbonus"
-local barrelBonus = 3		-- "barrelbonus"
-local timeBonus = 4		-- "timebonus"
-local forceTheme = true		-- "forcetheme"
+SI.startBarrels = 5		-- "barrels"
+SI.startShield = 30		-- "shield"
+SI.startRadShots = 2		-- "pings"
+SI.shieldBonus = 30		-- "shieldbonus"
+SI.barrelBonus = 3		-- "barrelbonus"
+SI.timeBonus = 4		-- "timebonus"
+SI.forceTheme = true		-- "forcetheme"
 
 --------------------------
 -- hog and team tracking variales
 --------------------------
 
-local numhhs = 0
-local hhs = {}
-
-local numTeams
-local teamNameArr = {}
-local teamClan = {}
-local teamSize = {}
-local teamIndex = {}
-
-local teamScore = {}
-local teamCircsKilled = {}
-local teamSurfer = {}
+SI.numhhs = 0
+SI.hhs = {}
+
+SI.teamNameArr = {}
+SI.teamNameArrReverse = {}
+SI.teamClan = {}
+SI.teamSize = {}
+SI.teamIndex = {}
+
+SI.teamScore = {}
+SI.teamCircsKilled = {}
+SI.teamSurfer = {}
 
 -- stats variables
-local roundKills = 0
-local roundScore = 0
-local RK = 0
-local GK = 0
-local BK = 0
-local OK = 0
-local SK = 0
-local shieldMiser = true
-local fierceComp = false
-local chainCounter = 0
-local chainLength = 0
-local shotsFired = 0
-local shotsHit = 0
-local sniperHits = 0
-local pointBlankHits = 0
+SI.roundKills = 0
+SI.roundScore = 0
+SI.RK = 0
+SI.GK = 0
+SI.BK = 0
+SI.OK = 0
+SI.SK = 0
+SI.shieldMiser = true
+SI.fierceComp = false
+SI.chainCounter = 0
+SI.chainLength = 0
+SI.shotsFired = 0
+SI.shotsHit = 0
+SI.sniperHits = 0
+SI.pointBlankHits = 0
 
 ---------------------
 -- awards (for stats section, just for fun)
 ---------------------
 -- global awards
-local awardTotalKills=0	-- overall killed invaders (min. 30)
+SI.awardTotalKills=0	-- overall killed invaders (min. 30)
 
 -- hog awards
-local awardRoundScore	-- hog with most score in 1 round (min. 50)
-local awardRoundKills	-- most kills in 1 round (min. 5)
-local awardAccuracy	-- awarded to hog who didn’t miss once in his round, with most kills (min. 5)
-local awardCombo	-- hog with longest combo (min. 5)
+SI.awardRoundScore = nil	-- hog with most score in 1 round (min. 50)
+SI.awardRoundKills = nil	-- most kills in 1 round (min. 5)
+SI.awardAccuracy = nil	-- awarded to hog who didn’t miss once in his round, with most kills (min. 5)
+SI.awardCombo = nil	-- hog with longest combo (min. 5)
 
 
 
 -- Taunt trackers
-local tauntTimer = -1
-local tauntGear = nil
-local tauntSound = nil
-local tauntClanShots = 0 -- hogs of same clans shot in this turn
+SI.tauntTimer = -1
+SI.tauntGear = nil
+SI.tauntSound = nil
+SI.tauntClanShots = 0 -- hogs of same clans shot in this turn
 
 ---------------------
 -- tumbler goods
 ---------------------
 
-local moveTimer = 0
-local leftOn = false
-local rightOn = false
-local upOn = false
-local downOn = false
+SI.moveTimer = 0
+SI.leftOn = false
+SI.rightOn = false
+SI.upOn = false
+SI.downOn = false
 
 ----------------
 -- TUMBLER
-local wep = {}
-local wepAmmo = {}
-local wepIndex = 0
-local wepCount = 0
+SI.wep = {}
+SI.wepAmmo = {}
+SI.wepIndex = 0
+SI.wepCount = 0
 ----------------
 
 
 
-local primShotsMax = 5
-local primShotsLeft = 0
-
-local TimeLeftCounter = 0
-local TimeLeft = 0
-local stopMovement = false
-local tumbleStarted = false
-
-local beam = false
-local pShield
-local shieldHealth
-
-local timer100 = 0
-
-local vTag = {}
+SI.primShotsMax = 5
+SI.primShotsLeft = 0
+
+SI.TimeLeftCounter = 0
+SI.TimeLeft = 0
+SI.stopMovement = false
+SI.tumbleStarted = false
+
+SI.beam = false
+SI.pShield = nil
+SI.shieldHealth = 0
+
+SI.timer100 = 0
+
+SI.vTag = {}
 
 -----------------------------------------------
 -- CIRCLY GOODIES
 -----------------------------------------------
 
-local circlesAreGo = false
-local playerIsFine = true
-local targetHit = false
-
-local fadeAlpha = 0 -- used to fade the circles out gracefully when player dies
-local pTimer = 0 -- tracking projectiles following player
-
-local circAdjustTimer = 0		-- handle adjustment of circs direction
-local m2Count = 0		-- handle speed of circs
-
-local vCirc = {}
-local vCCount = 0
-
-local rCirc = {}
-local rCircX = {}
-local rCircY = {}
-local rAlpha = 255
-local rPingTimer = 0
-local radShotsLeft = 0
-
-local vCircActive = {}
-local vCircHealth = {}
-local vType = {}
-local vCounter = {}		-- how often this circ gets to "fire" etc
-local vCounterLim = {} -- when vCounter == vCounterLim circle performs its special
-local vCircScore = {} -- how many points killing this invader gives
-
-local vCircRadMax = {}
-local vCircRadMin = {}
-local vCircRadDir = {}
-local vCircRadCounter = {}
-
-local vCircDX = {}
-local vCircDY = {}
-
-local vCircX = {}
-local vCircY = {}
-local vCircMinA = {}
-local vCircMaxA = {}
-local vCircType = {}
-local vCircPulse = {}
-local vCircFuckAll = {}
-local vCircRadius = {}
-local vCircWidth = {}
-local vCircCol = {}
+SI.circlesAreGo = false
+SI.playerIsFine = true
+SI.targetHit = false
+
+SI.fadeAlpha = 0 -- used to fade the circles out gracefully when player dies
+SI.pTimer = 0 -- tracking projectiles following player
+
+SI.circAdjustTimer = 0		-- handle adjustment of circs direction
+SI.m2Count = 0		-- handle speed of circs
+
+SI.vCirc = {}
+SI.vCCount = 0
+
+SI.rCirc = {}
+SI.rCircX = {}
+SI.rCircY = {}
+SI.rAlpha = 255
+SI.rPingTimer = 0
+SI.radShotsLeft = 0
+
+SI.vCircActive = {}
+SI.vCircHealth = {}
+SI.vType = {}
+SI.vCounter = {}		-- how often this circ gets to "fire" etc
+SI.vCounterLim = {} -- when SI.vCounter == SI.vCounterLim circle performs its special
+SI.vCircScore = {} -- how many points killing this invader gives
+
+SI.vCircRadMax = {}
+SI.vCircRadMin = {}
+SI.vCircRadDir = {}
+SI.vCircRadCounter = {}
+
+SI.vCircDX = {}
+SI.vCircDY = {}
+
+SI.vCircX = {}
+SI.vCircY = {}
+SI.vCircMinA = {}
+SI.vCircMaxA = {}
+SI.vCircType = {}
+SI.vCircPulse = {}
+SI.vCircFuckAll = {}
+SI.vCircRadius = {}
+SI.vCircWidth = {}
+SI.vCircCol = {}
 
 -- Colors
 -- Invaders
-local colorDrone = 0xFF0000FF
-local colorBoss = 0x0050FFFF
-local colorBossParticle = colorBoss
-local colorAmmo = 0x00FF00FF
-local colorShield = 0xA800FFFF
-local colorShieldParticle = colorShield
-local colorDisabled = 0xFFFFFFFF -- disabled invader at end of turn
-
--- Other colors
-local colorMsgDepleted = 0xFF0000FF
-local colorMsgBonus = 0xFFBA00FF
-local colorTimer = 0xFFEE00FF
-local colorScore = 0xFFFFFFFF
+SI.colorDrone = 0xFF0000FF
+SI.colorBoss = 0x0050FFFF
+SI.colorBossParticle = SI.colorBoss
+SI.colorAmmo = 0x00FF00FF
+SI.colorShield = 0xA800FFFF
+SI.colorShieldParticle = SI.colorShield
+SI.colorDisabled = 0xFFFFFFFF -- disabled invader at end of turn
+
+-- Other SI.colors
+SI.colorMsgDepleted = 0xFF0000FF
+SI.colorMsgBonus = 0xFFBA00FF
+SI.colorTimer = 0xFFEE00FF
+SI.colorScore = 0xFFFFFFFF
 
 -------------------------------------------
 -- some lazy copypasta/modified methods
@@ -334,7 +324,7 @@
 
 function HideTag(i)
 
-	SetVisualGearValues(vTag[i],0,0,0,0,0,1,0, 0, 240000, 0xFFFFFF00)
+	SetVisualGearValues(SI.vTag[i],0,0,0,0,0,1,0, 0, 240000, 0xFFFFFF00)
 
 end
 
@@ -344,33 +334,33 @@
 	local xOffset = 40
 	local yOffset, tValue, tCol
 
-	if i == TAG_TIME then
+	if i == SI.TAG_TIME then
 		yOffset = 40
-		tCol = colorTimer
-		tValue = TimeLeft
-	elseif i == TAG_BARRELS then
+		tCol = SI.colorTimer
+		tValue = SI.TimeLeft
+	elseif i == SI.TAG_BARRELS then
 		zoomL = 1.1
 		yOffset = 70
-		tCol = colorAmmo
-		tValue = wepAmmo[wepIndex]
-	elseif i == TAG_SHIELD then
+		tCol = SI.colorAmmo
+		tValue = SI.wepAmmo[SI.wepIndex]
+	elseif i == SI.TAG_SHIELD then
 		zoomL = 1.1
 		xOffset = 40 + 35
 		yOffset = 70
-		tCol = colorShield
-		tValue = shieldHealth - 80
-	elseif i == TAG_ROUND_SCORE then
+		tCol = SI.colorShield
+		tValue = SI.shieldHealth - 80
+	elseif i == SI.TAG_ROUND_SCORE then
 		zoomL = 1.1
 		xOffset = 40
 		yOffset = 100
-		tCol = colorScore
-		tValue = roundScore
+		tCol = SI.colorScore
+		tValue = SI.roundScore
 	end
 
-	DeleteVisualGear(vTag[i])
-	vTag[i] = AddVisualGear(0, 0, vgtHealthTag, 0, false)
+	DeleteVisualGear(SI.vTag[i])
+	SI.vTag[i] = AddVisualGear(0, 0, vgtHealthTag, 0, false)
 	SetVisualGearValues	(
-				vTag[i], 		--id
+				SI.vTag[i], 		--id
 				-(div(ScreenWidth, 2)) + xOffset,	--xoffset
 				ScreenHeight - yOffset, --yoffset
 				0, 			--dx
@@ -389,73 +379,52 @@
 
 	-- make a list of individual team names
 	for i = 0, (TeamsCount-1) do
-		teamSize[i] = 0
-		teamIndex[i] = 0
-		teamScore[i] = 0
-		teamCircsKilled[i] = 0
-		teamSurfer[i] = false
+		SI.teamSize[i] = 0
+		SI.teamIndex[i] = 0
+		SI.teamScore[i] = 0
+		SI.teamCircsKilled[i] = 0
+		SI.teamSurfer[i] = false
 	end
-	numTeams = 0
-
-	for i = 0, (numhhs-1) do
-
-		local z = 0
-		local unfinished = true
-		while(unfinished == true) do
-
-			local newTeam = true
-			local tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
-
-			if tempHogTeamName == teamNameArr[z] then
-				newTeam = false
-				unfinished = false
-			end
-
-			z = z + 1
-
-			if z == (TeamsCount-1) then
-				unfinished = false
-				if newTeam == true then
-					teamNameArr[numTeams] = tempHogTeamName
-					numTeams = numTeams + 1
-				end
-			end
-
-		end
+
+	for i=0, TeamsCount-1 do
+
+		local name = GetTeamName(i)
+		SI.teamNameArr[i] = name
+		SI.teamNameArrReverse[name] = i
 
 	end
 
-	-- find out how many hogs per team, and the index of the first hog in hhs
+	-- find out how many hogs per team, and the index of the first hog in SI.hhs
 	for i = 0, (TeamsCount-1) do
 
-		for z = 0, (numhhs-1) do
-			if GetHogTeamName(hhs[z]) == teamNameArr[i] then
-				teamClan[i] = GetHogClan(hhs[z])
-				if teamSize[i] == 0 then
-					teamIndex[i] = z -- should give starting index
+		for z = 0, (SI.numhhs-1) do
+			if GetHogTeamName(SI.hhs[z]) == SI.teamNameArr[i] then
+				SI.teamClan[i] = GetHogClan(SI.hhs[z])
+				if SI.teamSize[i] == 0 then
+					SI.teamIndex[i] = z -- should give starting index
 				end
-				teamSize[i] = teamSize[i] + 1
-				--add a pointer so this hog appears at i in hhs
+				SI.teamSize[i] = SI.teamSize[i] + 1
+				--add a pointer so this hog appears at i in SI.hhs
 			end
 		end
 
 	end
 
 	for i=0, TeamsCount-1 do
-		SetTeamLabel(teamNameArr[i], teamScore[i])
+		SetTeamLabel(SI.teamNameArr[i], SI.teamScore[i])
 	end
 
 end
 
 -- control
 function AwardPoints(p)
-	roundScore = roundScore + p
-	DrawTag(TAG_ROUND_SCORE)
+	SI.roundScore = SI.roundScore + p
+	DrawTag(SI.TAG_ROUND_SCORE)
 
 	for i = 0,(TeamsCount-1) do
-		if teamClan[i] == GetHogClan(CurrentHedgehog) then
-			teamScore[i] = teamScore[i] + p
-			SetTeamLabel(teamNameArr[i], teamScore[i])
+		if SI.teamClan[i] == GetHogClan(CurrentHedgehog) then
+			SI.teamScore[i] = SI.teamScore[i] + p
+			SetTeamLabel(SI.teamNameArr[i], SI.teamScore[i])
 		end
 	end
 
@@ -463,12 +432,12 @@
 
 function AwardKills(t)
 
-	roundKills = roundKills + 1
+	SI.roundKills = SI.roundKills + 1
 
 	for i = 0,(TeamsCount-1) do
-		if teamClan[i] == GetHogClan(CurrentHedgehog) then
-			teamCircsKilled[i] = teamCircsKilled[i] + 1
-			awardTotalKills = awardTotalKills + 1
+		if SI.teamClan[i] == GetHogClan(CurrentHedgehog) then
+			SI.teamCircsKilled[i] = SI.teamCircsKilled[i] + 1
+			SI.awardTotalKills = SI.awardTotalKills + 1
 
 		end
 	end
@@ -505,13 +474,15 @@
 	return newAward
 end
 
+-- Update scoreboard and check victory state.
+-- Returns 2 bools:
+-- 1: true if game over
+-- 2: true if game's not over but we're playing now in tie-breaking phase
+
 function CommentOnScore()
 	local teamStats = {}
 	for i = 0,(TeamsCount-1) do
-		sdScore[i] = teamScore[i]
-		sdKills[i] = teamCircsKilled[i]
-		sdName[i] = teamNameArr[i]
-		table.insert(teamStats, {score = teamScore[i], kills = teamCircsKilled[i], name = teamNameArr[i]})
+		table.insert(teamStats, {score = SI.teamScore[i], kills = SI.teamCircsKilled[i], name = SI.teamNameArr[i]})
 	end
 
 	local scorecomp = function (v1, v2)
@@ -529,7 +500,7 @@
 			local comment = teamStats[i].name .. " |" ..
 			string.format(loc("Score: %d"), teamStats[i].score) .. "|" ..
 			string.format(loc("Kills: %d"), teamStats[i].kills)
-			if i < TeamsCount then	
+			if i < TeamsCount then
 				comment = comment .. "| |"
 			end
 			table.insert(teamComment, comment)
@@ -541,34 +512,54 @@
 		table.insert(teamComment, comment)
 	end
 
+	local roundLimitHit = SI.roundNumber >= SI.roundLimit
+	local tie = teamStats[1].score == teamStats[2].score
+	local lGameOver = roundLimitHit and (not tie)
+
 	local entireC = ""
+
 	for i = TeamsCount,1,-1 do
 		entireC = entireC .. teamComment[i]
 	end
+
 	local statusText, scoreText
-	if roundNumber >= roundLimit then
+	-- Game is over
+	if lGameOver then
 		statusText = loc("Game over!")
 		scoreText = loc("Final team scores:")
-	else
-		AddCaption(string.format(loc("Rounds complete: %d/%d"), roundNumber, roundLimit), capcolDefault, capgrpMessage)
-		return
+	-- Round is over and game is not yet complete
+	elseif not roundLimitHit then
+		AddCaption(string.format(loc("Rounds complete: %d/%d"), SI.roundNumber, SI.roundLimit), capcolDefault, capgrpMessage)
+		return lGameOver, false
+	-- Teams are tied for the lead at the end
+	elseif roundLimitHit and tie then
+		local tieBreakingRound = SI.roundNumber - SI.roundLimit + 1
+		local msg
+		if tieBreakingRound == 1 then
+			msg = loc("Teams are tied! Continue playing rounds until we have a winner!")
+		else
+			msg = string.format(loc("Tie-breaking round %d"), tieBreakingRound)
+		end
+		AddCaption(msg, capcolDefault, capgrpMessage)
+		return lGameOver, true
 	end
+
 	local displayTime
-	if roundNumber >= roundLimit then
+	if lGameOver then
 		displayTime = 20000
 	else
 		displayTime = 1
 	end
 	ShowMission(	loc("Space Invasion"),
 			statusText,
-			string.format(loc("Rounds complete: %d/%d"), roundNumber, roundLimit) .. "| " .. "|" ..
+			string.format(loc("Rounds complete: %d/%d"), SI.roundNumber, SI.roundLimit) .. "| " .. "|" ..
 			scoreText .. " |" ..entireC, 4, displayTime)
 
-	if roundNumber >= roundLimit then
+	if lGameOver then
 		local winnerTeam = teamStats[1].name
-		for i = 0, (numhhs-1) do
-			if GetHogTeamName(hhs[i]) == winnerTeam then
-				SetState(hhs[i], bor(GetState(hhs[i]), gstWinner))
+		for i = 0, (SI.numhhs-1) do
+			if GetHogTeamName(SI.hhs[i]) == winnerTeam then
+				SetState(SI.hhs[i], bor(GetState(SI.hhs[i]), gstWinner))
 			end
 		end
 		AddCaption(string.format(loc("%s wins!"), winnerTeam), capcolDefault, capgrpGameState)
@@ -591,11 +582,21 @@
 --[[ Award some awards (just for fun, its for the stats screen only
 and has no effect on the score or game outcome. ]]
 		local awardsGiven = 0
-	
-		if awardTotalKills >= 30 then
+
+		if SI.roundNumber == SI.roundLimit + 1 then
+			SendStat(siCustomAchievement,
+			loc("The teams were tied, so an additional round has been played to determine the winner."))
+			awardsGiven = awardsGiven + 1
+		elseif SI.roundNumber > SI.roundLimit then
+			SendStat(siCustomAchievement,
+			string.format(loc("The teams were tied, so %d additional rounds have been played to determine the winner."),
+			SI.roundNumber - SI.roundLimit))
+			awardsGiven = awardsGiven + 1
+		end
+		if SI.awardTotalKills >= 30 then
 			awardsGiven = awardsGiven + 1
 			SendStat(siCustomAchievement,
-				string.format(loc("%d invaders have been destroyed in this game."), awardTotalKills))
+				string.format(loc("%d invaders have been destroyed in this game."), SI.awardTotalKills))
 		end
 
 		table.sort(teamStats, killscomp)
@@ -615,73 +616,73 @@
 	                teamStats[1].name, teamStats[1].kills))
 		end
 
-		if awardRoundKills ~= nil then
+		if SI.awardRoundKills ~= nil then
 			awardsGiven = awardsGiven + 1
 			local text
-			if awardRoundKills.value >= 33 then
+			if SI.awardRoundKills.value >= 33 then
 				text = loc("%s (%s) has been invited to join the Planetary Association of the Hedgehogs, it destroyed a staggering %d invaders in just one round!")
-			elseif awardRoundKills.value >= 22 then
-				if awardRoundKills.hogName == "Rambo" then
+			elseif SI.awardRoundKills.value >= 22 then
+				if SI.awardRoundKills.hogName == "Rambo" then
 					text = loc("The hardships of the war turned %s (%s) into a killing machine: %d invaders destroyed in one round!")
 				else
 					text = loc("%s (%s) is Rambo in a hedgehog costume! He destroyed %d invaders in one round.")
 				end
-			elseif awardRoundKills.value >= 11 then
+			elseif SI.awardRoundKills.value >= 11 then
 				text = loc("%s (%s) is addicted to killing: %d invaders destroyed in one round.")
 			else
 				text = loc("%s (%s) destroyed %d invaders in one round.")
 			end
 			SendStat(siCustomAchievement,
 			string.format(text,
-			awardRoundKills.hogName, awardRoundKills.teamName, awardRoundKills.value))
+			SI.awardRoundKills.hogName, SI.awardRoundKills.teamName, SI.awardRoundKills.value))
 		end
-		if awardRoundScore ~= nil then
+		if SI.awardRoundScore ~= nil then
 			awardsGiven = awardsGiven + 1
 			local text
-			if awardRoundScore.value >= 300 then
+			if SI.awardRoundScore.value >= 300 then
 				text = loc("%s (%s) was undoubtedly the very best professional tumbler in this game: %d points in one round!")
-			elseif awardRoundScore.value >= 250 then
+			elseif SI.awardRoundScore.value >= 250 then
 				text = loc("%s (%s) struck like a meteor: %d points in only one round!")
-			elseif awardRoundScore.value >= 200 then
+			elseif SI.awardRoundScore.value >= 200 then
 				text = loc("%s (%s) is good at this: %d points in only one round!")
-			elseif awardRoundScore.value >= 150 then
+			elseif SI.awardRoundScore.value >= 150 then
 				text = loc("%s (%s) tumbles like no other: %d points in one round.")
-			elseif awardRoundScore.value >= 100 then
+			elseif SI.awardRoundScore.value >= 100 then
 				text = loc("%s (%s) is a tumbleweed: %d points in one round.")
 			else
 				text = loc("%s (%s) was the best baby tumbler: %d points in one round.")
 			end
 			SendStat(siCustomAchievement,
 			string.format(text,
-			awardRoundScore.hogName, awardRoundScore.teamName, awardRoundScore.value))
+			SI.awardRoundScore.hogName, SI.awardRoundScore.teamName, SI.awardRoundScore.value))
 		end
-		if awardAccuracy ~= nil then
+		if SI.awardAccuracy ~= nil then
 			awardsGiven = awardsGiven + 1
 			local text
-			if awardAccuracy.value >= 20 then
+			if SI.awardAccuracy.value >= 20 then
 				text = loc("The Society of Perfectionists greets %s (%s): No misses and %d hits in its best round.")
-			elseif awardAccuracy.value >= 10 then
+			elseif SI.awardAccuracy.value >= 10 then
 				text = loc("%s (%s) is a hardened hunter: No misses and %d hits in its best round!")
 			else
 				text = loc("%s (%s) shot %d invaders and never missed in the best round!")
 			end
 			SendStat(siCustomAchievement,
 			string.format(text,
-			awardAccuracy.hogName, awardAccuracy.teamName, awardAccuracy.value))
+			SI.awardAccuracy.hogName, SI.awardAccuracy.teamName, SI.awardAccuracy.value))
 		end
-		if awardCombo ~= nil then
+		if SI.awardCombo ~= nil then
 			awardsGiven = awardsGiven + 1
 			local text
-			if awardCombo.value >= 11 then
+			if SI.awardCombo.value >= 11 then
 				text = loc("%s (%s) was lightning-fast! Longest combo of %d, absolutely insane!")
-			elseif awardCombo.value >= 8 then
+			elseif SI.awardCombo.value >= 8 then
 				text = loc("%s (%s) gave short shrift to the invaders: Longest combo of %d!")
 			else
 				text = loc("%s (%s) was on fire: Longest combo of %d.")
 			end
 			SendStat(siCustomAchievement,
 			string.format(text,
-			awardCombo.hogName, awardCombo.teamName, awardCombo.value))
+			SI.awardCombo.hogName, SI.awardCombo.teamName, SI.awardCombo.value))
 		end
 		if awardsGiven == 0 then
 			local text
@@ -691,47 +692,108 @@
 			elseif r == 3 then text = loc("Nothing of interest has happened.")
 			elseif r == 4 then text = loc("There are no snarky comments this time.")
 			end
-		
+
 			SendStat(siCustomAchievement, text)
 		end
 	end
+
+	return lGameOver, false
 end
 
 function onNewRound()
-	roundNumber = roundNumber + 1
-
-	CommentOnScore()
-
-	-- end game if its at round limit
-	if roundNumber >= roundLimit then
-
+	SI.lastRound = TotalRounds
+	SI.roundNumber = SI.roundNumber + 1
+
+	local lGameOver, lTied = CommentOnScore()
+	local bestScore = 0
+	local bestClan = -1
+
+	-- Game has been determined to be over, so end it
+	if lGameOver then
+
+		-- Get winning score
 		for i = 0, (TeamsCount-1) do
-			if teamScore[i] > bestScore then
-				bestScore = teamScore[i]
-				bestClan = teamClan[i]
+			if SI.teamScore[i] > bestScore then
+				bestScore = SI.teamScore[i]
+				bestClan = SI.teamClan[i]
 			end
 		end
 
 		-- Kill off all the losers
-		for i = 0, (numhhs-1) do
-			if GetHogClan(hhs[i]) ~= bestClan then
-				SetEffect(hhs[i], heResurrectable, 0)
-				SetHealth(hhs[i],0)
+		for i = 0, (SI.numhhs-1) do
+			if GetHogClan(SI.hhs[i]) ~= bestClan then
+				SetEffect(SI.hhs[i], heResurrectable, 0)
+				SetHealth(SI.hhs[i],0)
+				-- hilarious loser face
+				SetState(SI.hhs[i], bor(GetState(SI.hhs[i]), gstLoser))
 			end
 		end
 
 		-- Game over
-		gameOver = true
+		SI.gameOver = true
 		EndTurn(true)
-		TimeLeft = 0
+		SI.TimeLeft = 0
 		SendStat(siGraphTitle, loc("Score graph"))
+
+	-- Round limit passed and teams are tied!
+	elseif lTied then
+		-- Enter (or continue) tie-breaking phase...
+
+		-- Rules in case of a tie:
+		-- 1) All teams that are not tied for the lead are killed (they can't play anymore, but they will keep their score and be ranked normally)
+		-- 2) Another round is played with the remaining teams
+		-- 3) After this round, scores are checked again to determine a winner. If there's a tie again, this procedure is repeated
+
+		-- Get leading teams
+		for i = 0, (TeamsCount-1) do
+			if SI.teamScore[i] > bestScore then
+				bestScore = SI.teamScore[i]
+			end
+		end
+
+		local tiedForTheLead = {}
+		for i = 0, (TeamsCount-1) do
+			if SI.teamScore[i] == bestScore then
+				tiedForTheLead[i] = true
+			end
+		end
+
+		local wasCurrent = false
+		-- Kill teams not in the top
+		for i = 0, (SI.numhhs-1) do
+			local hog = SI.hhs[i]
+			if GetHealth(hog) then -- check if hog is still alive
+				local team = SI.teamNameArrReverse[GetHogTeamName(hog)]
+				if team and tiedForTheLead[team] ~= true then
+					-- hilarious loser face
+					SetState(hog, bor(GetState(hog), gstLoser))
+					-- die!
+					SetEffect(hog, heResurrectable, 0)
+					SetHealth(hog, 0)
+					-- Note the death might not trigger immediately since we
+					-- zero the health at the beginning of a turn rather than
+					-- the end of one.
+					-- It's just a minor visual thing, not a big deal.
+					if hog == CurrentHedgehog then
+						wasCurrent = true
+					end
+				end
+			end
+		end
+
+		-- if current hedgehog was among the loser, end the turn
+		if wasCurrent then
+			EndTurn(true)
+		end
+
+		-- From that point on, the game just continues normally ...
 	end
 end
 
 -- gaudy racer
 function CheckForNewRound()
 
-	if GetHogClan(CurrentHedgehog) == firstClan then
+	if TotalRounds > 0 and TotalRounds > SI.lastRound then
 		onNewRound()
 	end
 
@@ -759,14 +821,14 @@
 	local lfs
 	if GetGearType(gear) == gtShell then
 		lfs = 50	-- roughly 5 seconds
-		shellID = shellID + 1
-		setGearValue(gear,"ID",shellID)
+		SI.shellID = SI.shellID + 1
+		setGearValue(gear,"ID",SI.shellID)
 	elseif GetGearType(gear) == gtBall then
 		lfs = 5 --70	-- 7s
 	elseif GetGearType(gear) == gtExplosives then
 		lfs = 15	-- 1.5s
-		explosivesID = explosivesID + 1
-		setGearValue(gear,"ID",explosivesID)
+		SI.explosivesID = SI.explosivesID + 1
+		setGearValue(gear,"ID",SI.explosivesID)
 		setGearValue(gear,"XP", GetX(gear))
 		setGearValue(gear,"YP", GetY(gear))
 	elseif GetGearType(gear) == gtFlame then
@@ -823,22 +885,22 @@
 
 function ChangeWeapon()
 
-	wepIndex = wepIndex + 1
-	if wepIndex == wepCount then
-		wepIndex = 0
+	SI.wepIndex = SI.wepIndex + 1
+	if SI.wepIndex == SI.wepCount then
+		SI.wepIndex = 0
 	end
-	AddCaption(wep[wepIndex], GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
+	AddCaption(SI.wep[SI.wepIndex], GetClanColor(GetHogClan(CurrentHedgehog)), capgrpAmmoinfo)
 end
 
 -- derp tumbler
 function onPrecise()
 
-	if (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) and (wepAmmo[wepIndex] > 0) then
-
-		wepAmmo[wepIndex] = wepAmmo[wepIndex] - 1
-
-		if wep[wepIndex] == loc("Barrel Launcher") then
-			shotsFired = shotsFired +1
+	if (CurrentHedgehog ~= nil) and (SI.stopMovement == false) and (SI.tumbleStarted == true) and (SI.wepAmmo[SI.wepIndex] > 0) then
+
+		SI.wepAmmo[SI.wepIndex] = SI.wepAmmo[SI.wepIndex] - 1
+
+		if SI.wep[SI.wepIndex] == loc("Barrel Launcher") then
+			SI.shotsFired = SI.shotsFired +1
 
 			local morte = AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtExplosives, 0, 0, 0, 1)
 			CopyPV(CurrentHedgehog, morte)
@@ -847,67 +909,67 @@
 			y = y*2
 			SetGearVelocity(morte, x, y)
 
-			if wepAmmo[wepIndex] == 0 then
+			if SI.wepAmmo[SI.wepIndex] == 0 then
 				PlaySound(sndSuddenDeath)
-				AddCaption(loc("Ammo depleted!"),colorMsgDepleted,capgrpAmmostate)
+				AddCaption(loc("Ammo depleted!"),SI.colorMsgDepleted,capgrpAmmostate)
 			else
 				PlaySound(sndThrowRelease)
 			end
-			DrawTag(TAG_BARRELS)
-
-		elseif wep[wepIndex] == loc("Mine Deployer") then
+			DrawTag(SI.TAG_BARRELS)
+
+		elseif SI.wep[SI.wepIndex] == loc("Mine Deployer") then
 			local morte = AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtAirBomb, 0, 0, 0, 0)
 			SetTimer(morte, 1000)
-			DrawTag(TAG_BARRELS)
+			DrawTag(SI.TAG_BARRELS)
 		end
 
-	elseif (wepAmmo[wepIndex] == 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then
+	elseif (SI.wepAmmo[SI.wepIndex] == 0) and (CurrentHedgehog ~= nil) and (SI.stopMovement == false) and (SI.tumbleStarted == true) then
 		PlaySound(sndDenied)
-		AddCaption(loc("Ammo depleted!"),colorMsgDepleted,capgrpAmmostate)
+		AddCaption(loc("Ammo depleted!"),SI.colorMsgDepleted,capgrpAmmostate)
 	end
 
-	preciseOn = true
+	SI.preciseOn = true
 
 end
 
 function onPreciseUp()
-	preciseOn = false
+	SI.preciseOn = false
 end
 
 function onLJump()
 
-	if (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then
-		shieldMiser = false
-		if shieldHealth == 80 then
-			AddCaption(loc("Shield depleted"),colorMsgDepleted,capgrpAmmostate)
+	if (CurrentHedgehog ~= nil) and (SI.stopMovement == false) and (SI.tumbleStarted == true) then
+		SI.shieldMiser = false
+		if SI.shieldHealth == 80 then
+			AddCaption(loc("Shield depleted"),SI.colorMsgDepleted,capgrpAmmostate)
 			PlaySound(sndDenied)
-		elseif (beam == false) and (shieldHealth > 80) then
-			beam = true
-			SetVisualGearValues(pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), 40, 255, 1, 10, 0, 300, 1, colorShield)
-			AddCaption( string.format(loc("Shield ON: %d power remaining"), shieldHealth - 80), colorShield, capgrpAmmostate)
+		elseif (SI.beam == false) and (SI.shieldHealth > 80) then
+			SI.beam = true
+			SetVisualGearValues(SI.pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), 40, 255, 1, 10, 0, 300, 1, SI.colorShield)
+			AddCaption( string.format(loc("Shield ON: %d power remaining"), SI.shieldHealth - 80), SI.colorShield, capgrpAmmostate)
 			PlaySound(sndInvulnerable)
 		else
-			beam = false
-			SetVisualGearValues(pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), 0, 0, 1, 10, 0, 0, 0, colorShield)
-			AddCaption( string.format(loc("Shield OFF: %d power remaining"), shieldHealth - 80), colorShield, capgrpAmmostate)
+			SI.beam = false
+			SetVisualGearValues(SI.pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), 0, 0, 1, 10, 0, 0, 0, SI.colorShield)
+			AddCaption( string.format(loc("Shield OFF: %d power remaining"), SI.shieldHealth - 80), SI.colorShield, capgrpAmmostate)
 		end
 	end
 end
 
 function onHJump()
 
-	if (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) and
-	(rAlpha == 255) then
-		if radShotsLeft > 0 then
-			rPingTimer = 0
-			rAlpha = 0
-			radShotsLeft = radShotsLeft -1
-			AddCaption(string.format(loc("Pings left: %d"), radShotsLeft),GetClanColor(GetHogClan(CurrentHedgehog)),capgrpAmmostate)
+	if (CurrentHedgehog ~= nil) and (SI.stopMovement == false) and (SI.tumbleStarted == true) and
+	(SI.rAlpha == 255) then
+		if SI.radShotsLeft > 0 then
+			SI.rPingTimer = 0
+			SI.rAlpha = 0
+			SI.radShotsLeft = SI.radShotsLeft -1
+			AddCaption(string.format(loc("Pings left: %d"), SI.radShotsLeft),GetClanColor(GetHogClan(CurrentHedgehog)),capgrpAmmostate)
 			-- Play sonar sound
 			PlaySound(sndJetpackLaunch)
 
 		else
-			AddCaption(loc("No radar pings left!"),colorMsgDepleted,capgrpAmmostate)
+			AddCaption(loc("No radar pings left!"),SI.colorMsgDepleted,capgrpAmmostate)
 			PlaySound(sndDenied)
 		end
 	end
@@ -919,35 +981,35 @@
 -----------------
 
 function onLeft()
-	leftOn = true
+	SI.leftOn = true
 end
 
 function onRight()
-	rightOn = true
+	SI.rightOn = true
 end
 
 function onUp()
-	upOn = true
+	SI.upOn = true
 end
 
 function onDown()
-	downOn = true
+	SI.downOn = true
 end
 
 function onDownUp()
-	downOn = false
+	SI.downOn = false
 end
 
 function onUpUp()
-	upOn = false
+	SI.upOn = false
 end
 
 function onLeftUp()
-	leftOn = false
+	SI.leftOn = false
 end
 
 function onRightUp()
-	rightOn = false
+	SI.rightOn = false
 end
 
 --------------------------
@@ -957,31 +1019,31 @@
 function onParameters()
 	parseParams()
 	if params["rounds"] ~= nil then
-		roundLimit = math.floor(tonumber(params["rounds"]))
+		SI.roundLimit = math.floor(tonumber(params["rounds"]))
 	end
 	if params["barrels"] ~= nil then
-		startBarrels = math.floor(tonumber(params["barrels"]))
+		SI.startBarrels = math.floor(tonumber(params["barrels"]))
 	end
 	if params["pings"] ~= nil then
-		startRadShots = math.floor(tonumber(params["pings"]))
+		SI.startRadShots = math.floor(tonumber(params["pings"]))
 	end
 	if params["shield"] ~= nil then
-		startShield = math.floor(tonumber(params["shield"]))
+		SI.startShield = math.floor(tonumber(params["shield"]))
 	end
 
 	if params["barrelbonus"] ~= nil then
-		barrelBonus = math.floor(tonumber(params["barrelbonus"]))
+		SI.barrelBonus = math.floor(tonumber(params["barrelbonus"]))
 	end
 	if params["shieldbonus"] ~= nil then
-		shieldBonus = math.floor(tonumber(params["shieldbonus"]))
+		SI.shieldBonus = math.floor(tonumber(params["shieldbonus"]))
 	end
 	if params["timebonus"] ~= nil then
-		timeBonus = math.floor(tonumber(params["timebonus"]))
+		SI.timeBonus = math.floor(tonumber(params["timebonus"]))
 	end
 	if params["forcetheme"] == "false" then
-		forceTheme = false
+		SI.forceTheme = false
 	else
-		forceTheme = true
+		SI.forceTheme = true
 	end
 end
 
@@ -1003,7 +1065,7 @@
 
 	GameFlags = band(GameFlags, allowedFlags)
 
-	if forceTheme then
+	if SI.forceTheme then
 		Theme = "EarthRise"
 	end
 	CaseFreq = 0
@@ -1014,25 +1076,27 @@
 	HealthDecrease = 0
 	WorldEdge = weNone
 
-	local tags = { TAG_TIME, TAG_BARRELS, TAG_SHIELD, TAG_ROUND_SCORE }
+	local tags = { SI.TAG_TIME, SI.TAG_BARRELS, SI.TAG_SHIELD, SI.TAG_ROUND_SCORE }
 	for t=1, #tags do
-		vTag[tags[t]] = AddVisualGear(0, 0, vgtHealthTag, 0, false)
+		SI.vTag[tags[t]] = AddVisualGear(0, 0, vgtHealthTag, 0, false)
 		HideTag(tags[t])
 	end
 
-	wep[0] = loc("Barrel Launcher")
-	wep[1] = loc("Mine Deployer")
-	wep[2] = loc("Flamer")
-
-	wepCount = 3
+	SI.wep[0] = loc("Barrel Launcher")
+	SI.wep[1] = loc("Mine Deployer")
+	SI.wep[2] = loc("Flamer")
+
+	SI.wepCount = 3
 
 end
 
 function onGameStart()
-	SendGameResultOff()
-	SendRankingStatsOff()
-	SendAchievementsStatsOff()
-	SendHealthStatsOff()
+	if ClansCount >= 2 then
+		SendGameResultOff()
+		SendRankingStatsOff()
+		SendAchievementsStatsOff()
+		SendHealthStatsOff()
+	end
 
 	ShowMission	(
 				loc("SPACE INVASION"),
@@ -1047,7 +1111,7 @@
 				loc("Use the shield to protect yourself from bazookas.") .. "|" ..
 				" " .. "|" ..
 
-				string.format(loc("Round Limit: %d"), roundLimit) .. "|" ..
+				string.format(loc("Round Limit: %d"), SI.roundLimit) .. "|" ..
 				" " .. "|" ..
 
 				loc("Movement: [Up], [Down], [Left], [Right]") .. "|" ..
@@ -1060,20 +1124,19 @@
 
 	CreateMeSomeCircles()
 	RebuildTeamInfo() -- control
-	lastRound = TotalRounds
 
 end
 
 function onScreenResize()
 
 	-- redraw Tags so that their screen locations are updated
-	if (gameBegun == true) then
-		DrawTag(TAG_ROUND_SCORE)
-		if (stopMovement == false) then
-			DrawTag(TAG_BARRELS)
-			DrawTag(TAG_SHIELD)
-			if (tumbleStarted == true) then
-				DrawTag(TAG_TIME)
+	if (SI.gameBegun == true) then
+		DrawTag(SI.TAG_ROUND_SCORE)
+		if (SI.stopMovement == false) then
+			DrawTag(SI.TAG_BARRELS)
+			DrawTag(SI.TAG_SHIELD)
+			if (SI.tumbleStarted == true) then
+				DrawTag(SI.TAG_TIME)
 			end
 		end
 	end
@@ -1082,31 +1145,31 @@
 
 function onNewTurn()
 
-	radShotsLeft = startRadShots
-	stopMovement = false
-	tumbleStarted = false
-	boosterOn = false
-	beam = false
-	shieldHealth = startShield + 80 -- 50 = 5 secs, roughly
-
-	RK = 0
-	GK = 0
-	BK = 0
-	OK = 0
-	SK = 0
-	roundKills = 0
-	roundScore = 0
-	shieldMiser = true
-	fierceComp = false
-	shotsFired = 0
-	shotsHit = 0
-	sniperHits = 0
-	pointBlankHits = 0
-	chainLength = 0
-	chainCounter = 0
-
-	tauntClanShots = 0
-	tauntTimer = -1
+	SI.radShotsLeft = SI.startRadShots
+	SI.stopMovement = false
+	SI.tumbleStarted = false
+	SI.boosterOn = false
+	SI.beam = false
+	SI.shieldHealth = SI.startShield + 80 -- 50 = 5 secs, roughly
+
+	SI.RK = 0
+	SI.GK = 0
+	SI.BK = 0
+	SI.OK = 0
+	SI.SK = 0
+	SI.roundKills = 0
+	SI.roundScore = 0
+	SI.shieldMiser = true
+	SI.fierceComp = false
+	SI.shotsFired = 0
+	SI.shotsHit = 0
+	SI.sniperHits = 0
+	SI.pointBlankHits = 0
+	SI.chainLength = 0
+	SI.chainCounter = 0
+
+	SI.tauntClanShots = 0
+	SI.tauntTimer = -1
 
 	-------------------------
 	-- gaudy racer
@@ -1114,15 +1177,14 @@
 	CheckForNewRound()
 
 	-- Handle Starting Stage of Game
-	if (gameOver == false) and (gameBegun == false) then
-		gameBegun = true
-		roundNumber = 0 -- 0
-		firstClan = GetHogClan(CurrentHedgehog)
+	if (SI.gameOver == false) and (SI.gameBegun == false) then
+		SI.gameBegun = true
+		SI.roundNumber = 0 -- 0
 	end
 
-	if gameOver == true then
-		stopMovement = true
-		tumbleStarted = false
+	if SI.gameOver == true then
+		SI.stopMovement = true
+		SI.tumbleStarted = false
 		SetMyCircles(false)
 	end
 
@@ -1131,22 +1193,22 @@
 	-- tumbler
 	----
 
-	wepAmmo[0] = startBarrels
-	wepAmmo[1] = startRadShots
-	wepAmmo[2] = 5000
-	wepIndex = 2
+	SI.wepAmmo[0] = SI.startBarrels
+	SI.wepAmmo[1] = SI.startRadShots
+	SI.wepAmmo[2] = 5000
+	SI.wepIndex = 2
 	ChangeWeapon()
 
 
-	HideTag(TAG_TIME)
-	if not gameOver then
-		DrawTag(TAG_BARRELS)
-		DrawTag(TAG_SHIELD)
-		DrawTag(TAG_ROUND_SCORE)
+	HideTag(SI.TAG_TIME)
+	if not SI.gameOver then
+		DrawTag(SI.TAG_BARRELS)
+		DrawTag(SI.TAG_SHIELD)
+		DrawTag(SI.TAG_ROUND_SCORE)
 	else
-		HideTag(TAG_BARRELS)
-		HideTag(TAG_SHIELD)
-		HideTag(TAG_ROUND_SCORE)
+		HideTag(SI.TAG_BARRELS)
+		HideTag(SI.TAG_SHIELD)
+		HideTag(SI.TAG_ROUND_SCORE)
 	end
 
 end
@@ -1156,7 +1218,7 @@
 	HandleLifeSpan(gear)
 	DeleteFarFlungBarrel(gear)
 
-	if circlesAreGo == true then
+	if SI.circlesAreGo == true then
 		CheckVarious(gear)
 		ProjectileTrack(gear)
 	end
@@ -1167,9 +1229,9 @@
 	if gear == CurrentHedgehog then
 
 		for i = 0,(TeamsCount-1) do
-			if teamClan[i] == GetHogClan(CurrentHedgehog) and (teamSurfer[i] == false) then
-				teamSurfer[i] = true
-				AddCaption(loc("Surfer! +15 points!"),colorMsgBonus,capgrpMessage)
+			if SI.teamClan[i] == GetHogClan(CurrentHedgehog) and (SI.teamSurfer[i] == false) then
+				SI.teamSurfer[i] = true
+				AddCaption(loc("Surfer! +15 points!"),SI.colorMsgBonus,capgrpMessage)
 				AwardPoints(15)
 			end
 		end
@@ -1179,40 +1241,38 @@
 
 function onGameTick()
 
-	luaGameTicks = luaGameTicks + 1
-
 	HandleCircles()
 
-	timer100 = timer100 + 1
-	if timer100 >= 100 then
-		timer100 = 0
-
-		if beam == true then
-			shieldHealth = shieldHealth - 1
-			if shieldHealth < 80 then
-				shieldHealth = 80
-				beam = false
-				AddCaption(loc("Shield depleted"),colorMsgDepleted,capgrpAmmostate)
+	SI.timer100 = SI.timer100 + 1
+	if SI.timer100 >= 100 then
+		SI.timer100 = 0
+
+		if SI.beam == true then
+			SI.shieldHealth = SI.shieldHealth - 1
+			if SI.shieldHealth < 80 then
+				SI.shieldHealth = 80
+				SI.beam = false
+				AddCaption(loc("Shield depleted"),SI.colorMsgDepleted,capgrpAmmostate)
 				PlaySound(sndMineTick)
 				PlaySound(sndSwitchHog)
 			end
 		end
 
-		if tauntTimer > 0 then
-			tauntTimer = tauntTimer - 100
-			if tauntTimer <= 0 and tumbleStarted and not stopMovement then
-				PlaySound(tauntSound, tauntGear)
+		if SI.tauntTimer > 0 then
+			SI.tauntTimer = SI.tauntTimer - 100
+			if SI.tauntTimer <= 0 and SI.tumbleStarted and not SI.stopMovement then
+				PlaySound(SI.tauntSound, SI.tauntGear)
 			end
 		end
 
 		runOnGears(ThingsToBeRunOnGears)
 
-		if circlesAreGo == true then
+		if SI.circlesAreGo == true then
 			CheckDistances()
 		end
 
 		-- white smoke trail as player falls from the sky
-		if (TimeLeft <= 0) and (stopMovement == true) and (CurrentHedgehog ~= nil) then
+		if (SI.TimeLeft <= 0) and (SI.stopMovement == true) and (CurrentHedgehog ~= nil) then
 			local j,k = GetGearVelocity(CurrentHedgehog)
 			if (j ~= 0) and (k ~= 0) then
 				AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmoke, 0, false)
@@ -1223,40 +1283,40 @@
 
 
 	-- start the player tumbling with a boom once their turn has actually begun
-	if (tumbleStarted == false) and (gameOver == false) then
+	if (SI.tumbleStarted == false) and (SI.gameOver == false) then
 		if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) then
-			tumbleStarted = true
-			TimeLeft = (TurnTime/1000)
-			fadeAlpha = 0
-			rAlpha = 255
+			SI.tumbleStarted = true
+			SI.TimeLeft = (TurnTime/1000)
+			SI.fadeAlpha = 0
+			SI.rAlpha = 255
 			AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
-			DrawTag(TAG_TIME)
-			DrawTag(TAG_BARRELS)
-			DrawTag(TAG_SHIELD)
-			DrawTag(TAG_ROUND_SCORE)
+			DrawTag(SI.TAG_TIME)
+			DrawTag(SI.TAG_BARRELS)
+			DrawTag(SI.TAG_SHIELD)
+			DrawTag(SI.TAG_ROUND_SCORE)
 			SetMyCircles(true)
 		end
 	end
 
-	if (CurrentHedgehog ~= nil) and (tumbleStarted == true) then
+	if (CurrentHedgehog ~= nil) and (SI.tumbleStarted == true) then
 
 		-- Calculate and display turn time
-		TimeLeftCounter = TimeLeftCounter + 1
-		if TimeLeftCounter == 1000 then
-			TimeLeftCounter = 0
-			TimeLeft = TimeLeft - 1
-
-			if TimeLeft >= 0 then
-				DrawTag(TAG_TIME)
+		SI.TimeLeftCounter = SI.TimeLeftCounter + 1
+		if SI.TimeLeftCounter == 1000 then
+			SI.TimeLeftCounter = 0
+			SI.TimeLeft = SI.TimeLeft - 1
+
+			if SI.TimeLeft >= 0 then
+				DrawTag(SI.TAG_TIME)
 			end
 
 		end
 
-		if (TimeLeftCounter % 1000) == 0 then
-			if TimeLeft == 5 then
+		if (SI.TimeLeftCounter % 1000) == 0 then
+			if SI.TimeLeft == 5 then
 				PlaySound(sndHurry, CurrentHedgehog)
-			elseif TimeLeft <= 4 and TimeLeft >= 1 then
-				PlaySound(_G["sndCountdown"..TimeLeft])
+			elseif SI.TimeLeft <= 4 and SI.TimeLeft >= 1 then
+				PlaySound(_G["sndCountdown"..SI.TimeLeft])
 			end
 		end
 
@@ -1265,65 +1325,65 @@
 		-------------------------------
 		-- checks in FloatyThings
 		if PlayerIsFine() == false then
-			TimeLeft = 0
+			SI.TimeLeft = 0
 		end
 
-		if (TimeLeft == 0) then
+		if (SI.TimeLeft == 0) then
 			if PlayerIsFine() then
 				AddCaption(loc("Time's up!"), capcolDefault, capgrpGameState)
 			end
-			if (stopMovement == false) then	--time to stop the player
-				stopMovement = true
-				boosterOn = false
-				beam = false
-				upOn = false
-				downOn = false
-				leftOn = false
-				rightOn = false
+			if (SI.stopMovement == false) then	--time to stop the player
+				SI.stopMovement = true
+				SI.boosterOn = false
+				SI.beam = false
+				SI.upOn = false
+				SI.downOn = false
+				SI.leftOn = false
+				SI.rightOn = false
 				SetMyCircles(false)
-				rAlpha = 255
+				SI.rAlpha = 255
 				FailGraphics()
 
-				if shieldMiser == true then
-
-					local p = (roundKills*3.5) - ((roundKills*3.5)%1) + 2
-
-					AddCaption(string.format(loc("Shield Miser! +%d points!"), p), colorMsgBonus, capgrpAmmoinfo)
+				if SI.shieldMiser == true then
+
+					local p = (SI.roundKills*3.5) - ((SI.roundKills*3.5)%1) + 2
+
+					AddCaption(string.format(loc("Shield Miser! +%d points!"), p), SI.colorMsgBonus, capgrpAmmoinfo)
 					AwardPoints(p)
 				end
 
-				local accuracy = (shotsHit / shotsFired) * 100
-				if (accuracy >= 80) and (shotsFired > 4) then
-					AddCaption(loc("Accuracy Bonus! +15 points"),colorMsgBonus,capgrpAmmostate)
+				local accuracy = (SI.shotsHit / SI.shotsFired) * 100
+				if (accuracy >= 80) and (SI.shotsFired > 4) then
+					AddCaption(loc("Accuracy Bonus! +15 points"),SI.colorMsgBonus,capgrpAmmostate)
 					AwardPoints(15)
 
 
 					-- special award for no misses
 					local award = false
-					if awardAccuracy == nil then
-						if (shotsHit >= shotsFired) then
+					if SI.awardAccuracy == nil then
+						if (SI.shotsHit >= SI.shotsFired) then
 							award = true
 						end
-					elseif (shotsHit == shotsFired) and shotsHit > awardAccuracy.value then
+					elseif (SI.shotsHit == SI.shotsFired) and SI.shotsHit > SI.awardAccuracy.value then
 						award = true
 					end
 					if award then
-						awardAccuracy = {
+						SI.awardAccuracy = {
 							hogName = GetHogName(CurrentHedgehog),
 							teamName = GetHogTeamName(CurrentHedgehog),
-							value = shotsHit, 
+							value = SI.shotsHit, 
 						}
 					end
-		
+
 				end
 
 				-- other awards
-				awardRoundScore = UpdateSimpleAward(awardRoundScore, roundScore, 50)
-				awardRoundKills = UpdateSimpleAward(awardRoundKills, roundKills, 5)
-
-				HideTag(TAG_TIME)
-				HideTag(TAG_BARRELS)
-				HideTag(TAG_SHIELD)
+				SI.awardRoundScore = UpdateSimpleAward(SI.awardRoundScore, SI.roundScore, 50)
+				SI.awardRoundKills = UpdateSimpleAward(SI.awardRoundKills, SI.roundKills, 5)
+
+				HideTag(SI.TAG_TIME)
+				HideTag(SI.TAG_BARRELS)
+				HideTag(SI.TAG_SHIELD)
 
 			end
 		else -- remove this if you want tumbler to fall slowly on death
@@ -1331,23 +1391,23 @@
 		-- Player is still in luck
 		-------------------------------
 
-			if chainCounter > 0 then
-				chainCounter = chainCounter -1
-				if chainCounter == 0 then
-					chainLength = 0
+			if SI.chainCounter > 0 then
+				SI.chainCounter = SI.chainCounter -1
+				if SI.chainCounter == 0 then
+					SI.chainLength = 0
 				end
 			end
 
 			-- handle movement based on IO
-			moveTimer = moveTimer + 1
-			if moveTimer == 100 then -- 100
-				moveTimer = 0
+			SI.moveTimer = SI.moveTimer + 1
+			if SI.moveTimer == 100 then -- 100
+				SI.moveTimer = 0
 
 				---------------
 				-- new trail code
 				---------------
 				-- the trail lets you know you have 5s left to pilot, akin to birdy feathers
-				if (TimeLeft <= 5) and (TimeLeft > 0) then							--vgtSmoke
+				if (SI.TimeLeft <= 5) and (SI.TimeLeft > 0) then							--vgtSmoke
 					local tempE = AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmoke, 0, false)
 					SetVisualGearValues(tempE, nil, nil, nil, nil, nil, nil, nil, nil, nil, GetClanColor(GetHogClan(CurrentHedgehog)) )
 				end
@@ -1357,14 +1417,14 @@
 				local dx, dy = GetGearVelocity(CurrentHedgehog)
 
 				local dxlimit, dylimit
-				if boosterOn == true then
+				if SI.boosterOn == true then
 					local tempE = AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtDust, 0, false)
 					SetVisualGearValues(tempE, nil, nil, nil, nil, nil, nil, nil, 1, nil, GetClanColor(GetHogClan(CurrentHedgehog)) )
-					dxlimit = 0.8*fMod
-					dylimit = 0.8*fMod
+					dxlimit = 0.8*SI.fMod
+					dylimit = 0.8*SI.fMod
 				else
-					dxlimit = 0.4*fMod
-					dylimit = 0.4*fMod
+					dxlimit = 0.4*SI.fMod
+					dylimit = 0.4*SI.fMod
 				end
 
 				if dx > dxlimit then
@@ -1381,18 +1441,18 @@
 				end
 
 
-				if leftOn == true then
-					dx = dx - 0.1*fMod
+				if SI.leftOn == true then
+					dx = dx - 0.1*SI.fMod
 				end
-				if rightOn == true then
-					dx = dx + 0.1*fMod
+				if SI.rightOn == true then
+					dx = dx + 0.1*SI.fMod
 				end
 
-				if upOn == true then
-					dy = dy - 0.1*fMod
+				if SI.upOn == true then
+					dy = dy - 0.1*SI.fMod
 				end
-				if downOn == true then
-					dy = dy + 0.1*fMod
+				if SI.downOn == true then
+					dy = dy + 0.1*SI.fMod
 				end
 
 				SetGearVelocity(CurrentHedgehog, dx, dy)
@@ -1409,29 +1469,29 @@
 function onGearDamage(gear, damage)
 	if GetGearType(gear) == gtHedgehog and damage >= 60 then
 		if GetHogClan(gear) ~= GetHogClan(CurrentHedgehog) then
-			if (fierceComp == false) then
-				fierceComp = true
-				AddCaption(loc("Fierce Competition! +8 points!"),colorMsgBonus,capgrpMessage)
+			if (SI.fierceComp == false) then
+				SI.fierceComp = true
+				AddCaption(loc("Fierce Competition! +8 points!"),SI.colorMsgBonus,capgrpMessage)
 				AwardPoints(8)
 			end
 
-			tauntTimer = 500
-			tauntGear = gear
+			SI.tauntTimer = 500
+			SI.tauntGear = gear
 			local r = math.random(1, 2)
 			if r == 1 then
-				tauntSound = sndIllGetYou
+				SI.tauntSound = sndIllGetYou
 			else
-				tauntSound = sndJustYouWait
+				SI.tauntSound = sndJustYouWait
 			end
 		elseif gear ~= CurrentHedgehog then
-			tauntTimer = 500
-			tauntGear = gear
-			if tauntClanShots == 0 then
-				tauntSound = sndSameTeam
+			SI.tauntTimer = 500
+			SI.tauntGear = gear
+			if SI.tauntClanShots == 0 then
+				SI.tauntSound = sndSameTeam
 			else
-				tauntSound = sndTraitor
+				SI.tauntSound = sndTraitor
 			end
-			tauntClanShots = tauntClanShots + 1
+			SI.tauntClanShots = SI.tauntClanShots + 1
 		end
 	end
 end
@@ -1440,8 +1500,8 @@
 
 	-- did I fall into the water? well, that was a stupid thing to do
 	if gear == CurrentHedgehog then
-		TimeLeft = 0
-		playerIsFine = false
+		SI.TimeLeft = 0
+		SI.playerIsFine = false
 	end
 
 end
@@ -1458,8 +1518,8 @@
 
 		-----------
 		-- control
-		hhs[numhhs] = gear
-		numhhs = numhhs + 1
+		SI.hhs[SI.numhhs] = gear
+		SI.numhhs = SI.numhhs + 1
 		-----------
 	end
 
@@ -1495,7 +1555,7 @@
 
 	-- work out the distance to the target
 	local g1X, g1Y = GetGearPosition(CurrentHedgehog)
-	local g2X, g2Y = vCircX[cUID], vCircY[cUID]
+	local g2X, g2Y = SI.vCircX[cUID], SI.vCircY[cUID]
 	local q = g1X - g2X
 	local w = g1Y - g2Y
 	local r = math.sqrt( (q*q) + (w*w) )	--alternate
@@ -1516,25 +1576,25 @@
 	-- displace xy based on where this thing actually is
 
 	if r < NR then
-		rCircX[cUID] = g2X
+		SI.rCircX[cUID] = g2X
 	elseif q > 0 then
-		rCircX[cUID] = g1X - NX
+		SI.rCircX[cUID] = g1X - NX
 	else
-		rCircX[cUID] = g1X + NX
+		SI.rCircX[cUID] = g1X + NX
 	end
 
 	if r < NR then
-		rCircY[cUID] = g2Y
+		SI.rCircY[cUID] = g2Y
 	elseif w > 0 then
-		rCircY[cUID] = g1Y - NY
+		SI.rCircY[cUID] = g1Y - NY
 	else
-		rCircY[cUID] = g1Y + NY
+		SI.rCircY[cUID] = g1Y + NY
 	end
 
 end
 
 function PlayerIsFine()
-	return (playerIsFine)
+	return (SI.playerIsFine)
 end
 
 function GetDistFromXYtoXY(a, b, c, d)
@@ -1567,46 +1627,46 @@
 function CreateMeSomeCircles()
 
 	for i = 0, 7 do
-		vCCount = vCCount +1
-		vCirc[i] = AddVisualGear(0,0,vgtCircle,0,true)
-
-		rCirc[i] = AddVisualGear(0,0,vgtCircle,0,true)
-		rCircX[i] = 0
-		rCircY[i] = 0
-
-		vCircDX[i] = 0
-		vCircDY[i] = 0
-
-		vType[i] = "generic"
-		vCounter[i] = 0
-		vCounterLim[i] = 3000
-		vCircScore[i] = 0
-		vCircHealth[i] = 1
-
-		vCircMinA[i] = 80
-		vCircMaxA[i] = 255
-		vCircType[i] = 1
-		vCircPulse[i] = 10
-		vCircFuckAll[i] = 0
-		vCircRadius[i] = 0
-		vCircWidth[i] = 3
-
-		vCircRadMax[i] = 0
-		vCircRadMin[i] = 0
-		vCircRadDir[i] = -1
-		vCircRadCounter[i] = 0
-
-		vCircX[i], vCircY[i] = 0,0
-
-		vCircCol[i] = 0xFF00FFFF
-
-		SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
-
-		SetVisualGearValues(rCirc[i], 0, 0, 100, 255, 1, 10, 0, 40, 3, vCircCol[i])
+		SI.vCCount = SI.vCCount +1
+		SI.vCirc[i] = AddVisualGear(0,0,vgtCircle,0,true)
+
+		SI.rCirc[i] = AddVisualGear(0,0,vgtCircle,0,true)
+		SI.rCircX[i] = 0
+		SI.rCircY[i] = 0
+
+		SI.vCircDX[i] = 0
+		SI.vCircDY[i] = 0
+
+		SI.vType[i] = "generic"
+		SI.vCounter[i] = 0
+		SI.vCounterLim[i] = 3000
+		SI.vCircScore[i] = 0
+		SI.vCircHealth[i] = 1
+
+		SI.vCircMinA[i] = 80
+		SI.vCircMaxA[i] = 255
+		SI.vCircType[i] = 1
+		SI.vCircPulse[i] = 10
+		SI.vCircFuckAll[i] = 0
+		SI.vCircRadius[i] = 0
+		SI.vCircWidth[i] = 3
+
+		SI.vCircRadMax[i] = 0
+		SI.vCircRadMin[i] = 0
+		SI.vCircRadDir[i] = -1
+		SI.vCircRadCounter[i] = 0
+
+		SI.vCircX[i], SI.vCircY[i] = 0,0
+
+		SI.vCircCol[i] = 0xFF00FFFF
+
+		SetVisualGearValues(SI.vCirc[i], SI.vCircX[i], SI.vCircY[i], SI.vCircMinA[i], SI.vCircMaxA[i], SI.vCircType[i], SI.vCircPulse[i], SI.vCircFuckAll[i], SI.vCircRadius[i], SI.vCircWidth[i], SI.vCircCol[i])
+
+		SetVisualGearValues(SI.rCirc[i], 0, 0, 100, 255, 1, 10, 0, 40, 3, SI.vCircCol[i])
 
 	end
 
-	pShield = AddVisualGear(0,0,vgtCircle,0,true)
+	SI.pShield = AddVisualGear(0,0,vgtCircle,0,true)
 
 end
 
@@ -1614,9 +1674,9 @@
 
 	local acceptibleDistance = 800
 
-	vCircX[i] = GetRandom(5000)
-	vCircY[i] = GetRandom(2000)
-	local dist = GetDistFromGearToXY(CurrentHedgehog, vCircX[i], vCircY[i])
+	SI.vCircX[i] = GetRandom(5000)
+	SI.vCircY[i] = GetRandom(2000)
+	local dist = GetDistFromGearToXY(CurrentHedgehog, SI.vCircX[i], SI.vCircY[i])
 	if dist > acceptibleDistance*acceptibleDistance then
 		return(true)
 	else
@@ -1628,111 +1688,111 @@
 function CircleDamaged(i)
 
 	local res = ""
-	vCircHealth[i] = vCircHealth[i] -1
-
-	if vCircHealth[i] <= 0 then
+	SI.vCircHealth[i] = SI.vCircHealth[i] -1
+
+	if SI.vCircHealth[i] <= 0 then
 	-- circle is dead, do death effects/consequences
 
-		vCircActive[i] = false
-
-		if (vType[i] == "drone") then
+		SI.vCircActive[i] = false
+
+		if (SI.vType[i] == "drone") then
 			PlaySound(sndHellishImpact4)
-			TimeLeft = TimeLeft + timeBonus
-			AddCaption(string.format(loc("Time extended! +%dsec"), timeBonus), colorDrone, capgrpMessage )
-			DrawTag(TAG_TIME)
-
-			local morte = AddGear(vCircX[i], vCircY[i], gtExplosives, 0, 0, 0, 1)
+			SI.TimeLeft = SI.TimeLeft + SI.timeBonus
+			AddCaption(string.format(loc("Time extended! +%dsec"), SI.timeBonus), SI.colorDrone, capgrpMessage )
+			DrawTag(SI.TAG_TIME)
+
+			local morte = AddGear(SI.vCircX[i], SI.vCircY[i], gtExplosives, 0, 0, 0, 1)
 			SetHealth(morte, 0)
 
-			RK = RK + 1
-			if RK == 5 then
-				RK = 0
-				AddCaption(loc("Drone Hunter! +10 points!"),colorMsgBonus,capgrpMessage2)
+			SI.RK = SI.RK + 1
+			if SI.RK == 5 then
+				SI.RK = 0
+				AddCaption(loc("Drone Hunter! +10 points!"),SI.colorMsgBonus,capgrpMessage2)
 				AwardPoints(10)
 			end
 
-		elseif (vType[i] == "ammo") then
-			AddVisualGear(vCircX[i], vCircY[i], vgtExplosion, 0, false)
+		elseif (SI.vType[i] == "ammo") then
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtExplosion, 0, false)
 			PlaySound(sndExplosion)
 			PlaySound(sndShotgunReload)
-			wepAmmo[0] = wepAmmo[0] + barrelBonus
-			AddCaption(string.format(loc("+%d Ammo"), barrelBonus), colorAmmo,capgrpMessage)
-			DrawTag(TAG_BARRELS)
-
-			GK = GK + 1
-			if GK == 3 then
-				GK = 0
-				AddCaption(loc("Ammo Maniac! +5 points!"),colorMsgBonus,capgrpMessage2)
+			SI.wepAmmo[0] = SI.wepAmmo[0] + SI.barrelBonus
+			AddCaption(string.format(loc("+%d Ammo"), SI.barrelBonus), SI.colorAmmo,capgrpMessage)
+			DrawTag(SI.TAG_BARRELS)
+
+			SI.GK = SI.GK + 1
+			if SI.GK == 3 then
+				SI.GK = 0
+				AddCaption(loc("Ammo Maniac! +5 points!"),SI.colorMsgBonus,capgrpMessage2)
 				AwardPoints(5)
 			end
 
-		elseif (vType[i] == "bonus") then
-
-			AddVisualGear(vCircX[i], vCircY[i], vgtExplosion, 0, false)
+		elseif (SI.vType[i] == "bonus") then
+
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtExplosion, 0, false)
 			PlaySound(sndExplosion)
 
-			AddVisualGear(vCircX[i], vCircY[i], vgtFire, 0, false)
-			AddVisualGear(vCircX[i], vCircY[i], vgtFire, 0, false)
-			AddVisualGear(vCircX[i], vCircY[i], vgtFire, 0, false)
-			AddVisualGear(vCircX[i], vCircY[i], vgtFire, 0, false)
-			AddVisualGear(vCircX[i], vCircY[i], vgtFire, 0, false)
-			AddVisualGear(vCircX[i], vCircY[i], vgtSmoke, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtFire, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtFire, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtFire, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtFire, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtFire, 0, false)
+			AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtSmoke, 0, false)
 
 			PlaySound(sndVaporize)
 
-			shieldHealth = shieldHealth + shieldBonus
-			if shieldHealth >= 250 then
-				shieldHealth = 250
-				AddCaption(loc("Shield is fully recharged!"),colorShield,capgrpMessage)
+			SI.shieldHealth = SI.shieldHealth + SI.shieldBonus
+			if SI.shieldHealth >= 250 then
+				SI.shieldHealth = 250
+				AddCaption(loc("Shield is fully recharged!"),SI.colorShield,capgrpMessage)
 			else
-				AddCaption(string.format(loc("Shield boosted! +%d power"),shieldBonus), colorShield,capgrpMessage)
+				AddCaption(string.format(loc("Shield boosted! +%d power"),SI.shieldBonus), SI.colorShield,capgrpMessage)
 			end
-			DrawTag(TAG_SHIELD)
-
-			OK = OK + 1
-			if OK == 3 then
-				OK = 0
-				AddCaption(loc("Shield Seeker! +10 points!"),colorShield,capgrpMessage2)
+			DrawTag(SI.TAG_SHIELD)
+
+			SI.OK = SI.OK + 1
+			if SI.OK == 3 then
+				SI.OK = 0
+				AddCaption(loc("Shield Seeker! +10 points!"),SI.colorShield,capgrpMessage2)
 				AwardPoints(10)
 			end
 
-		elseif (vType[i] == "blueboss") then
+		elseif (SI.vType[i] == "blueboss") then
 			PlaySound(sndHellishImpact3)
-			tauntTimer = 300
-			tauntSound = sndEnemyDown
-			tauntGear = CurrentHedgehog
-			AddCaption(loc("Boss defeated! +30 points!"), colorBoss,capgrpMessage)
-
-			local morte = AddGear(vCircX[i], vCircY[i], gtExplosives, 0, 0, 0, 1)
+			SI.tauntTimer = 300
+			SI.tauntSound = sndEnemyDown
+			SI.tauntGear = CurrentHedgehog
+			AddCaption(loc("Boss defeated! +30 points!"), SI.colorBoss,capgrpMessage)
+
+			local morte = AddGear(SI.vCircX[i], SI.vCircY[i], gtExplosives, 0, 0, 0, 1)
 			SetHealth(morte, 0)
 
-			BK = BK + 1
-			if BK == 2 then
-				BK = 0
-				AddCaption(loc("Boss Slayer! +25 points!"),colorMsgBonus,capgrpMessage2)
+			SI.BK = SI.BK + 1
+			if SI.BK == 2 then
+				SI.BK = 0
+				AddCaption(loc("Boss Slayer! +25 points!"),SI.colorMsgBonus,capgrpMessage2)
 				AwardPoints(25)
 			end
 
 		end
 
-		AwardPoints(vCircScore[i])
+		AwardPoints(SI.vCircScore[i])
 		AwardKills()
 		SetUpCircle(i)
 		res = "fatal"
 
-		chainCounter = 3000
-		chainLength = chainLength + 1
-		if chainLength > 1 then
-			AddCaption( string.format(loc("%d-Hit Combo! +%d points!"), chainLength, chainLength*2),colorMsgBonus,capgrpVolume)
-			AwardPoints(chainLength*2)
+		SI.chainCounter = 3000
+		SI.chainLength = SI.chainLength + 1
+		if SI.chainLength > 1 then
+			AddCaption( string.format(loc("%d-Hit Combo! +%d points!"), SI.chainLength, SI.chainLength*2),SI.colorMsgBonus,capgrpVolume)
+			AwardPoints(SI.chainLength*2)
 		end
 
-		awardCombo = UpdateSimpleAward(awardCombo, chainLength, 5)
+		SI.awardCombo = UpdateSimpleAward(SI.awardCombo, SI.chainLength, 5)
 
 	else
 	-- circle is merely damaged
 	-- do damage effects/sounds
-		AddVisualGear(vCircX[i], vCircY[i], vgtSteam, 0, false)
+		AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtSteam, 0, false)
 		local r = math.random(1,4)
 		PlaySound(_G["sndHellishImpact" .. tostring(r)])
 		res = "non-fatal"
@@ -1752,41 +1812,41 @@
 
 		r = GetRandom(2)
 		if r == 0 then
-			vCircCol[i] = colorDrone
-			vType[i] = "drone"
-			vCircRadMin[i] = 50	*5
-			vCircRadMax[i] = 90	*5
-			vCounterLim[i] = 3000
-			vCircScore[i] = 10
-			vCircHealth[i] = 1
+			SI.vCircCol[i] = SI.colorDrone
+			SI.vType[i] = "drone"
+			SI.vCircRadMin[i] = 50	*5
+			SI.vCircRadMax[i] = 90	*5
+			SI.vCounterLim[i] = 3000
+			SI.vCircScore[i] = 10
+			SI.vCircHealth[i] = 1
 		elseif r == 1 then
-			vCircCol[i] = colorAmmo
-			vType[i] = "ammo"
-			vCircRadMin[i] = 25	*7
-			vCircRadMax[i] = 30	*7
-			vCircScore[i] = 3
-			vCircHealth[i] = 1
+			SI.vCircCol[i] = SI.colorAmmo
+			SI.vType[i] = "ammo"
+			SI.vCircRadMin[i] = 25	*7
+			SI.vCircRadMax[i] = 30	*7
+			SI.vCircScore[i] = 3
+			SI.vCircHealth[i] = 1
 		end
 
 	-- 20% chance of spawning boss or bonus
 	else
 		r = GetRandom(5)
 		if r <= 1 then
-			vCircCol[i] = colorBoss
-			vType[i] = "blueboss"
-			vCircRadMin[i] = 100*5
-			vCircRadMax[i] = 180*5
-			vCircWidth[i] = 1
-			vCounterLim[i] = 2000
-			vCircScore[i] = 30
-			vCircHealth[i] = 3
+			SI.vCircCol[i] = SI.colorBoss
+			SI.vType[i] = "blueboss"
+			SI.vCircRadMin[i] = 100*5
+			SI.vCircRadMax[i] = 180*5
+			SI.vCircWidth[i] = 1
+			SI.vCounterLim[i] = 2000
+			SI.vCircScore[i] = 30
+			SI.vCircHealth[i] = 3
 		else
-			vCircCol[i] = colorShield
-			vType[i] = "bonus"
-			vCircRadMin[i] = 20 *7
-			vCircRadMax[i] = 40 *7
-			vCircScore[i] = 5
-			vCircHealth[i] = 1
+			SI.vCircCol[i] = SI.colorShield
+			SI.vType[i] = "bonus"
+			SI.vCircRadMin[i] = 20 *7
+			SI.vCircRadMax[i] = 40 *7
+			SI.vCircScore[i] = 5
+			SI.vCircHealth[i] = 1
 		end
 
 	end
@@ -1801,26 +1861,26 @@
 		end
 	end
 
-	vCircRadius[i] = vCircRadMax[i] - GetRandom(vCircRadMin[i])
-
-	SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], nil, nil, nil, nil, nil, vCircRadius[i], vCircWidth[i], vCircCol[i]-0x000000FF)
-
-	SetVisualGearValues(rCirc[i], 0, 0, nil, nil, nil, nil, nil, nil, nil, vCircCol[i]-0x000000FF)
-
-
-	vCircActive[i] = true
+	SI.vCircRadius[i] = SI.vCircRadMax[i] - GetRandom(SI.vCircRadMin[i])
+
+	SetVisualGearValues(SI.vCirc[i], SI.vCircX[i], SI.vCircY[i], nil, nil, nil, nil, nil, SI.vCircRadius[i], SI.vCircWidth[i], SI.vCircCol[i]-0x000000FF)
+
+	SetVisualGearValues(SI.rCirc[i], 0, 0, nil, nil, nil, nil, nil, nil, nil, SI.vCircCol[i]-0x000000FF)
+
+
+	SI.vCircActive[i] = true
 
 end
 
 function SetMyCircles(s)
 
-	circlesAreGo = s
-	playerIsFine = s
-
-	for i = 0,(vCCount-1) do
+	SI.circlesAreGo = s
+	SI.playerIsFine = s
+
+	for i = 0,(SI.vCCount-1) do
 
 		if s == false then
-			vCircActive[i] = false
+			SI.vCircActive[i] = false
 		elseif s == true then
 			SetUpCircle(i)
 		end
@@ -1837,7 +1897,7 @@
 		PlaySound(_G["sndOoff"..r], CurrentHedgehog)
 	end
 
-	playerIsFine = false
+	SI.playerIsFine = false
 	FailGraphics()
 
 	if not kamikaze then
@@ -1845,72 +1905,72 @@
 		PlaySound(sndHellish)
 	end
 
-	targetHit = true
+	SI.targetHit = true
 
 end
 
 -- Turn all circles white to indicate they can't be hit anymore
 function FailGraphics()
-	for i = 0,(vCCount-1) do
-		vCircCol[i] = colorDisabled
+	for i = 0,(SI.vCCount-1) do
+		SI.vCircCol[i] = SI.colorDisabled
 	end
 end
 
 --- collision detection for weapons fire
 function CheckVarious(gear)
 
-	targetHit = false
+	SI.targetHit = false
 
 	-- if circle is hit by player fire
 	if (GetGearType(gear) == gtExplosives) then
 		local circsHit = 0
 
-		for i = 0,(vCCount-1) do
-
-			local dist = GetDistFromGearToXY(gear, vCircX[i], vCircY[i])
+		for i = 0,(SI.vCCount-1) do
+
+			local dist = GetDistFromGearToXY(gear, SI.vCircX[i], SI.vCircY[i])
 
 			-- calculate my real radius if I am an aura
 			local NR
-			if vCircType[i] == 0 then
-				NR = vCircRadius[i]
+			if SI.vCircType[i] == 0 then
+				NR = SI.vCircRadius[i]
 			else
-				NR = (48/100*vCircRadius[i])/2
+				NR = (48/100*SI.vCircRadius[i])/2
 			end
 
 			if dist <= NR*NR then
 
-				dist = (GetDistFromXYtoXY(vCircX[i], vCircY[i], getGearValue(gear,"XP"), getGearValue(gear,"YP")) - (NR*NR))
+				dist = (GetDistFromXYtoXY(SI.vCircX[i], SI.vCircY[i], getGearValue(gear,"XP"), getGearValue(gear,"YP")) - (NR*NR))
 				if dist >= 1000000 then
-					sniperHits = sniperHits +1
-					AddCaption(loc("Sniper! +8 points!"),colorMsgBonus,capgrpAmmostate)
+					SI.sniperHits = SI.sniperHits +1
+					AddCaption(loc("Sniper! +8 points!"),SI.colorMsgBonus,capgrpAmmostate)
 					AwardPoints(8)
-					if sniperHits == 3 then
-						sniperHits = 0
-						AddCaption(loc("They Call Me Bullseye! +16 points!"),colorMsgBonus,capgrpAmmostate)
+					if SI.sniperHits == 3 then
+						SI.sniperHits = 0
+						AddCaption(loc("They Call Me Bullseye! +16 points!"),SI.colorMsgBonus,capgrpAmmostate)
 						AwardPoints(16)
 					end
 				elseif dist <= 6000 then
-					pointBlankHits = pointBlankHits +1
-					if pointBlankHits == 3 then
-						pointBlankHits = 0
-						AddCaption(loc("Point Blank Combo! +5 points!"),colorMsgBonus,capgrpAmmostate)
+					SI.pointBlankHits = SI.pointBlankHits +1
+					if SI.pointBlankHits == 3 then
+						SI.pointBlankHits = 0
+						AddCaption(loc("Point Blank Combo! +5 points!"),SI.colorMsgBonus,capgrpAmmostate)
 						AwardPoints(5)
 					end
 				end
 
 				AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
 
-				targetHit = true
+				SI.targetHit = true
 				CircleDamaged(i)
 
 				circsHit = circsHit + 1
 				if circsHit > 1 then
-					AddCaption(loc("Multi-shot! +15 points!"),colorMsgBonus,capgrpAmmoinfo)
+					AddCaption(loc("Multi-shot! +15 points!"),SI.colorMsgBonus,capgrpAmmoinfo)
 					AwardPoints(15)
 						circsHit = 0
 				end
 
-				shotsHit = shotsHit + 1
+				SI.shotsHit = SI.shotsHit + 1
 
 			end
 
@@ -1921,7 +1981,7 @@
 
 		local dist = GetDistFromGearToGear(gear, CurrentHedgehog)
 
-		if beam == true then
+		if SI.beam == true then
 
 			if dist < 3000 then
 				local tempE = AddVisualGear(GetX(gear), GetY(gear), vgtSmoke, 0, false)
@@ -1929,10 +1989,10 @@
 				PlaySound(sndVaporize)
 				DeleteGear(gear)
 
-				SK = SK + 1
-				if SK == 5 then
-					SK = 0
-					AddCaption(loc("Shield Master! +10 points!"),colorMsgBonus,capgrpMessage)
+				SI.SK = SI.SK + 1
+				if SI.SK == 5 then
+					SI.SK = 0
+					AddCaption(loc("Shield Master! +10 points!"),SI.colorMsgBonus,capgrpMessage)
 					AwardPoints(10)
 				end
 			end
@@ -1943,7 +2003,7 @@
 
 	end
 
-	if targetHit == true then
+	if SI.targetHit == true then
 		DeleteGear(gear)
 	end
 
@@ -1956,10 +2016,10 @@
 		return
 	end
 
-	for i = 0,(vCCount-1) do
+	for i = 0,(SI.vCCount-1) do
 
 		local g1X, g1Y = GetGearPosition(CurrentHedgehog)
-		local g2X, g2Y = vCircX[i], vCircY[i]
+		local g2X, g2Y = SI.vCircX[i], SI.vCircY[i]
 
 		g1X = g1X - g2X
 		g1Y = g1Y - g2Y
@@ -1967,42 +2027,42 @@
 
 		-- calculate my real radius if I am an aura
 		local NR
-		if vCircType[i] == 0 then
-			NR = vCircRadius[i]
+		if SI.vCircType[i] == 0 then
+			NR = SI.vCircRadius[i]
 		else
-			NR = (48/100*vCircRadius[i])/2
+			NR = (48/100*SI.vCircRadius[i])/2
 		end
 
 		if dist <= NR*NR then
 
-			if 	(vCircActive[i] == true) and
-				((vType[i] == "ammo") or (vType[i] == "bonus") )
+			if 	(SI.vCircActive[i] == true) and
+				((SI.vType[i] == "ammo") or (SI.vType[i] == "bonus") )
 			then
 
 				CircleDamaged(i)
 
-			elseif (vCircActive[i] == true) and
-					( (vType[i] == "drone") or (vType[i] == "blueboss") )
+			elseif (SI.vCircActive[i] == true) and
+					( (SI.vType[i] == "drone") or (SI.vType[i] == "blueboss") )
 			then
 
 				local ss = CircleDamaged(i)
 				local explosion
-				if vType[i] == "blueboss" then explosion = true else explosion = false end
+				if SI.vType[i] == "blueboss" then explosion = true else explosion = false end
 
 				local kamikaze = false
 				if ss == "fatal" then
-					if (wepAmmo[0] == 0) and (TimeLeft <= 9) then
-						AddCaption(loc("Kamikaze Expert! +15 points!"),colorMsgBonus,capgrpGameState)
+					if (SI.wepAmmo[0] == 0) and (SI.TimeLeft <= 9) then
+						AddCaption(loc("Kamikaze Expert! +15 points!"),SI.colorMsgBonus,capgrpGameState)
 						AwardPoints(15)
 						PlaySound(sndKamikaze, CurrentHedgehog)
 						kamikaze = true
-					elseif (wepAmmo[0] == 0) then
-						AddCaption(loc("Depleted Kamikaze! +5 points!"),colorMsgBonus,capgrpGameState)
+					elseif (SI.wepAmmo[0] == 0) then
+						AddCaption(loc("Depleted Kamikaze! +5 points!"),SI.colorMsgBonus,capgrpGameState)
 						AwardPoints(5)
 						PlaySound(sndKamikaze, CurrentHedgehog)
 						kamikaze = true
-					elseif TimeLeft <= 9 then
-						AddCaption(loc("Timed Kamikaze! +10 points!"),colorMsgBonus,capgrpGameState)
+					elseif SI.TimeLeft <= 9 then
+						AddCaption(loc("Timed Kamikaze! +10 points!"),SI.colorMsgBonus,capgrpGameState)
 						AwardPoints(10)
 						PlaySound(sndKamikaze, CurrentHedgehog)
 						kamikaze = true
@@ -2021,57 +2081,57 @@
 
 function HandleCircles()
 
-	if rAlpha ~= 255 then
-
-		rPingTimer = rPingTimer + 1
-		if rPingTimer == 100 then
-			rPingTimer = 0
-
-			rAlpha = rAlpha + 5
-			if rAlpha >= 255 then
-				rAlpha = 255
+	if SI.rAlpha ~= 255 then
+
+		SI.rPingTimer = SI.rPingTimer + 1
+		if SI.rPingTimer == 100 then
+			SI.rPingTimer = 0
+
+			SI.rAlpha = SI.rAlpha + 5
+			if SI.rAlpha >= 255 then
+				SI.rAlpha = 255
 			end
 		end
 
 	end
 
-	for i = 0,(vCCount-1) do
-
-		SetVisualGearValues(rCirc[i], rCircX[i], rCircY[i], 100, 255, 1, 10, 0, 40, 3, vCircCol[i]-rAlpha)
-
-		vCounter[i] = vCounter[i] + 1
-		if vCounter[i] >= vCounterLim[i] then
-
-			vCounter[i] = 0
-
-			if 	((vType[i] == "drone") or (vType[i] == "blueboss") ) and
-				(vCircActive[i] == true) then
-				AddGear(vCircX[i], vCircY[i], gtShell, 0, 0, 0, 1)
+	for i = 0,(SI.vCCount-1) do
+
+		SetVisualGearValues(SI.rCirc[i], SI.rCircX[i], SI.rCircY[i], 100, 255, 1, 10, 0, 40, 3, SI.vCircCol[i]-SI.rAlpha)
+
+		SI.vCounter[i] = SI.vCounter[i] + 1
+		if SI.vCounter[i] >= SI.vCounterLim[i] then
+
+			SI.vCounter[i] = 0
+
+			if 	((SI.vType[i] == "drone") or (SI.vType[i] == "blueboss") ) and
+				(SI.vCircActive[i] == true) then
+				AddGear(SI.vCircX[i], SI.vCircY[i], gtShell, 0, 0, 0, 1)
 
 			end
 
 		end
 
-		if (vCircActive[i] == true) then
-
-			vCircRadCounter[i] = vCircRadCounter[i] + 1
-			if vCircRadCounter[i] == 100 then
-
-				vCircRadCounter[i] = 0
+		if (SI.vCircActive[i] == true) then
+
+			SI.vCircRadCounter[i] = SI.vCircRadCounter[i] + 1
+			if SI.vCircRadCounter[i] == 100 then
+
+				SI.vCircRadCounter[i] = 0
 
 				-- make my radius increase/decrease faster if I am an aura
 				local M
-				if vCircType[i] == 0 then
+				if SI.vCircType[i] == 0 then
 					M = 1
 				else
 					M = 10
 				end
 
-				vCircRadius[i] = vCircRadius[i] + vCircRadDir[i]
-				if vCircRadius[i] > vCircRadMax[i] then
-					vCircRadDir[i] = -M
-				elseif vCircRadius[i] < vCircRadMin[i] then
-					vCircRadDir[i] = M
+				SI.vCircRadius[i] = SI.vCircRadius[i] + SI.vCircRadDir[i]
+				if SI.vCircRadius[i] > SI.vCircRadMax[i] then
+					SI.vCircRadDir[i] = -M
+				elseif SI.vCircRadius[i] < SI.vCircRadMin[i] then
+					SI.vCircRadDir[i] = M
 				end
 
 
@@ -2082,31 +2142,31 @@
 				--vgtSteam -- nice long trail
 				--vgtDust -- short trail on earthrise
 				--vgtSmokeTrace
-				if vType[i] == "ammo" then
-
-					local tempE = AddVisualGear(vCircX[i], vCircY[i], vgtSmoke, 0, false)
-					SetVisualGearValues(tempE, vCircX[i], vCircY[i], nil, nil, nil, nil, nil, nil, nil, vCircCol[i] )
-
-				elseif vType[i] == "bonus" then
-
-					local tempE = AddVisualGear(vCircX[i], vCircY[i], vgtDust, 0, false)
-					SetVisualGearValues(tempE, vCircX[i], vCircY[i], nil, nil, nil, nil, nil, 1, nil, colorShieldParticle)
-
-
-				elseif vType[i] == "blueboss" then
+				if SI.vType[i] == "ammo" then
+
+					local tempE = AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtSmoke, 0, false)
+					SetVisualGearValues(tempE, SI.vCircX[i], SI.vCircY[i], nil, nil, nil, nil, nil, nil, nil, SI.vCircCol[i] )
+
+				elseif SI.vType[i] == "bonus" then
+
+					local tempE = AddVisualGear(SI.vCircX[i], SI.vCircY[i], vgtDust, 0, false)
+					SetVisualGearValues(tempE, SI.vCircX[i], SI.vCircY[i], nil, nil, nil, nil, nil, 1, nil, SI.colorShieldParticle)
+
+
+				elseif SI.vType[i] == "blueboss" then
 
 					local k = 25
 					local g = vgtSteam
-					local trailColour = colorBossParticle
-
-					local tempE = AddVisualGear(vCircX[i], vCircY[i], g, 0, false)
-					SetVisualGearValues(tempE, vCircX[i], vCircY[i]+k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
-
-					tempE = AddVisualGear(vCircX[i], vCircY[i], g, 0, false)
-					SetVisualGearValues(tempE, vCircX[i]+k, vCircY[i]-k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
-
-					tempE = AddVisualGear(vCircX[i], vCircY[i], g, 0, false)
-					SetVisualGearValues(tempE, vCircX[i]-k, vCircY[i]-k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
+					local trailColour = SI.colorBossParticle
+
+					local tempE = AddVisualGear(SI.vCircX[i], SI.vCircY[i], g, 0, false)
+					SetVisualGearValues(tempE, SI.vCircX[i], SI.vCircY[i]+k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
+
+					tempE = AddVisualGear(SI.vCircX[i], SI.vCircY[i], g, 0, false)
+					SetVisualGearValues(tempE, SI.vCircX[i]+k, SI.vCircY[i]-k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
+
+					tempE = AddVisualGear(SI.vCircX[i], SI.vCircY[i], g, 0, false)
+					SetVisualGearValues(tempE, SI.vCircX[i]-k, SI.vCircY[i]-k, nil, nil, nil, nil, nil, nil, nil, trailColour-75 )
 
 
 				end
@@ -2120,20 +2180,20 @@
 	end
 
 	-- alter the circles velocities
-	circAdjustTimer = circAdjustTimer + 1
-	if circAdjustTimer == 2000 then
-
-		circAdjustTimer = 0
-
-		for i = 0,(vCCount-1) do
+	SI.circAdjustTimer = SI.circAdjustTimer + 1
+	if SI.circAdjustTimer == 2000 then
+
+		SI.circAdjustTimer = 0
+
+		for i = 0,(SI.vCCount-1) do
 
 			-- bounce the circles off the edges if they go too far
 			-- or make them move in random directions
 
-			if vCircX[i] > 5500 then
-				vCircDX[i] = -5	--5 circmovchange
-			elseif vCircX[i] < -1500 then
-				vCircDX[i] = 5	--5 circmovchange
+			if SI.vCircX[i] > 5500 then
+				SI.vCircDX[i] = -5	--5 circmovchange
+			elseif SI.vCircX[i] < -1500 then
+				SI.vCircDX[i] = 5	--5 circmovchange
 			else
 
 				local z = GetRandom(2)
@@ -2142,13 +2202,13 @@
 				else
 					z = -1
 				end
-				vCircDX[i] = vCircDX[i] + GetRandom(3)*z	--3 circmovchange
+				SI.vCircDX[i] = SI.vCircDX[i] + GetRandom(3)*z	--3 circmovchange
 			end
 
-			if vCircY[i] > 1500 then
-				vCircDY[i] = -5	--5 circmovchange
-			elseif vCircY[i] < -2900 then
-				vCircDY[i] = 5	--5 circmovchange
+			if SI.vCircY[i] > 1500 then
+				SI.vCircDY[i] = -5	--5 circmovchange
+			elseif SI.vCircY[i] < -2900 then
+				SI.vCircDY[i] = 5	--5 circmovchange
 			else
 				local z = GetRandom(2)
 				if z == 1 then
@@ -2156,7 +2216,7 @@
 				else
 					z = -1
 				end
-				vCircDY[i] = vCircDY[i] + GetRandom(3)*z	--3 circmovchange
+				SI.vCircDY[i] = SI.vCircDY[i] + GetRandom(3)*z	--3 circmovchange
 			end
 
 		end
@@ -2164,49 +2224,49 @@
 	end
 
 	-- move the circles according to their current velocities
-	m2Count = m2Count + 1
-	if m2Count == 25 then	--25 circmovchange
-
-		m2Count = 0
-		for i = 0,(vCCount-1) do
-			vCircX[i] = vCircX[i] + vCircDX[i]
-			vCircY[i] = vCircY[i] + vCircDY[i]
-
-			if (CurrentHedgehog ~= nil) and (rAlpha ~= 255) then
+	SI.m2Count = SI.m2Count + 1
+	if SI.m2Count == 25 then	--25 circmovchange
+
+		SI.m2Count = 0
+		for i = 0,(SI.vCCount-1) do
+			SI.vCircX[i] = SI.vCircX[i] + SI.vCircDX[i]
+			SI.vCircY[i] = SI.vCircY[i] + SI.vCircDY[i]
+
+			if (CurrentHedgehog ~= nil) and (SI.rAlpha ~= 255) then
 				DoHorribleThings(i)
 			end
 
 		end
 
-		if (TimeLeft == 0) and (tumbleStarted == true) then
-
-			fadeAlpha = fadeAlpha + 1
-			if fadeAlpha >= 255 then
-				fadeAlpha = 255
+		if (SI.TimeLeft == 0) and (SI.tumbleStarted == true) then
+
+			SI.fadeAlpha = SI.fadeAlpha + 1
+			if SI.fadeAlpha >= 255 then
+				SI.fadeAlpha = 255
 			end
 
 		end
 
 	end
 
-	for i = 0,(vCCount-1) do
-		SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], nil, nil, nil, nil, nil, vCircRadius[i])
+	for i = 0,(SI.vCCount-1) do
+		SetVisualGearValues(SI.vCirc[i], SI.vCircX[i], SI.vCircY[i], nil, nil, nil, nil, nil, SI.vCircRadius[i])
 	end
 
-	if 	(TimeLeft == 0) or
-		((tumbleStarted == false)) then
-		for i = 0,(vCCount-1) do
-			SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], nil, nil, nil, nil, nil, vCircRadius[i], nil, (vCircCol[i]-fadeAlpha))
+	if 	(SI.TimeLeft == 0) or
+		((SI.tumbleStarted == false)) then
+		for i = 0,(SI.vCCount-1) do
+			SetVisualGearValues(SI.vCirc[i], SI.vCircX[i], SI.vCircY[i], nil, nil, nil, nil, nil, SI.vCircRadius[i], nil, (SI.vCircCol[i]-SI.fadeAlpha))
 		end
 	end
 
 
 	if (CurrentHedgehog ~= nil) then
-		if beam == true then
-			SetVisualGearValues(pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), nil, nil, nil, nil, nil, 200, nil, colorShield-0x000000FF - -shieldHealth )
-			DrawTag(TAG_SHIELD)
+		if SI.beam == true then
+			SetVisualGearValues(SI.pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), nil, nil, nil, nil, nil, 200, nil, SI.colorShield-0x000000FF - -SI.shieldHealth )
+			DrawTag(SI.TAG_SHIELD)
 		else
-			SetVisualGearValues(pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), nil, nil, nil, nil, nil, 0)
+			SetVisualGearValues(SI.pShield, GetX(CurrentHedgehog), GetY(CurrentHedgehog), nil, nil, nil, nil, nil, 0)
 		end
 
 	end
@@ -2218,7 +2278,7 @@
 
 	if (GetGearType(gear) == gtShell) then
 
-		local turningSpeed = 0.1*fMod
+		local turningSpeed = 0.1*SI.fMod
 
 		local dx, dy = GetGearVelocity(gear)
 
@@ -2235,8 +2295,8 @@
 		end
 
 
-		local dxlimit = 0.4*fMod
-		local dylimit = 0.4*fMod
+		local dxlimit = 0.4*SI.fMod
+		local dylimit = 0.4*SI.fMod
 
 		if dx > dxlimit then
 			dx = dxlimit
--- a/share/hedgewars/Data/Scripts/Multiplayer/TechRacer.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/TechRacer.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -864,10 +864,12 @@
 end
 
 function onGameStart()
-	SendGameResultOff()
-	SendRankingStatsOff()
-	SendAchievementsStatsOff()
-	SendHealthStatsOff()
+	if ClansCount >= 2 then
+		SendGameResultOff()
+		SendRankingStatsOff()
+		SendAchievementsStatsOff()
+		SendHealthStatsOff()
+	end
 
 	trackTeams()
 
--- a/share/hedgewars/Data/Scripts/Multiplayer/WxW.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/Multiplayer/WxW.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -962,7 +962,7 @@
 		SetInputMask(0xFFFFFFFF)
 		AddCaption(loc("Configuration accepted."), msgColorTech, capgrpMessage)
 		if GetGameFlag(gfPlaceHog) then
-			TurnTimeLeft = PlacementTime
+			SetTurnTimeLeft(PlacementTime)
 			AddAmmo(CurrentHedgehog, amTeleport, 100)
 			SetWeapon(amTeleport)
 			AddCaption(
@@ -972,7 +972,7 @@
 			)
 			roundN = 2
 		else
-			TurnTimeLeft = TurnTime
+			SetTurnTimeLeft(TurnTime)
 			AddCaption(string.format(loc("Let's go, %s!"), GetHogTeamName(CurrentHedgehog)), capcolDefault, capgrpMessage2)
 			roundN = 100
 			wallsLeft = #wTouched
@@ -1280,7 +1280,7 @@
 		if roundN < 2 then
 			SetWeapon(amSkip)
 			AddAmmo(CurrentHedgehog, amTeleport, 0)
-			TurnTimeLeft = -1
+			SetTurnTimeLeft(MAX_TURN_TIME)
 			SetInputMask(0)
 		end
 		if roundN == 2 then
@@ -1337,7 +1337,7 @@
 	end
 
 	if roundN == 1 then
-		TurnTimeLeft = -1
+		SetTurnTimeLeft(MAX_TURN_TIME)
 		SetInputMask(0)
 		allowCrate = false
 		UpdateMenu()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/OfficialChallengeHashes.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -0,0 +1,31 @@
+official_racer_maps = {
+    ["Border,60526986531,838018718"] = "Racer Challenge #1"
+    , ["Border,71022545335,-490229244"] = "Racer Challenge #2"
+    , ["Border,40469748943,806689586"] = "Racer Challenge #3"
+    , ["85940488650,-134869715"] = "Racer Challenge #4"
+    , ["62080348735,-661895109"] = "Racer Challenge #5"
+    , ["56818170733,479034891"] = "Racer Challenge #6"
+    , ["Border,25372705797,1770509913"] = "Racer Challenge #7"
+    , ["Border,10917540013,1902370941"] = "Racer Challenge #8"
+    , ["Border,43890274319,185940363"] = "Racer Challenge #9"
+    , ["Border,27870148394,751885839"] = "Racer Challenge #10"
+    , ["Border,22647869226,178845011"] = "Racer Challenge #11"
+    , ["Border,46954401793,706743197"] = "Racer Challenge #12"
+    , ["Border,60760377667,157242054"] = "Racer Challenge #13"
+    , ["Border,51825989393,-1585582638"] = "Racer Challenge #14"
+    , ["81841189250,256715557"] = "Racer Challenge #15"
+    , ["Border,44246064625,-528106034"] = "Racer Challenge #16"
+    , ["60906776802,-1389184823"] = "Racer Challenge #17"
+    , ["Border,70774747774,-534640804"] = "Racer Challenge #18"
+    , ["Border,50512019610,-1839546856"] = "Racer Challenge #19"
+    , ["60715683005,-281312897"] = "Racer Challenge #20"
+-- tech racer
+    , ["Border,19661006772,-975391975"] = "Tech Racer #1"
+    , ["Border,19661306766,-975391975"] = "Tech Racer #2"
+    , ["Border,19661606760,-975391975"] = "Tech Racer #3"
+    , ["Border,19661906754,-975391975"] = "Tech Racer #4"
+    , ["Border,19662206748,-975391975"] = "Tech Racer #5"
+    , ["Border,19662506742,-975391975"] = "Tech Racer #6"
+    , ["Border,19662806736,-975391975"] = "Tech Racer #7"
+    , ["Border,19663106730,-975391975"] = "Tech Racer #8"
+}
--- a/share/hedgewars/Data/Scripts/OfficialChallenges.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/OfficialChallenges.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -1,34 +1,4 @@
-local maps = {
-    ["Border,60526986531,M838018718Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #1"
-    , ["Border,71022545335,M-490229244Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #2"
-    , ["Border,40469748943,M806689586Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #3"
-    , ["85940488650,M-134869715Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #4"
-    , ["62080348735,M-661895109Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #5"
-    , ["56818170733,M479034891Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #6"
-    , ["Border,25372705797,M1770509913Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #7"
-    , ["Border,10917540013,M1902370941Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #8"
-    , ["Border,43890274319,M185940363Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #9"
-    , ["Border,27870148394,M751885839Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #10"
-    , ["Border,22647869226,M178845011Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #11"
-    , ["Border,46954401793,M706743197Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #12"
-    , ["Border,60760377667,M157242054Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #13"
-    , ["Border,51825989393,M-1585582638Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #14"
-    , ["81841189250,M256715557Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #15"
-    , ["Border,44246064625,M-528106034Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #16"
-    , ["60906776802,M-1389184823Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #17"
-    , ["Border,70774747774,M-534640804Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #18"
-    , ["Border,50512019610,M-1839546856Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #19"
-    , ["60715683005,M-281312897Scripts/Multiplayer/Racer.lua"] = "Racer Challenge #20"
--- tech racer
-    , ["Border,19661006772,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #1"
-    , ["Border,19661306766,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #2"
-    , ["Border,19661606760,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #3"
-    , ["Border,19661906754,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #4"
-    , ["Border,19662206748,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #5"
-    , ["Border,19662506742,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #6"
-    , ["Border,19662806736,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #7"
-    , ["Border,19663106730,M-975391975Scripts/Multiplayer/TechRacer.lua"] = "Tech Racer #8"
-    }
+HedgewarsScriptLoad("/Scripts/OfficialChallengeHashes.lua")
 
 -- modified Adler hash
 local hashA = 0
@@ -58,6 +28,6 @@
         end
 
         --WriteLnToConsole(mapString)
-        return(maps[mapString])
+        return(official_racer_maps[mapString])
     end
 end
--- a/share/hedgewars/Data/Scripts/SpeedShoppa.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/SpeedShoppa.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -175,7 +175,7 @@
 				local time = startTime - endTime
 				SendStat(siPlayerKills, tostring(time), params.teamName)
 				SendStat(siCustomAchievement, string.format(loc("You have finished the challenge in %.3f s."), (time/1000)))
-				TurnTimeLeft = 0
+				SetTurnTimeLeft(0)
 			else
 				SendStat(siGameResult, loc("Challenge failed!"))
 				SendStat(siPointType, loc("crate(s)"))
--- a/share/hedgewars/Data/Scripts/TargetPractice.lua	Mon Sep 24 11:16:08 2018 -0400
+++ b/share/hedgewars/Data/Scripts/TargetPractice.lua	Mon Sep 24 11:18:48 2018 -0400
@@ -208,7 +208,7 @@
 				generateStats()
 				EndGame()
 			else
-				TurnTimeLeft = time_goal
+				SetTurnTimeLeft(time_goal)
 			end
 	   	     end_timer = end_timer - 20
 		end