merge 0.9.19 in default
authorkoda
Tue, 04 Jun 2013 22:08:17 +0200
changeset 9125 c542f6e3a133
parent 9105 18ebb59c89fe (current diff)
parent 9123 19c57656460f (diff)
child 9127 e350500c4edb
child 9128 19596777eb7a
merge 0.9.19 in default
QTfrontend/KB.h
hedgewars/GL.h
hedgewars/Math.h
hedgewars/SysUtils.h
hedgewars/Types.h
--- a/CMakeLists.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/CMakeLists.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -84,7 +84,7 @@
 set(CPACK_PACKAGE_VERSION_MAJOR 0)
 set(CPACK_PACKAGE_VERSION_MINOR 9)
 set(CPACK_PACKAGE_VERSION_PATCH 19)
-set(HEDGEWARS_PROTO_VER 44)
+set(HEDGEWARS_PROTO_VER 45)
 set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
 
 message(STATUS "Building ${HEDGEWARS_VERSION}-r${HEDGEWARS_REVISION} (${HEDGEWARS_HASH})")
@@ -255,10 +255,10 @@
 #parse additional parameters
 if(FPFLAGS OR GHFLAGS)
     if(${allow_parse_args})
-        message(${WARNING} "FPFLAGS and GHFLAGS are available only when using CMake >= 2.8")
-    else()
         separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS})
         separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
+    else()
+        message(${WARNING} "FPFLAGS and GHFLAGS are available only when using CMake >= 2.8")
     endif()
 endif()
 
--- a/ChangeLog.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/ChangeLog.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -32,7 +32,7 @@
  * Forbid kicking on 1v1 matches
  * Desync fixes
  * Fixed fort mode
- * Making very large maps now works properly with targetted weapons
+ * Making very large maps now works properly with targeted weapons
  * ParseCommand should be safe to use in Lua now, at any time
  * Fixes to many weapons. Mudball, blowtorch, explosives, cluster bomb spread, portal.
 
--- a/QTfrontend/KB.h	Tue Jun 04 23:58:42 2013 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Hedgewars, a free turn based strategy game
- * Copyright (c) 2004-2013 Andrey Korotaev <unC0Rr@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#ifndef KB_H
-#define KB_H
-
-#include <QString>
-
-const ulong KBmsgsCount = 1;
-
-const QString KBMessages[KBmsgsCount] =
-{
-    QT_TRANSLATE_NOOP("KB", "SDL_ttf returned error while rendering text, "
-    "most propably it is related to the bug "
-    "in freetype2. It's recommended to update your "
-    "freetype lib.")
-};
-
-#endif // KB_H
--- a/QTfrontend/res/css/qt.css	Tue Jun 04 23:58:42 2013 +0400
+++ b/QTfrontend/res/css/qt.css	Tue Jun 04 22:08:17 2013 +0200
@@ -176,15 +176,10 @@
 height: 10px;
 }
 
-QLabel {
-overflow: hidden;
-}
-
 QComboBox {
 border-radius: 10px;
 padding: 3px;
 height: 18px;
-overflow: hidden;
 }
 QComboBox:pressed{
 border-color: white;
--- a/QTfrontend/ui/page/pagemain.cpp	Tue Jun 04 23:58:42 2013 +0400
+++ b/QTfrontend/ui/page/pagemain.cpp	Tue Jun 04 22:08:17 2013 +0200
@@ -136,7 +136,7 @@
 #ifdef DEBUG
     setDefaultDescription(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!"));
 #else
-    setDefaultDescription(QLabel::tr("Tip: ") + randomTip());
+    setDefaultDescription(QLabel::tr("Tip: %1").arg(randomTip()));
 #endif
 
 }
--- a/QTfrontend/ui_hwform.cpp	Tue Jun 04 23:58:42 2013 +0400
+++ b/QTfrontend/ui_hwform.cpp	Tue Jun 04 22:08:17 2013 +0200
@@ -56,7 +56,7 @@
     HWForm->setMinimumSize(QSize(720, 450));
     QString title = QMainWindow::tr("Hedgewars %1").arg(*cVersionString);
 #ifdef DEBUG
-    title += QMainWindow::tr("-r%1 (%2)").arg(*cRevisionString, *cHashString);
+    title += QString("-r%1 (%2)").arg(*cRevisionString, *cHashString);
 #endif
     HWForm->setWindowTitle(title);
     centralWidget = new QWidget(HWForm);
--- a/cmake_modules/cpackvars.cmake	Tue Jun 04 23:58:42 2013 +0400
+++ b/cmake_modules/cpackvars.cmake	Tue Jun 04 22:08:17 2013 +0200
@@ -35,6 +35,7 @@
     ".swp"
     #version control
     "\\\\.hg"
+    "\\\\.orig$"
     #output binary/library
     "\\\\.exe$"
     "\\\\.a$"
@@ -53,11 +54,10 @@
     "\\\\.sifz$"
     #misc
     "\\\\.core$"
-    "\\\\.sh$"
-    "\\\\.orig$"
     "\\\\.layout$"
     "\\\\.db$"
     "\\\\.dof$"
+    "\\\\.or$"
     #archives
     "\\\\.zip$"
     "\\\\.gz$"
@@ -68,8 +68,12 @@
     "config\\\\.inc$"
     "hwengine\\\\.desktop$"
     "Info\\\\.plist$"
+    #qt extra files
+    "moc_.*\\\\.cxx_parameters"
+    "\\\\.qrc.depends$"
+    "\\\\.qm$"
     #other cmake generated files
-    "Makefile"
+    "Makefile$"
     "Doxyfile"
     "CMakeFiles"
     "[dD]ebug$"
@@ -85,6 +89,7 @@
 #    "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/frontlib"
 #    "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/cmdlineClient"
     "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge"
+    "^${CMAKE_CURRENT_SOURCE_DIR}/misc/winutils/bin"
     "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/promotional_art"
     "^${CMAKE_CURRENT_SOURCE_DIR}/tools/templates"
     "^${CMAKE_CURRENT_SOURCE_DIR}/tools/drawMapTest"
--- a/hedgewars/GL.h	Tue Jun 04 23:58:42 2013 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-#pragma once
-
-#include <GL/gl.h>
--- a/hedgewars/Math.h	Tue Jun 04 23:58:42 2013 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-#pragma once
-
--- a/hedgewars/SDLh.pas	Tue Jun 04 23:58:42 2013 +0400
+++ b/hedgewars/SDLh.pas	Tue Jun 04 22:08:17 2013 +0200
@@ -35,12 +35,6 @@
 {$ENDIF}
 
 {$IFDEF UNIX}
-    {$IFNDEF DARWIN}
-        {necessary for statically linking physfs (divdi3 undefined on 32 bit)}
-        {$IFDEF CPU32}
-            {$linklib stdc++}
-        {$ENDIF}
-    {$ENDIF}
     {$IFDEF HAIKU}
         {$linklib root}
     {$ELSE}
--- a/hedgewars/uPhysFSLayer.pas	Tue Jun 04 23:58:42 2013 +0400
+++ b/hedgewars/uPhysFSLayer.pas	Tue Jun 04 22:08:17 2013 +0200
@@ -11,18 +11,8 @@
     {$linklib physlayer}
 
     {statically linking physfs brings IOKit dependency on OSX}
-    {divdi3 is found in stdc++ on linux x86 and in gcc_s.1 on osx ppc32}
-    {$IFDEF PHYSFS_INTERNAL}
-        {$IFDEF DARWIN}
-            {$linkframework IOKit}
-            {$IFDEF CPU32}
-                {$linklib gcc_s.1}
-            {$ENDIF}
-        {$ELSE}
-            {$IFDEF CPU32}
-                {$linklib stdc++}
-            {$ENDIF}
-        {$ENDIF}
+    {$IFDEF DARWIN}
+        {$linkframework IOKit}
     {$ENDIF}
 {$ENDIF}
 
--- a/misc/libphysfs/CMakeLists.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/misc/libphysfs/CMakeLists.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -35,6 +35,15 @@
 include(CheckCSourceCompiles)
 
 
+# 32bit platforms won't link unless this is set
+# although Windows doesn't like it
+if(NOT WINDOWS)
+    if(CMAKE_SIZEOF_VOID_P LESS 8)
+        add_definitions(-DPHYSFS_NO_64BIT_SUPPORT=1)
+    endif(CMAKE_SIZEOF_VOID_P LESS 8)
+endif(NOT WINDOWS)
+
+
 if(MACOSX)
     # Fallback to older OS X on PowerPC to support wider range of systems...
     if(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
--- a/misc/libphysfs/physfs_internal.h	Tue Jun 04 23:58:42 2013 +0400
+++ b/misc/libphysfs/physfs_internal.h	Tue Jun 04 22:08:17 2013 +0200
@@ -322,8 +322,13 @@
 #define __PHYSFS_ARRAYLEN(x) ( (sizeof (x)) / (sizeof (x[0])) )
 
 #ifdef PHYSFS_NO_64BIT_SUPPORT
-#define __PHYSFS_SI64(x) ((PHYSFS_sint64) (x))
-#define __PHYSFS_UI64(x) ((PHYSFS_uint64) (x))
+/* if a 32bit compiler sees something with this many bits: 0xFFFFFFFFFFFFFFFF
+ *  it doesn't know if it really means 64bit or if it's supposed to squeeze
+ *  it into 32 bit, so without the ULL it squeezes the number to 32 bit,
+ *  with it it forces it to be 64bits
+ */
+#define __PHYSFS_SI64(x) ((PHYSFS_sint64) (x##LL))
+#define __PHYSFS_UI64(x) ((PHYSFS_uint64) (x##ULL))
 #elif (defined __GNUC__)
 #define __PHYSFS_SI64(x) x##LL
 #define __PHYSFS_UI64(x) x##ULL
--- a/share/hedgewars/Data/Locale/de.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/de.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -120,22 +120,22 @@
 02:00=Schlecht, schlecht, %1 …
 02:00=%1 sollte lieber WarMUX spielen
 02:00=%1 hat versucht, die Kugeln mit den Zähnen zu fangen
-02:00=%1 findet seinen Platz in der Walhall
+02:00=%1 findet einen Platz in der Walhall
 02:00=%1 geht den Weg der Dinosaurier
 02:00=%1 bringt die Igelspezies einen Schritt näher zum Aussterben
 02:00=%1 wird vermisst werden
 02:00=%1 ist ab jetzt ein Ex-Igel
 02:00=%1 sieht sich die Radieschen von unten an
-02:00=%1 hat aufgehört, zu sein
+02:00=%1 hat aufgehört zu existieren
 02:00=Verabschieden Sie sich von %1
 02:00=Für %1 gibt es keine Hoffnung mehr
 02:00=%1 trat von der Lebensbühne ab
 02:00=%1 erleidet ein spontanes multiples Organversagen
 02:00=%1 ist mausetot
-02:00=%1s Lebensuhr ist abgelaufen
+02:00=Für %1 ist die Lebensuhr abgelaufen
 02:00=Beraubt des Lebens, ruht %1 in Frieden
 02:00=%1 hatte eine geringe Schadenstoleranz
-02:00=%1 hat all seine Extraleben aufgebraucht
+02:00=%1 hat alle Extraleben aufgebraucht
 02:00=Ist ein Arzt im Haus?!
 02:00=%1 ist tot
 02:00=%1 ist hinüber
@@ -143,6 +143,13 @@
 02:00=Schade um %1
 02:00=Wir trauern um %1
 02:00=%1 beißt ins Gras
+02:00=%1 ist jetzt im Igel-Himmel
+02:00=%1 spielt nicht mehr mit
+02:00=%1 ist ausgeschieden
+02:00=Hat %1 eigentlich ein Testament gemacht?
+02:00=%1 spürt keinen Schmerz mehr
+02:00=%1 muss nicht mehr leiden
+02:00=%1 hat eine Abkürzung gefunden …
 
 ; Hog (%1) drowned
 02:01=%1 geht auf Tauchstation!
@@ -163,30 +170,29 @@
 02:01=%1 geht unter die Perlentaucher!
 02:01=%1 über Bord!
 02:01=%1 verlässt das sinkende Schiff
-02:01=%1 überschätzt seinen Auftrieb!
+02:01=%1 überschätzt den eigenen Auftrieb!
 02:01=%1 erliegt dem Sog der Tiefe!
 02:01=%1 geht der Sache auf den Grund!
 02:01=%1 wäre fast verdurstet!
 02:01=%1 macht »Gluck, gluck, gluck!«
 02:01=%1 macht »Platsch!«
-02:01=%1 vergaß seine Schwimmflügel
+02:01=%1 hätte die Schwimmflügel diesmal nicht zu Hause lassen sollen
 02:01=%1 hätte Schwimmunterricht nehmen sollen
-02:01=%1 ließ sein Surfbrett zu Hause
+02:01=%1 ließ das Surfbrett zu Hause
 02:01=%1 wird gewaschen
 02:01=%1 ist ein nasser Igel
-02:01=%1 hat seine Schwimmweste vergessen
+02:01=%1 hat die Schwimmweste vergessen
 02:01=%1 macht »Plitsch-platsch!«
 02:01=%1 sieht durstig aus
 02:01=%1 ist auf dem Meer verschollen
 02:01=%1 bekommt eine Seebestattung
-02:01=%1 übt sein Rückenschwimmen
-02:01=%1 geht auf der Suche nach der Titanic
+02:01=%1 übt Rückenschwimmen
 02:01=%1 ist nicht Jesus
 02:01=%1 hat ein Leck
 02:01=Wie viele Igel wohl da unten liegen?
 02:01=%1 macht das Meer etwas höher
 02:01=%1 ist absolut nicht Marinetauglich
-02:01=%1 glaubt, er sei ein Fisch
+02:01=%1 hält sich für einen Fisch
 02:01=Wenigstens ging die Sache nicht ins Klo, %1!
 02:01=Sonic konnte nicht schwimmen, %1 auch nicht
 02:01=%1 spielt »Flipper der Delphin«
@@ -203,6 +209,15 @@
 02:01=%1, Igel, der mit dem Blubb
 02:01=Nächster Halt: Meeresgrund
 02:01=%1 hätte den Schwimmkurs nicht schwänzen sollen
+02:01=Fischers Fritze fischt frische ... Igel?!
+02:01=Grüß die Fische von uns, %1!
+02:01=%1 erkundet das Meer
+02:01=%1 folgt dem Ruf der Meere
+02:01=%1 ist jetzt ein Seeigel!
+02:01=Igel haben keine Kiemen, %1!
+02:01=%1 lässt sich diese  einmalige  Tauchgelegenheit nicht entgehen
+02:01=Und wir dachten %1 könnte nicht noch tiefer sinken …
+02:01=%1 zieht eine Etage tiefer
 
 ; Round starts
 02:02=Auf in die Schlacht!
@@ -272,6 +287,8 @@
 02:05=Vorräte!
 02:05=Ein Erste-Hilfe-Koffer!
 02:05=Ein Grund zur Hoffnung!
+02:05=Frisch aus dem Jungbrunnen
+02:05=Lebenszeit in Kisten
 
 ; New ammo crate
 02:06=Nachschub!
@@ -295,6 +312,10 @@
 02:06=Lassen Sie nicht zu, dass sich der Feind sie holt!
 02:06=Schönes neues Spielzeug!
 02:06=Eine geheimnisvolle Kiste!
+02:06=Ein eckiges Ü-Ei!
+02:06=Die Holzkiste der Pandora!
+02:06=Willst du mit mir spielen?
+02:06=Quadratisch, praktisch, … gefährlich?
 
 ; New utility crate
 02:07=Nützliches?
@@ -307,6 +328,7 @@
 02:07=Dies sollte gut sein!
 02:07=Verwenden Sie diese mit Bedacht
 02:07=Uff, diese Box ist schwer
+02:07=Futter für Strategen
 
 ; Hog (%1) skips his turn
 02:08=%1 ist so ein Langeweiler …
@@ -346,6 +368,15 @@
 02:08=%1 hat sich fast zu Tode erschrocken
 02:08=%1 ist eingeschlafen
 02:08=%1 ist wohl nur aus Versehen hier
+02:08=%1 steckt den Kopf in den Sand
+02:08=%1 spielt lieber Skat
+02:08=%1 guckt zu
+02:08=%1 vertraut auf das Karma
+02:08=%1 igelt sich ein
+02:08=%1 zählt Schäfchen
+02:08=%1 lässt sich die Sonne auf den Bauch scheinen
+02:08=%1 genießt die Stille
+02:08=%1 fragt sich ob es schon Zeit für den Winterschlaf ist
 
 ; Hog (%1) hurts himself only
 02:09=%1 sollte lieber zielen üben!
@@ -355,20 +386,17 @@
 02:09=%1 hat keinen Selbsterhaltungstrieb
 02:09=%1 ist durcheinander
 02:09=%1 vermasselt’s
-02:09=Das war ein schlechter Schuss, %1
+02:09=Das hat wohl nicht ganz geklappt, %1
 02:09=%1 geht ein wenig zu sorglos mit gefährlichen Waffen um
 02:09=%1 sollte eine Änderung der Laufbahn betrachten
-02:09=Das. War. Schlecht!
 02:09=Nein, nein, nein, %1, Sie müssen auf den Feind schießen!
 02:09=%1 bewegt sich einen Schritt näher zum Selbstmord
 02:09=%1, Helfer des Feindes
-02:09=Das war dumm, %1
+02:09=%1 hatte das anders geplant
 02:09=%1 lebt nach dem Mantra des »Ohne Schmerz kein Sieg!«
 02:09=%1 ist verwirrt
-02:09=%1 ist geistig verwirrt
 02:09=%1 verletzt sich selbst
 02:09=%1 blamiert sich!
-02:09=%1 ist ein Trottel!
 02:09=%1 ist ungeschickt
 02:09=%1 zeigt dem Feind, wozu er fähig ist
 02:09=%1 ist nicht perfekt
@@ -378,8 +406,15 @@
 02:09=Wie peinlich!
 02:09=Ich hoffe, dass das niemand gesehen hat, %1
 02:09=%1 sollte dringend die Gebrauchsanweisung noch einmal durchlesen
-02:09=%1s hat eindeutig versagt
 02:09=%1s Schuss ging nach hinten los!
+02:09=%1 macht sich mit den Waffen vertraut
+02:09=%1 schießt ein Eigentor
+02:09=%1 kennt keinen Schmerz
+02:09=%1 mag Bumerangs und Jo-Jos
+02:09=Wer Anderen eine Grube gräbt …
+02:09=%1 wird vom Pech verfolgt
+02:09=Auch %1 macht mal Fehler
+02:09=Hoppla?!
 
 ; Hog (%1) shot an home run (using the bat and another hog)
 02:10=Home Run!
@@ -389,6 +424,10 @@
 02:10=%1 vor, noch ein Tor!
 02:10=Ausgezeichnet, %1!
 02:10=Bravo, %1!
+02:10=Sehr sportlich, %1!
+02:10=Flieg, Iglein, flieg!
+02:10=%1 lässt Igel fliegen
+02:10=%1 ist Physikstudent
 
 ; Hog (%1) has to leave (team is gone)
 02:11=%1 muss ins Bett!
@@ -406,6 +445,10 @@
 02:11=%1 verschwindet
 02:11=%1 ist futsch
 02:11=%1 hat wohl besseres zu tun
+02:11=%1 löst sich in Luft auf
+02:11=%1 bringt den Müll raus
+02:11=%1 flieht
+02:11=%1 braucht Urlaub
 
 ; Weapon Categories
 03:00=Zeitzünder-Granate
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts	Tue Jun 04 22:08:17 2013 +0200
@@ -939,7 +939,7 @@
     </message>
     <message>
         <source>Play a game across a network</source>
-        <translation>Spiele über ein Netwerk</translation>
+        <translation>Spiele über ein Netzwerk</translation>
     </message>
     <message>
         <source>Read about who is behind the Hedgewars Project</source>
@@ -2154,7 +2154,7 @@
     </message>
     <message>
         <source>Netgame - Error</source>
-        <translation>Netwerkspiel - Fehler</translation>
+        <translation>Netzwerkspiel - Fehler</translation>
     </message>
     <message>
         <source>Please select a server from the list</source>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts	Tue Jun 04 22:08:17 2013 +0200
@@ -100,19 +100,19 @@
     </message>
     <message>
         <source>We are always happy about suggestions, ideas, or bug reports.</source>
-        <translation type="unfinished"></translation>
+        <translation>Estamos sempre abertos a novas sugestões, ideias, ou submissões de bugs encontrados.</translation>
     </message>
     <message>
         <source>Send us feedback!</source>
-        <translation type="unfinished"></translation>
+        <translation>Envia-nos feedback!</translation>
     </message>
     <message>
         <source>If you found a bug, you can see if it&apos;s already been reported here: </source>
-        <translation type="unfinished"></translation>
+        <translation>Se encontraste um bug, podes verificar se já foi submetido aqui: </translation>
     </message>
     <message>
         <source>Your email address is optional, but necessary if you want us to get back at you.</source>
-        <translation type="unfinished"></translation>
+        <translation>O teu e-mail é opcional, mas necessário se quiseres que te contactemos de volta.</translation>
     </message>
 </context>
 <context>
@@ -195,18 +195,18 @@
     </message>
     <message>
         <source>Scheme &apos;%1&apos; not supported</source>
-        <translation type="unfinished"></translation>
+        <translation>Esquema &apos;%1&apos; não suportado</translation>
     </message>
     <message>
         <source>Cannot create directory %1</source>
-        <translation type="unfinished">Não foi possível criar o diretório %1</translation>
+        <translation>Não foi possível criar o diretório %1</translation>
     </message>
     <message>
         <source>Failed to open data directory:
 %1
 
 Please check your installation!</source>
-        <translation type="unfinished">Erro ao abrir o diretório:
+        <translation>Erro ao abrir o diretório:
 %1
 
 Por favor verifica a tua instalação!</translation>
@@ -263,15 +263,15 @@
     </message>
     <message>
         <source>%1 has joined</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 entrou</translation>
     </message>
     <message>
         <source>%1 has left</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 saíu</translation>
     </message>
     <message>
         <source>%1 has left (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 saíu (%2)</translation>
     </message>
 </context>
 <context>
@@ -384,7 +384,7 @@
     </message>
     <message>
         <source>This page requires an internet connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esta página requer ligação à internet</translation>
     </message>
 </context>
 <context>
@@ -526,7 +526,7 @@
     </message>
     <message>
         <source>Theme: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Tema: %1</translation>
     </message>
 </context>
 <context>
@@ -606,15 +606,18 @@
 
 If you don&apos;t have an account on www.hedgewars.org,
 just enter your nickname.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor faz login para aceder ao servidor.
+		
+Se ainda não tens uma conta em www.hedgewars.org,
+simplesmente insere o teu nome de utilizador.</translation>
     </message>
     <message>
         <source>Nickname:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utilizador:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>Password:</translation>
     </message>
 </context>
 <context>
@@ -770,11 +773,11 @@
     <name>PageDataDownload</name>
     <message>
         <source>Loading, please wait.</source>
-        <translation type="unfinished"></translation>
+        <translation>A carregar, aguarda por favor.</translation>
     </message>
     <message>
         <source>This page requires an internet connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esta página requer ligação à internet.</translation>
     </message>
 </context>
 <context>
@@ -921,11 +924,11 @@
     </message>
     <message>
         <source>Play again</source>
-        <translation type="unfinished"></translation>
+        <translation>Jogar novamente</translation>
     </message>
     <message>
         <source>Save</source>
-        <translation type="unfinished">Gravar</translation>
+        <translation>Gravar</translation>
     </message>
 </context>
 <context>
@@ -1035,11 +1038,11 @@
     <name>PageNetServer</name>
     <message>
         <source>Click here for details</source>
-        <translation type="unfinished"></translation>
+        <translation>Clica aqui para detalhes</translation>
     </message>
     <message>
         <source>Insert your address here</source>
-        <translation type="unfinished"></translation>
+        <translation>Insere aqui o teu endereço</translation>
     </message>
 </context>
 <context>
@@ -1996,7 +1999,7 @@
     </message>
     <message>
         <source>This setting will be effective at next restart.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esta opção entrará em efeito quando o jogo for reiniciado.</translation>
     </message>
 </context>
 <context>
@@ -2385,23 +2388,23 @@
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished"></translation>
+        <translation>Repor</translation>
     </message>
     <message>
         <source>Set the default server port for Hedgewars</source>
-        <translation type="unfinished"></translation>
+        <translation>Define a porta por omisão do servidor Hedgewars</translation>
     </message>
     <message>
         <source>Invite your friends to your server in just 1 click!</source>
-        <translation type="unfinished"></translation>
+        <translation>Convida os teus amigos para o teu servidor com apenas 1 click!</translation>
     </message>
     <message>
         <source>Click to copy your unique server URL in your clipboard. Send this link to your friends ands and they will be able to join you.</source>
-        <translation type="unfinished"></translation>
+        <translation>Clica para copiar o URL do teu servidor. Partilha este link com os teus amigos para que se possam juntar a ti.</translation>
     </message>
     <message>
         <source>Start private server</source>
-        <translation type="unfinished"></translation>
+        <translation>Iniciar o servidor privado</translation>
     </message>
 </context>
 <context>
@@ -2516,19 +2519,20 @@
     <name>TCPBase</name>
     <message>
         <source>Unable to start server at %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Não foi possível iniciar o servidor em %1.</translation>
     </message>
     <message>
         <source>Unable to run engine at %1
 Error code: %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Não foi possível iniciar o motor de jogo em %1
+Código de erro:: %2</translation>
     </message>
 </context>
 <context>
     <name>TeamSelWidget</name>
     <message>
         <source>At least two teams are required to play!</source>
-        <translation type="unfinished"></translation>
+        <translation>São necessárias pelo menos 2 equipas (para jogar)!</translation>
     </message>
 </context>
 <context>
--- a/share/hedgewars/Data/Locale/missions_en.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/missions_en.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -49,5 +49,5 @@
 User_Mission_-_RCPlane_Challenge.name=Challenge: RC Plane
 User_Mission_-_RCPlane_Challenge.desc="Feeling pretty confident, eh, flyboy?"
 
-portal.name= Mission: Portal training mission
+portal.name=Mission: Portal Mind Challenge
 portal.desc="Use the portal to move fast and far, use it to kill, use it with caution!"
--- a/share/hedgewars/Data/Locale/missions_fr.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/missions_fr.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -45,3 +45,6 @@
 
 User_Mission_-_RCPlane_Challenge.name=Challenge: Avion télécommandé
 User_Mission_-_RCPlane_Challenge.desc="Plutôt confiant, hein, aviateur ?"
+
+portal.name=Portal Casse Tête
+portal.desc="Utilisez le fusil à portail pour voyager loin et rapidemment ou pour tuer ! Utiliser avec prudence !"
--- a/share/hedgewars/Data/Locale/pt_PT.lua	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/pt_PT.lua	Tue Jun 04 22:08:17 2013 +0200
@@ -779,7 +779,7 @@
 	["TIME: "] = "TEMPO: ",
 --      ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope
 	["Toggle Shield"] = "Ligar\Desligar Escudo",
---      ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey
+	["To help you, of course!"] = "Para te ajudar claro!", -- A_Classic_Fairytale:journey
 --      ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow
 --      ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey
 --      [" to save the village."] = "", -- A_Classic_Fairytale:dragon
@@ -848,14 +848,14 @@
 --      ["We have to unite and defeat those cylergs!"] = "Temos de nos unir e derrotar estes ciber-pernudos!", -- A_Classic_Fairytale:enemy
 	["Welcome, Leaks A Lot!"] = "Bem vindo, Leaks a Lot!", -- A_Classic_Fairytale:journey
 	["Well done."] = "Bom trabalho.",
---      ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy
+	["We'll give you a problem then!"] = "Nós arranjamos-te um problema então!", -- A_Classic_Fairytale:enemy
 --      ["We'll spare your life for now!"] = "Vamos poupar a tua vida para ja!", -- A_Classic_Fairytale:backstab
 --      ["Well, that was a waste of time."] = "Bem, isto foi um desperdicio de tempo.", -- A_Classic_Fairytale:dragon
---      ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey
---      ["Well, yes. This was a cyborg television show."] = "Bem, claro. Isto era um programa de televisão para cyborgs.", -- A_Classic_Fairytale:enemy
---      ["We made sure noone followed us!"] = "Certificamo-nos que ninguem nos seguiu!", -- A_Classic_Fairytale:backstab
---      ["We need to move!"] = "Temos de nos mover!", -- A_Classic_Fairytale:united
---      ["We need to prevent their arrival!"] = "Temos de prevenir que cheguem!", -- A_Classic_Fairytale:backstab
+--      ["Well, well! Isn't that the cutest thing you've ever seen?"] = "Bem, bem! Não isto é coisa mais fofa que já alguma vez viste?", -- A_Classic_Fairytale:journey
+	["Well, yes. This was a cyborg television show."] = "Bem, claro. Isto era um programa de televisão para cyborgs.", -- A_Classic_Fairytale:enemy
+	["We made sure noone followed us!"] = "Certificá-mo-nos que ninguém nos seguiu! que ninguem nos seguiu!", -- A_Classic_Fairytale:backstab
+	["We need to move!"] = "Temos de ir!", -- A_Classic_Fairytale:united
+--      ["We need to prevent their arrival!"] = "Temos de prevenir a sua chegada!", -- A_Classic_Fairytale:backstab
 	["We need to warn the village."] = "Temos de avisar a aldeia.", -- A_Classic_Fairytale:shadow
 --      ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow
 --      ["We were trying to save her and we got lost."] = "Estavamos a tentar salva-la e acabamos por nos perder.", -- A_Classic_Fairytale:family
@@ -863,18 +863,18 @@
 --      ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "O quê? Um canibal? Aqui? Não ha tempo a perder! Vem, estás preparado.", -- A_Classic_Fairytale:first_blood
 	["What a douche!"] = "Que otário!", -- A_Classic_Fairytale:enemy
 --      ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family
---      ["What are you doing at a distance so great, young one?"] = "O que estás a tão grande distancia, jovem?", -- A_Classic_Fairytale:first_blood
+--      ["What are you doing at a distance so great, young one?"] = "O que estás a fazer a tão grande distancia, jovem?", -- A_Classic_Fairytale:first_blood
 --      ["What are you doing? Let her go!"] = "Que estás a fazer? Larga-a!", -- A_Classic_Fairytale:journey
 	["What a ride!"] = "Que viagem!", -- A_Classic_Fairytale:shadow
 	["What a strange cave!"] = "Que caverna estranha!", -- A_Classic_Fairytale:dragon
---      ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab
+--      ["What a strange feeling!"] = "Tenho um mau persentimento!", -- A_Classic_Fairytale:backstab
 	["What do my faulty eyes observe? A spy!"] = "O que vêm observam os meus defeituoso olhos? Um espião!", -- A_Classic_Fairytale:first_blood
 --      ["Whatever floats your boat..."] = "O que quer que seja que faz o teu barco flutuar... (preciso melhor expressão verdadeiramente portuguesa)", -- A_Classic_Fairytale:shadow
 	[" What !! For all of this struggle i just win some ... TIME o0"] = " O quê !! Por todo este esforço tudo o que ganho é ... TEMPO o0", -- portal
 --      ["What has "] = "Foi aquilo ", -- A_Classic_Fairytale:backstab
 	["What? Here? How did they find us?!"] = "O quê? Aqui? Como raio nos encontraram?!", -- A_Classic_Fairytale:backstab
 --      ["What is this place?"] = "O que é este sitio?\Que (raio de) sitio é este?", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy
---      ["What shall we do with the traitor?"] = "O que fazemos com o traidor?", -- A_Classic_Fairytale:backstab
+	["What shall we do with the traitor?"] = "O que fazemos com o traidor?", -- A_Classic_Fairytale:backstab
 --      ["WHAT?! You're the ones attacking us!"] = "O QUÊ?! Voces é que nos atacaram\estão a atacar!", -- A_Classic_Fairytale:enemy
 	["When?"] = "Quando?", -- A_Classic_Fairytale:enemy
 	["When I find it..."] = "Quando o encontrar...", -- A_Classic_Fairytale:dragon
--- a/share/hedgewars/Data/Locale/pt_PT.txt	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Locale/pt_PT.txt	Tue Jun 04 22:08:17 2013 +0200
@@ -78,7 +78,7 @@
 01:16=Pouco
 01:17=Normal
 01:18=Muito
-01:19=Excessivo
+01:19=Imenso
 01:20=Ressalto: %1
 01:21=Áudio Silenciado
 
--- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua	Tue Jun 04 22:08:17 2013 +0200
@@ -402,7 +402,8 @@
   if progress and progress<6 then
     SaveCampaignVar("Progress", "6")
   end
-  ParseCommand("teamgone " .. loc("011101001"))
+  RestoreHedge(cyborg)
+  DeleteGear(cyborg)
   TurnTimeLeft = 0
 end
 
@@ -421,8 +422,8 @@
 end
 
 function EndMission()
-  ParseCommand("teamgone " .. loc("Natives"))
-  ParseCommand("teamgone " .. loc("011101001"))
+  RestoreHedge(cyborg)
+  DeleteGear(cyborg)
   TurnTimeLeft = 0
 end
 
--- a/share/hedgewars/Data/misc/hedgewars.desktop	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/misc/hedgewars.desktop	Tue Jun 04 22:08:17 2013 +0200
@@ -1,7 +1,6 @@
 [Desktop Entry]
 Type=Application
 Version=1.0
-Encoding=UTF-8
 Name=Hedgewars
 GenericName=Fighting Hedgehogs
 GenericName[de]=Kämpfende Igel
--- a/share/hedgewars/Data/misc/hwengine.desktop.in	Tue Jun 04 23:58:42 2013 +0400
+++ b/share/hedgewars/Data/misc/hwengine.desktop.in	Tue Jun 04 22:08:17 2013 +0200
@@ -1,7 +1,6 @@
 [Desktop Entry]
 Type=Application
 Version=1.0
-Encoding=UTF-8
 Name=Hedgewars Engine
 GenericName=Hedgewars engine, for playback of saves and demos
 GenericName[de]=Hedgewars engine, für die Wiedergabe von gespeicherten Spielen und Demos
--- a/tools/build_windows.bat	Tue Jun 04 23:58:42 2013 +0400
+++ b/tools/build_windows.bat	Tue Jun 04 22:08:17 2013 +0200
@@ -40,7 +40,8 @@
 
 echo Running cmake...
 set ERRORLEVEL=
-cmake . -G "MinGW Makefiles" -DPNG_LIBRARY="%CD%\misc\winutils\bin\libpng13.dll" -DCMAKE_BUILD_TYPE="%BUILD_TYPE%" -DCMAKE_PREFIX_PATH="%CD%\misc\winutils\" ::prefix should be last
+cmake . -G "MinGW Makefiles" -DPNG_LIBRARY="%CD%\misc\winutils\bin\libpng13.dll" -DCMAKE_BUILD_TYPE="%BUILD_TYPE%" -DCMAKE_PREFIX_PATH="%CD%\misc\winutils\\"
+:: prefix should be last
 
 if %ERRORLEVEL% NEQ 0 goto exitpoint