--- 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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4147,10 +4147,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4183,10 +4183,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4257,10 +4257,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4253,10 +4253,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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><b>%1</b> erledigte <b>%2</b> 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 'heads' or 'tails'</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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation>/greeting <Nachricht>: Begrüßungsnachricht für Spieler, die diesen Raum betreten, setzen</translation>
+ <translation type="vanished">/greeting <Nachricht>: Begrüßungsnachricht für Spieler, die diesen Raum betreten, setzen</translation>
</message>
<message>
<source>/delegate <player>: Surrender room control to player</source>
@@ -4780,7 +4784,7 @@
</message>
<message>
<source>/save <parameter></source>
- <translation>/save <Parameter></translation>
+ <translation type="vanished">/save <Parameter></translation>
</message>
<message>
<source>/stats: Query server stats</source>
@@ -4800,15 +4804,15 @@
</message>
<message>
<source>/saveroom <file name>: Save room configuration into a file</source>
- <translation>/saveroom <Dateiname>: Raumeinstellungen in eine Datei speichern</translation>
+ <translation type="vanished">/saveroom <Dateiname>: Raumeinstellungen in eine Datei speichern</translation>
</message>
<message>
<source>/loadroom <file name>: Load room configuration from a file</source>
- <translation>/loadroom <Dateiname>: Raumeinstellungen aus einer Datei laden</translation>
+ <translation type="vanished">/loadroom <Dateiname>: Raumeinstellungen aus einer Datei laden</translation>
</message>
<message>
<source>/delete <parameter></source>
- <translation>/delete <Parameter></translation>
+ <translation type="vanished">/delete <Parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation>/save <Konfig-ID> <Konfig-Name>: Aktuelle Raumeinstellung als Wahloption für /callvote map hinzufügen</translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation>/delete <Konfig-ID>: Eine wählbare Raumeinstellung löschen</translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation>/saveroom <Dateiname>: Alle wählbaren Raumeinstellungen (und die Begrüßung) dieses Raums in eine Datei speichern</translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation>/loadroom <Dateiname>: Wählbare Raumeinstellungen (und Begrüßung) aus einer Datei laden</translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' 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't kick yourself!</source>
+ <translation>Du kannst dich nicht selbst hinauswerfen!</translation>
+ </message>
+ <message>
+ <source>You can'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'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'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4231,10 +4231,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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><b>%1</b> killed <b>%2</b> 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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation>/greeting <message>: Set greeting message to be shown to players who join the room</translation>
+ <translation type="vanished">/greeting <message>: Set greeting message to be shown to players who join the room</translation>
</message>
<message>
<source>/delegate <player>: Surrender room control to player</source>
@@ -4564,7 +4568,7 @@
</message>
<message>
<source>/save <parameter></source>
- <translation>/save <parameter></translation>
+ <translation type="vanished">/save <parameter></translation>
</message>
<message>
<source>/stats: Query server stats</source>
@@ -4584,15 +4588,15 @@
</message>
<message>
<source>/saveroom <file name>: Save room configuration into a file</source>
- <translation>/saveroom <file name>: Save room configuration into a file</translation>
+ <translation type="vanished">/saveroom <file name>: Save room configuration into a file</translation>
</message>
<message>
<source>/loadroom <file name>: Load room configuration from a file</source>
- <translation>/loadroom <file name>: Load room configuration from a file</translation>
+ <translation type="vanished">/loadroom <file name>: Load room configuration from a file</translation>
</message>
<message>
<source>/delete <parameter></source>
- <translation>/delete <parameter></translation>
+ <translation type="vanished">/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation>/save <config ID> <config name>: Add current room configuration as votable choice for /callvote map</translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation>/delete <config ID>: Delete a votable room configuration</translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation>/loadroom <file name>: Load votable room configurations (and greeting) from a file</translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' 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't kick yourself!</source>
+ <translation>You can’t kick yourself!</translation>
+ </message>
+ <message>
+ <source>You can'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'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'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4249,10 +4249,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4449,10 +4449,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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><b>%1</b> a tué <b>%2</b> 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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4631,10 +4631,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4497,10 +4497,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4174,10 +4174,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4164,10 +4164,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4503,10 +4503,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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><b>%1</b>は自分の針鼠を<b>%2</b>匹犠牲にしました。</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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4110,10 +4110,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4005,10 +4005,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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'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: "%3")</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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> 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><b>%1</b> thought it's good to shoot their own hedgehogs for <b>%2</b> 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><b>%1</b> killed <b>%2</b> 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><b>%1</b> was scared and skipped turn <b>%2</b> 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 '%1'?</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>'Registered only' 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 '/help' 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 <nickname>, map <name>, 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</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 'heads' or 'tails'</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 <id>: 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="16"/>
- <source>/vote <yes/no>: Vote 'yes' or 'no' for active vote</source>
+ <source>/rnd: Flip a virtual coin and reply with 'heads' or 'tails'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="17"/>
- <source>/greeting <message>: 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 <player>: Surrender room control to player</source>
+ <source>/watch <id>: 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 <N>: 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 <message>: 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 'registered only' 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 <yes/no>: Vote 'yes' or 'no' for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="23"/>
- <source>/save <parameter></source>
+ <source>/delegate <player>: 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 <N>: Limit maximum number of teams to N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="25"/>
- <source>/force <yes/no>: Force vote result for active vote</source>
+ <source>/global <message>: 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 'registered only' 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 <file name>: 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 <file name>: Load room configuration from a file</source>
+ <source>/force <yes/no>: Force vote result for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="30"/>
- <source>/delete <parameter></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'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'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'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't remove a team you don'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't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+ <source>You can'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'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'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 'yes' or 'no'.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+ <source>/vote: Please use 'yes' or 'no'.</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'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'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're the new room master!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="39"/>
- <source>Say '/help' 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 <config ID> <config name>: 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 <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+ <source>/saveroom <file name>: 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 <file name>: 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'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'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'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't remove a team you don'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 'yes' or 'no'.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
- <source>/vote: Please use 'yes' or 'no'.</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'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'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'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: "%3")</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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> 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><b>%1</b> thought it's good to shoot their own hedgehogs for <b>%2</b> 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><b>%1</b> killed <b>%2</b> 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><b>%1</b> was scared and skipped turn <b>%2</b> 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 '%1'?</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>'Registered only' 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 '/help' 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 <nickname>, map <name>, 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</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 'heads' or 'tails'</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 <id>: 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="16"/>
- <source>/vote <yes/no>: Vote 'yes' or 'no' for active vote</source>
+ <source>/rnd: Flip a virtual coin and reply with 'heads' or 'tails'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="17"/>
- <source>/greeting <message>: 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 <player>: Surrender room control to player</source>
+ <source>/watch <id>: 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 <N>: 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 <message>: 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 'registered only' 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 <yes/no>: Vote 'yes' or 'no' for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="23"/>
- <source>/save <parameter></source>
+ <source>/delegate <player>: 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 <N>: Limit maximum number of teams to N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="25"/>
- <source>/force <yes/no>: Force vote result for active vote</source>
+ <source>/global <message>: 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 'registered only' 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 <file name>: 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 <file name>: Load room configuration from a file</source>
+ <source>/force <yes/no>: Force vote result for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="30"/>
- <source>/delete <parameter></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'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'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'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't remove a team you don'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't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+ <source>You can'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'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'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 'yes' or 'no'.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+ <source>/vote: Please use 'yes' or 'no'.</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'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'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're the new room master!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="39"/>
- <source>Say '/help' 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 <config ID> <config name>: 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 <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+ <source>/saveroom <file name>: 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 <file name>: 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'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'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'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't remove a team you don'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 'yes' or 'no'.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
- <source>/vote: Please use 'yes' or 'no'.</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'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4023,10 +4023,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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><b>%1</b> zabili <b>%2</b> 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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation>/greeting <wiadomość>: Ustaw wiadomość powitalną, która zostanie pokazana graczom dołączającym do pokoju</translation>
+ <translation type="vanished">/greeting <wiadomość>: Ustaw wiadomość powitalną, która zostanie pokazana graczom dołączającym do pokoju</translation>
</message>
<message>
<source>/delegate <player>: Surrender room control to player</source>
@@ -4757,7 +4761,7 @@
</message>
<message>
<source>/save <parameter></source>
- <translation>/save <parametr></translation>
+ <translation type="vanished">/save <parametr></translation>
</message>
<message>
<source>/stats: Query server stats</source>
@@ -4777,15 +4781,15 @@
</message>
<message>
<source>/saveroom <file name>: Save room configuration into a file</source>
- <translation>/saveroom <nazwa pliku>: Zapisz konfigurację pokoju do pliku</translation>
+ <translation type="vanished">/saveroom <nazwa pliku>: Zapisz konfigurację pokoju do pliku</translation>
</message>
<message>
<source>/loadroom <file name>: Load room configuration from a file</source>
- <translation>/loadroom <nazwa pliku>: Wczytaj konfigurację pokoju z pliku</translation>
+ <translation type="vanished">/loadroom <nazwa pliku>: Wczytaj konfigurację pokoju z pliku</translation>
</message>
<message>
<source>/delete <parameter></source>
- <translation>/delete <parametr></translation>
+ <translation type="vanished">/delete <parametr></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4443,10 +4443,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4533,10 +4533,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4169,10 +4169,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4484,10 +4484,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4429,10 +4429,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4249,10 +4249,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4534,10 +4534,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4529,10 +4529,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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'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: "%3")</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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> with <b>%2</b> 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 <b>%1</b> 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><b>%1</b> thought it's good to shoot their own hedgehogs for <b>%2</b> 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><b>%1</b> killed <b>%2</b> 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><b>%1</b> was scared and skipped turn <b>%2</b> 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 '%1'?</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>'Registered only' 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 '/help' 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 <nickname>, map <name>, 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</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 'heads' or 'tails'</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 <id>: 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 <player>: 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 <message>: Chat action, e.g. '/me eats pizza' becomes '* Player eats pizza'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="16"/>
- <source>/vote <yes/no>: Vote 'yes' or 'no' for active vote</source>
+ <source>/rnd: Flip a virtual coin and reply with 'heads' or 'tails'</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="17"/>
- <source>/greeting <message>: 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 <player>: Surrender room control to player</source>
+ <source>/watch <id>: 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 <N>: 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 <message>: 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 'registered only' 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 <yes/no>: Vote 'yes' or 'no' for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="23"/>
- <source>/save <parameter></source>
+ <source>/delegate <player>: 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 <N>: Limit maximum number of teams to N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="25"/>
- <source>/force <yes/no>: Force vote result for active vote</source>
+ <source>/global <message>: 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 'registered only' 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 <file name>: 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 <file name>: Load room configuration from a file</source>
+ <source>/force <yes/no>: Force vote result for active vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="30"/>
- <source>/delete <parameter></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'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'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'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't remove a team you don'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't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="66"/>
+ <source>You can'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'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'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 'yes' or 'no'.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="83"/>
+ <source>/vote: Please use 'yes' or 'no'.</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'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'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're the new room master!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/servermessages.h" line="39"/>
- <source>Say '/help' 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 <config ID> <config name>: 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 <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="34"/>
+ <source>/saveroom <file name>: 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 <file name>: 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'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'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'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't remove a team you don'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 'yes' or 'no'.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/servermessages.h" line="67"/>
- <source>/vote: Please use 'yes' or 'no'.</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'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'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 <message>: Set greeting message to be shown to players who join the room</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>/delegate <player>: Surrender room control to player</source>
<translation type="unfinished"></translation>
</message>
@@ -4497,10 +4497,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>/save <parameter></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 <file name>: Save room configuration into a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/loadroom <file name>: Load room configuration from a file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>/delete <parameter></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 '/help' 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 <config ID> <config name>: Add current room configuration as votable choice for /callvote map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/delete <config ID>: Delete a votable room configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/saveroom <file name>: Save all votable room configurations (and the greeting) of this room into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>/loadroom <file name>: Load votable room configurations (and greeting) from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>'Registered only' 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 '/help' in chat for a list of commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can't kick yourself!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You can'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're not the room master or a server admin!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You'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'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