Merge ios-revival
authorantonc27 <antonc27@mail.ru>
Tue, 17 Nov 2015 15:12:24 +0100
branchios-revival
changeset 11412 7ed8fa4a2b6a
parent 11393 1ae8d4582e1e (current diff)
parent 11411 2d659747b991 (diff)
child 11413 55fc715435ea
Merge
.hgtags
--- a/.hgtags	Sun Nov 15 14:42:59 2015 +0100
+++ b/.hgtags	Tue Nov 17 15:12:24 2015 +0100
@@ -71,3 +71,7 @@
 4c4f22cc3fa4e6c1e5cd6cce35350dd93478415f 0.9.22-release
 9621fdcad96589b3fd78713a0f31e72f26f068bb 0.9.22-release
 a0163b8302c592aac60d98134bb6730f390fcaad Hedgewars-iOS-2.0
+7e55468ffe384a3065524c483eb5e3cdb1658fd5 fab746a3597e
+0000000000000000000000000000000000000000 fab746a3597e
+d9622394ec9c2974a84b9b4d9e6c0ac26c4060ff 0.9.22-RC
+0000000000000000000000000000000000000000 0.9.22-RC
--- a/.travis.yml	Sun Nov 15 14:42:59 2015 +0100
+++ b/.travis.yml	Tue Nov 17 15:12:24 2015 +0100
@@ -17,7 +17,7 @@
 before_install:
   - sudo add-apt-repository -y ppa:zoogie/sdl2-snapshots
   - sudo apt-get update -qq
-  - sudo apt-get install debhelper cmake dpkg-dev libqt4-dev qt4-qmake libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-parsec3-dev libghc-bytestring-show-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-stm-dev libghc-network-dev libghc-dataenc-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev liblua5.1-0-dev imagemagick fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev
+  - sudo apt-get install debhelper cmake dpkg-dev libqt4-dev qt4-qmake libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-parsec3-dev libghc-bytestring-show-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-stm-dev libghc-network-dev libghc-dataenc-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev liblua5.1-0-dev imagemagick fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev libglew1.6-dev
 script: 
   - mkdir build && cd build && cmake $BUILD_ARGS .. && make VERBOSE=1 && make test_verbose
 notifications:
--- a/CMakeLists.txt	Sun Nov 15 14:42:59 2015 +0100
+++ b/CMakeLists.txt	Tue Nov 17 15:12:24 2015 +0100
@@ -118,18 +118,18 @@
     endif()
 endif()
 
-list(APPEND haskell_flags ${ghflags_parsed} "-O2")
 
 #get BUILD_TYPE and enable/disable optimisation
 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
 if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
     list(APPEND haskell_flags "-Wall"       # all warnings
                               "-debug"      # debug mode
-                              "-dcore-lint" # internal sanity check
                               "-fno-warn-unused-do-bind"
+                              "-O0"
                               )
 else()
     list(APPEND haskell_flags "-w" # no warnings
+                              "-O2"
                               )
 endif()
 
--- a/gameServer/OfficialServer/Glicko2.hs	Sun Nov 15 14:42:59 2015 +0100
+++ b/gameServer/OfficialServer/Glicko2.hs	Tue Nov 17 15:12:24 2015 +0100
@@ -15,7 +15,7 @@
     }
 
 τ, ε :: Double
-τ = 0.3
+τ = 0.2
 ε = 0.000001
 
 g_φ :: Double -> Double
@@ -35,13 +35,13 @@
         g_φᵢ = g_φ φᵢ
 
 
-calcNewRating :: RatingData -> [GameData] -> RatingData
-calcNewRating oldRating [] = RatingData (ratingValue oldRating) (173.7178 * sqrt (φ ^ 2 + σ ^ 2)) σ
+calcNewRating :: RatingData -> [GameData] -> (Int, RatingData)
+calcNewRating oldRating [] = (0, RatingData (ratingValue oldRating) (173.7178 * sqrt (φ ^ 2 + σ ^ 2)) σ)
     where
         φ = rD oldRating / 173.7178
         σ = volatility oldRating
 
-calcNewRating oldRating games = RatingData (173.7178 * μ' + 1500) (173.7178 * sqrt φ'sqr) σ'
+calcNewRating oldRating games = (length games, RatingData (173.7178 * μ' + 1500) (173.7178 * sqrt φ'sqr) σ')
     where
         _Es = map (calcE oldRating) games
         υ = 1 / sum (map υ_p _Es)
--- a/gameServer/OfficialServer/updateRating.hs	Sun Nov 15 14:42:59 2015 +0100
+++ b/gameServer/OfficialServer/updateRating.hs	Tue Nov 17 15:12:24 2015 +0100
@@ -37,14 +37,13 @@
         \     LEFT OUTER JOIN rating_values as vo ON (vo.epoch = e.epoch AND vo.userid = o.userid) \
         \ GROUP BY p.userid, p.gameid, p.place \
         \ ORDER BY p.userid"
-insertNewRatings = "INSERT INTO rating_values (userid, epoch, rating, rd, volatility) VALUES (?, ?, ?, ?, ?)"
+insertNewRatings = "INSERT INTO rating_values (userid, epoch, rating, rd, volatility, games) VALUES (?, ?, ?, ?, ?, ?)"
 insertNewEpoch = "INSERT INTO rating_epochs (epoch, todatetime) VALUES (?, ?)"
 
 mergeRatingData :: Map.Map Int (RatingData, [GameData]) -> [(Int, (RatingData, [GameData]))] -> Map.Map Int (RatingData, [GameData])
-mergeRatingData m s = foldr (unc0rry (Map.insertWith mf)) m s
+mergeRatingData m s = foldr (uncurry (Map.insertWith mf)) m s
     where
         mf (rd, gds) (_, gds2) = (rd, gds ++ gds2)
-        unc0rry f (a, b) c = f a b c
 
 calculateRatings dbConn = do
     [(epochNum :: Int, fromDate :: UTCTime, toDate :: UTCTime)] <- query_ dbConn queryEpochDates
@@ -55,7 +54,7 @@
     execute dbConn insertNewEpoch (epochNum + 1, toDate)
     return ()
     where
-        toInsert e (i, RatingData r rd v) = (i, e + 1, r, rd, v)
+        toInsert e (i, (g, RatingData r rd v)) = (i, e + 1, r, rd, v, g)
         getNewRating (a, d) = (a, uncurry calcNewRating d)
         convPlace :: Int -> Double
         convPlace 0 = 0.5
--- a/hedgewars/CMakeLists.txt	Sun Nov 15 14:42:59 2015 +0100
+++ b/hedgewars/CMakeLists.txt	Tue Nov 17 15:12:24 2015 +0100
@@ -178,18 +178,6 @@
 list(APPEND HW_LINK_LIBS physlayer)
 
 
-#Mix_Init/Mix_Quit from SDL_mixer 1.2.10
-check_library_exists(${SDL2MIXER_LIBRARY} Mix_Init "" HAVE_MIXINIT)
-if(HAVE_MIXINIT)
-    add_definitions(-dSDL_MIXER_NEWER)
-endif(HAVE_MIXINIT)
-
-#IMG_Init/IMG_Quit from SDL_image 1.2.8
-check_library_exists(${SDL2IMAGE_LIBRARY} IMG_Init "" HAVE_IMGINIT)
-if(HAVE_IMGINIT)
-    add_definitions(-dSDL_IMAGE_NEWER)
-endif(HAVE_IMGINIT)
-
 #opengl 2
 IF(GL2)
     add_definitions(-dGL2)
--- a/hedgewars/SDLh.pas	Sun Nov 15 14:42:59 2015 +0100
+++ b/hedgewars/SDLh.pas	Tue Nov 17 15:12:24 2015 +0100
@@ -1168,8 +1168,8 @@
 procedure TTF_CloseFont(font: PTTF_Font); cdecl; external SDL_TTFLibName;
 
 (*  SDL_mixer  *)
-function  Mix_Init(flags: LongInt): LongInt; {$IFDEF SDL_MIXER_NEWER}cdecl; external SDL_MixerLibName{$ELSE}inline{$ENDIF};
-procedure Mix_Quit; {$IFDEF SDL_MIXER_NEWER}cdecl; external SDL_MixerLibName{$ELSE}inline{$ENDIF};
+function  Mix_Init(flags: LongInt): LongInt; cdecl; external SDL_MixerLibName;
+procedure Mix_Quit; cdecl; external SDL_MixerLibName;
 
 function  Mix_OpenAudio(frequency: LongInt; format: Word; channels: LongInt; chunksize: LongInt): LongInt; cdecl; external SDL_MixerLibName;
 procedure Mix_CloseAudio; cdecl; external SDL_MixerLibName;
@@ -1204,8 +1204,8 @@
 procedure Mix_SetPostMix( mix_func: TPostMix; arg: Pointer); cdecl; external SDL_MixerLibName;
 
 (*  SDL_image  *)
-function  IMG_Init(flags: LongInt): LongInt; {$IFDEF SDL_IMAGE_NEWER}cdecl; external SDL_ImageLibName{$ELSE}inline{$ENDIF};
-procedure IMG_Quit; {$IFDEF SDL_IMAGE_NEWER}cdecl; external SDL_ImageLibName{$ELSE}inline{$ENDIF};
+function  IMG_Init(flags: LongInt): LongInt; cdecl; external SDL_ImageLibName;
+procedure IMG_Quit; cdecl; external SDL_ImageLibName;
 
 function  IMG_Load(const _file: PChar): PSDL_Surface; cdecl; external SDL_ImageLibName;
 function  IMG_Load_RW(rwop: PSDL_RWops; freesrc: LongBool): PSDL_Surface; cdecl; external SDL_ImageLibName;
@@ -1257,28 +1257,6 @@
         ((surface^.flags and SDL_RLEACCEL) <> 0)
 end;
 
-{$IFNDEF SDL_MIXER_NEWER}
-function  Mix_Init(flags: LongInt): LongInt; inline;
-begin
-    Mix_Init:= flags;
-end;
-
-procedure Mix_Quit; inline;
-begin
-end;
-{$ENDIF}
-
-{$IFNDEF SDL_IMAGE_NEWER}
-function  IMG_Init(flags: LongInt): LongInt; inline;
-begin
-    IMG_Init:= flags;
-end;
-
-procedure IMG_Quit; inline;
-begin
-end;
-{$ENDIF}
-
 procedure SDLNet_Write16(value: Word; buf: Pointer);
 begin
     PByteArray(buf)^[1]:= value;
--- a/hedgewars/avwrapper/avwrapper.c	Sun Nov 15 14:42:59 2015 +0100
+++ b/hedgewars/avwrapper/avwrapper.c	Tue Nov 17 15:12:24 2015 +0100
@@ -79,10 +79,16 @@
 }
 #endif
 
-#if LIBAVCODEC_VERSION_MAJOR < 57
+#ifndef AV_CODEC_CAP_DELAY
 #define AV_CODEC_CAP_DELAY                  CODEC_CAP_DELAY
+#endif
+#ifndef AV_CODEC_CAP_VARIABLE_FRAME_SIZE
 #define AV_CODEC_CAP_VARIABLE_FRAME_SIZE    CODEC_CAP_VARIABLE_FRAME_SIZE
+#endif
+#ifndef AV_CODEC_FLAG_GLOBAL_HEADER
 #define AV_CODEC_FLAG_GLOBAL_HEADER         CODEC_FLAG_GLOBAL_HEADER
+#endif
+#ifndef AV_CODEC_FLAG_QSCALE
 #define AV_CODEC_FLAG_QSCALE                CODEC_FLAG_QSCALE
 #endif
 
--- a/hedgewars/uGearsHandlersMess.pas	Sun Nov 15 14:42:59 2015 +0100
+++ b/hedgewars/uGearsHandlersMess.pas	Tue Nov 17 15:12:24 2015 +0100
@@ -343,7 +343,7 @@
 // might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips)
     if (gX < min(LAND_WIDTH div -2, -2048))
     or (gX > max(LAND_WIDTH * 3 div 2, 6144)) then
-        Gear^.State := Gear^.State or gstCollision;
+        Gear^.Message := Gear^.Message or gmDestroy;
 
     if Gear^.dY.isNegative then
         begin
@@ -464,11 +464,12 @@
     if Gear^.AdvBounce > 1 then
         dec(Gear^.AdvBounce);
 
-    if isFalling then
-        begin
-        if Gear^.State and gstNoGravity = 0 then
-            Gear^.dY := Gear^.dY + cGravity;
-        if (GameFlags and gfMoreWind) <> 0 then
+    if isFalling and (Gear^.State and gstNoGravity = 0) then
+        begin
+        Gear^.dY := Gear^.dY + cGravity;
+        if (GameFlags and gfMoreWind <> 0) and 
+           ((xland or land) = 0) and
+           ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) > _0_02.QWordValue) then
             Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density
         end;
 
@@ -482,10 +483,7 @@
         Gear^.State := Gear^.State or gstMoving;
 
     if ((xland or land) and lfBouncy <> 0) and (Gear^.dX.QWordValue < _0_15.QWordValue) and (Gear^.dY.QWordValue < _0_15.QWordValue) then
-        begin
         Gear^.State := Gear^.State or gstCollision;
-        AddFileLog('no more bounce for you!');
-        end;
 
     if ((xland or land) and lfBouncy <> 0) and (Gear^.Radius >= 3) and
        ((Gear^.dX.QWordValue > _0_15.QWordValue) or (Gear^.dY.QWordValue > _0_15.QWordValue)) then
@@ -3539,7 +3537,7 @@
 begin
     AllInactive := false;
 
-    if (Gear^.State and gsttmpFlag) = 0 then
+    if (Gear^.State and gsttmpFlag = 0) and (GameFlags and gfMoreWind = 0) then
         Gear^.dX := Gear^.dX + cWindSpeed;
 
     oldDx := Gear^.dX;
--- a/project_files/hwc/CMakeLists.txt	Sun Nov 15 14:42:59 2015 +0100
+++ b/project_files/hwc/CMakeLists.txt	Tue Nov 17 15:12:24 2015 +0100
@@ -94,9 +94,5 @@
                                 m
                                 #TODO: add other libraries
                             )
-if(APPLE)
-    target_link_libraries(hwengine IOKit SDLmain)
-endif()
-
 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_binary_install_dir})
 
--- a/project_files/hwc/rtl/fpcrtl.h	Sun Nov 15 14:42:59 2015 +0100
+++ b/project_files/hwc/rtl/fpcrtl.h	Tue Nov 17 15:12:24 2015 +0100
@@ -14,9 +14,6 @@
 #include "pmath.h"
 
 #ifndef EMSCRIPTEN
-#if __APPLE__
-#define main SDL_main
-#endif
 #include "GL/glew.h"
 #endif
 
Binary file share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Flying_Saucer@2x.png has changed
--- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts	Sun Nov 15 14:42:59 2015 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts	Tue Nov 17 15:12:24 2015 +0100
@@ -5,14 +5,14 @@
     <name>About</name>
     <message>
         <source>Unknown Compiler</source>
-        <translation type="unfinished"></translation>
+        <translation>未知的編譯器</translation>
     </message>
 </context>
 <context>
     <name>AbstractPage</name>
     <message>
         <source>Go back</source>
-        <translation type="unfinished"></translation>
+        <translation>退回</translation>
     </message>
 </context>
 <context>
@@ -23,96 +23,96 @@
     </message>
     <message>
         <source>copy of %1</source>
-        <translation type="unfinished"></translation>
+        <translation>%1的拷貝</translation>
     </message>
 </context>
 <context>
     <name>BanDialog</name>
     <message>
         <source>IP</source>
-        <translation type="unfinished">IP</translation>
+        <translation>IP</translation>
     </message>
     <message>
         <source>Nick</source>
-        <translation type="unfinished"></translation>
+        <translation>暱稱</translation>
     </message>
     <message>
         <source>IP/Nick</source>
-        <translation type="unfinished"></translation>
+        <translation>IP/暱稱</translation>
     </message>
     <message>
         <source>Reason</source>
-        <translation type="unfinished"></translation>
+        <translation>原因</translation>
     </message>
     <message>
         <source>Duration</source>
-        <translation type="unfinished"></translation>
+        <translation>持續時間</translation>
     </message>
     <message>
         <source>Ok</source>
-        <translation type="unfinished"></translation>
+        <translation>確定</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>you know why</source>
-        <translation type="unfinished"></translation>
+        <translation>你知道為什麼</translation>
     </message>
     <message>
         <source>Warning</source>
-        <translation type="unfinished"></translation>
+        <translation>警告</translation>
     </message>
     <message>
         <source>Please, specify %1</source>
-        <translation type="unfinished"></translation>
+        <translation>請指定%1</translation>
     </message>
     <message>
         <source>nickname</source>
-        <translation type="unfinished"></translation>
+        <translation>暱稱</translation>
     </message>
     <message>
         <source>permanent</source>
-        <translation type="unfinished"></translation>
+        <translation>永久</translation>
     </message>
 </context>
 <context>
     <name>DataManager</name>
     <message>
         <source>Use Default</source>
-        <translation type="unfinished"></translation>
+        <translation>使用預設值</translation>
     </message>
 </context>
 <context>
     <name>FeedbackDialog</name>
     <message>
         <source>View</source>
-        <translation type="unfinished"></translation>
+        <translation>查看</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>Send Feedback</source>
-        <translation type="unfinished"></translation>
+        <translation>發送反饋</translation>
     </message>
     <message>
         <source>We are always happy about suggestions, ideas, or bug reports.</source>
-        <translation type="unfinished"></translation>
+        <translation>我們很樂意收到建議,想法,或是bug回報。</translation>
     </message>
     <message>
         <source>Send us feedback!</source>
-        <translation type="unfinished"></translation>
+        <translation>給我們反饋!</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>如果你發現了一個bug,可以先檢查它是否已經被回報過:</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>如果希望我們回覆你, 請留下你的電子郵件地址。</translation>
     </message>
 </context>
 <context>
@@ -132,244 +132,246 @@
     <name>GameCFGWidget</name>
     <message>
         <source>Edit weapons</source>
-        <translation type="unfinished">改變武器設置</translation>
+        <translation type="unfinished">修改武器</translation>
     </message>
     <message>
         <source>Edit schemes</source>
-        <translation type="unfinished">修改遊戲設置</translation>
+        <translation type="unfinished">修改方案</translation>
     </message>
     <message>
         <source>Game scheme will auto-select a weapon</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">遊戲方案將自動選擇武器</translation>
     </message>
     <message>
         <source>Map</source>
-        <translation type="unfinished">地圖</translation>
+        <translation>地圖</translation>
     </message>
     <message>
         <source>Game options</source>
-        <translation type="unfinished"></translation>
+        <translation>遊戲選項</translation>
     </message>
 </context>
 <context>
     <name>GameUIConfig</name>
     <message>
         <source>Guest</source>
-        <translation type="unfinished"></translation>
+        <translation>遊客</translation>
     </message>
 </context>
 <context>
     <name>HWApplication</name>
     <message numerus="yes">
         <source>%1 minutes</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 分鐘</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>%1 hour</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 小時</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>%1 hours</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 小時</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>%1 day</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 天</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>%1 days</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 天</numerusform>
         </translation>
     </message>
     <message>
         <source>Scheme &apos;%1&apos; not supported</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不支持遊戲方案“%1”</translation>
     </message>
     <message>
         <source>Cannot create directory %1</source>
-        <translation type="unfinished">無法創建路徑 %1</translation>
+        <translation>不能建立目錄 %1</translation>
     </message>
     <message>
         <source>Failed to open data directory:
 %1
 
 Please check your installation!</source>
-        <translation type="unfinished"></translation>
+        <translation>無法打開數據目錄:%1
+請檢查你的安裝!</translation>
     </message>
     <message>
         <source>Usage</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>用法</translation>
     </message>
     <message>
         <source>OPTION</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>選項</translation>
     </message>
     <message>
         <source>CONNECTSTRING</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">連接字串</translation>
     </message>
     <message>
         <source>Options</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>選項</translation>
     </message>
     <message>
         <source>Display this help</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>顯示此幫助</translation>
     </message>
     <message>
         <source>Custom path for configuration data and user data</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>自定義路徑用於儲存配置和用戶數據</translation>
     </message>
     <message>
         <source>Custom path to the game data folder</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>自定義路徑相對於遊戲數據文件夾</translation>
     </message>
     <message>
         <source>Hedgewars can use a %1 (e.g. &quot;%2&quot;) to connect on start.</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">啟動刺蝟大作戰能使用%1(例如 &quot;%2&quot;)來連線</translation>
     </message>
     <message>
         <source>Malformed option argument: %1</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>格式不正確的選項參數:%1</translation>
     </message>
     <message>
         <source>Unknown option argument: %1</source>
         <comment>command-line</comment>
-        <translation type="unfinished"></translation>
+        <translation>未知的選項參數:%1</translation>
     </message>
 </context>
 <context>
     <name>HWAskQuitDialog</name>
     <message>
         <source>Do you really want to quit?</source>
-        <translation type="unfinished"></translation>
+        <translation>你真的要退出嗎?</translation>
     </message>
 </context>
 <context>
     <name>HWChatWidget</name>
     <message>
         <source>%1 has been removed from your ignore list</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已從你的忽略列表中刪除</translation>
     </message>
     <message>
         <source>%1 has been added to your ignore list</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已添加到你的忽略列表</translation>
     </message>
     <message>
         <source>%1 has been removed from your friends list</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已從你的好友列表中刪除</translation>
     </message>
     <message>
         <source>%1 has been added to your friends list</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已添加到你的好友列表</translation>
     </message>
     <message>
         <source>Stylesheet imported from %1</source>
-        <translation type="unfinished"></translation>
+        <translation>樣式表已從%1導入</translation>
     </message>
     <message>
         <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source>
-        <translation type="unfinished"></translation>
+        <translation>如果你未來想使用當前的樣式表,請輸入%1 ;重置,請輸入%2!</translation>
     </message>
     <message>
         <source>Couldn&apos;t read %1</source>
-        <translation type="unfinished"></translation>
+        <translation>無法讀取 %1</translation>
     </message>
     <message>
         <source>StyleSheet discarded</source>
-        <translation type="unfinished"></translation>
+        <translation>樣式表被丟棄</translation>
     </message>
     <message>
         <source>StyleSheet saved to %1</source>
-        <translation type="unfinished"></translation>
+        <translation>樣式表保存到%1</translation>
     </message>
     <message>
         <source>Failed to save StyleSheet to %1</source>
-        <translation type="unfinished"></translation>
+        <translation>無法保存樣式表%1</translation>
     </message>
     <message>
         <source>%1 has joined</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已經加入</translation>
     </message>
     <message>
         <source>%1 has left</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已經離開</translation>
     </message>
     <message>
         <source>%1 has left (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>%1已經離開(%2)</translation>
     </message>
 </context>
 <context>
     <name>HWForm</name>
     <message>
         <source>Cannot save record to file %1</source>
-        <translation>無法錄入檔 %1</translation>
+        <translation>無法保存記錄到文件%1</translation>
     </message>
     <message>
         <source>DefaultTeam</source>
-        <translation type="unfinished"></translation>
+        <translation>預設隊伍</translation>
     </message>
     <message>
         <source>Hedgewars Demo File</source>
         <comment>File Types</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰演示檔</translation>
     </message>
     <message>
         <source>Hedgewars Save File</source>
         <comment>File Types</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰存檔</translation>
     </message>
     <message>
         <source>Demo name</source>
-        <translation type="unfinished"></translation>
+        <translation>演示名稱</translation>
     </message>
     <message>
         <source>Demo name:</source>
-        <translation type="unfinished"></translation>
+        <translation>演示名稱:</translation>
     </message>
     <message>
         <source>Game aborted</source>
-        <translation type="unfinished"></translation>
+        <translation>比賽中止</translation>
     </message>
     <message>
         <source>Nickname</source>
-        <translation type="unfinished">匿稱</translation>
+        <translation>匿稱</translation>
     </message>
     <message>
         <source>No nickname supplied.</source>
-        <translation type="unfinished"></translation>
+        <translation>沒有暱稱供應。</translation>
     </message>
     <message>
         <source>Someone already uses your nickname %1 on the server.
 Please pick another nickname:</source>
-        <translation type="unfinished"></translation>
+        <translation>在伺服器上已經有人使用你的暱稱(%1)
+請選擇另一個暱稱:</translation>
     </message>
     <message>
         <source>%1&apos;s Team</source>
-        <translation type="unfinished"></translation>
+        <translation>%1的隊伍</translation>
     </message>
     <message>
         <source>Hedgewars - Nick registered</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 - 暱稱註冊</translation>
     </message>
     <message>
         <source>This nick is registered, and you haven&apos;t specified a password.
@@ -377,61 +379,67 @@
 If this nick isn&apos;t yours, please register your own nick at www.hedgewars.org
 
 Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>這個暱稱被註冊,並且你還沒有指定密碼
+如果這個暱稱是不是你的,請上www.hedgewars.org註冊自己的暱稱
+密碼:</translation>
     </message>
     <message>
         <source>Your nickname is not registered.
 To prevent someone else from using it,
 please register it at www.hedgewars.org</source>
-        <translation type="unfinished"></translation>
+        <translation>你的暱稱未註冊。
+要防止其他人使用它,
+請上www.hedgewars.org進行註冊</translation>
     </message>
     <message>
         <source>
 
 Your password wasn&apos;t saved either.</source>
-        <translation type="unfinished"></translation>
+        <translation>未保存任何你的密碼。</translation>
     </message>
     <message>
         <source>Hedgewars - Empty nickname</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 - 空的暱稱</translation>
     </message>
     <message>
         <source>Hedgewars - Wrong password</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 - 密碼錯誤</translation>
     </message>
     <message>
         <source>You entered a wrong password.</source>
-        <translation type="unfinished"></translation>
+        <translation>你輸入了錯誤的密碼。</translation>
     </message>
     <message>
         <source>Try Again</source>
-        <translation type="unfinished"></translation>
+        <translation>再試一次</translation>
     </message>
     <message>
         <source>Hedgewars - Connection error</source>
-        <translation type="unfinished"></translation>
+        <translation>刺蝟大作戰 - 連接錯誤</translation>
     </message>
     <message>
         <source>You reconnected too fast.
 Please wait a few seconds and try again.</source>
-        <translation type="unfinished"></translation>
+        <translation>你太快重新連接了。
+請等待幾秒鐘,然後再試一次。</translation>
     </message>
     <message>
         <source>This page requires an internet connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>此頁面需要連接網際網路。</translation>
     </message>
     <message>
         <source>Guest</source>
-        <translation type="unfinished"></translation>
+        <translation>遊客</translation>
     </message>
     <message>
         <source>Room password</source>
-        <translation type="unfinished"></translation>
+        <translation>房間密碼</translation>
     </message>
     <message>
         <source>The room is protected with password.
 Please, enter the password:</source>
-        <translation type="unfinished"></translation>
+        <translation>房間使用密碼保護
+請輸入密碼:</translation>
     </message>
 </context>
 <context>
@@ -442,7 +450,7 @@
     </message>
     <message>
         <source>Cannot open demofile %1</source>
-        <translation>DEMO %1 打不開</translation>
+        <translation>無法打開 演示檔案 %1</translation>
     </message>
     <message>
         <source>A Fatal ERROR occured! - The game engine had to stop.
@@ -453,7 +461,11 @@
 
 Last two engine messages:
 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>一個致命的錯誤! - 遊戲引擎不得不停止
+我們很抱歉給你帶來不便:(
+如果這一情況持續發生,請點擊主菜單中的“%1”按鈕
+上次兩款發動機的消息:
+%2</translation>
     </message>
 </context>
 <context>
@@ -484,103 +496,103 @@
     </message>
     <message>
         <source>Small tunnels</source>
-        <translation type="unfinished"></translation>
+        <translation>小隧道</translation>
     </message>
     <message>
         <source>Medium tunnels</source>
-        <translation type="unfinished"></translation>
+        <translation>中隧道</translation>
     </message>
     <message>
         <source>Seed</source>
-        <translation type="unfinished"></translation>
+        <translation>種子</translation>
     </message>
     <message>
         <source>Map type:</source>
-        <translation type="unfinished"></translation>
+        <translation>地圖類型:</translation>
     </message>
     <message>
         <source>Image map</source>
-        <translation type="unfinished"></translation>
+        <translation>圖片地圖</translation>
     </message>
     <message>
         <source>Mission map</source>
-        <translation type="unfinished"></translation>
+        <translation>任務地圖</translation>
     </message>
     <message>
         <source>Hand-drawn</source>
-        <translation type="unfinished"></translation>
+        <translation>手繪</translation>
     </message>
     <message>
         <source>Randomly generated</source>
-        <translation type="unfinished"></translation>
+        <translation>隨機產生</translation>
     </message>
     <message>
         <source>Random maze</source>
-        <translation type="unfinished"></translation>
+        <translation>隨機迷宮</translation>
     </message>
     <message>
         <source>Random</source>
-        <translation type="unfinished">隨機</translation>
+        <translation>隨機</translation>
     </message>
     <message>
         <source>Map preview:</source>
-        <translation type="unfinished"></translation>
+        <translation>地圖預覽:</translation>
     </message>
     <message>
         <source>Load map drawing</source>
-        <translation type="unfinished"></translation>
+        <translation>加載地圖繪製</translation>
     </message>
     <message>
         <source>Edit map drawing</source>
-        <translation type="unfinished"></translation>
+        <translation>編輯地圖繪製</translation>
     </message>
     <message>
         <source>Small islands</source>
-        <translation type="unfinished"></translation>
+        <translation>小島嶼</translation>
     </message>
     <message>
         <source>Medium islands</source>
-        <translation type="unfinished"></translation>
+        <translation>中島嶼</translation>
     </message>
     <message>
         <source>Large islands</source>
-        <translation type="unfinished"></translation>
+        <translation>大島嶼</translation>
     </message>
     <message>
         <source>Map size:</source>
-        <translation type="unfinished"></translation>
+        <translation>地圖尺寸:</translation>
     </message>
     <message>
         <source>Maze style:</source>
-        <translation type="unfinished"></translation>
+        <translation>迷宮的風格:</translation>
     </message>
     <message>
         <source>Mission:</source>
-        <translation type="unfinished"></translation>
+        <translation>任務:</translation>
     </message>
     <message>
         <source>Map:</source>
-        <translation type="unfinished"></translation>
+        <translation>地圖:</translation>
     </message>
     <message>
         <source>Load drawn map</source>
-        <translation type="unfinished"></translation>
+        <translation>加載繪製的地圖</translation>
     </message>
     <message>
         <source>Drawn Maps</source>
-        <translation type="unfinished"></translation>
+        <translation>繪製地圖</translation>
     </message>
     <message>
         <source>All files</source>
-        <translation type="unfinished"></translation>
+        <translation>所有文件</translation>
     </message>
     <message>
         <source>Large tunnels</source>
-        <translation type="unfinished"></translation>
+        <translation>大隧道</translation>
     </message>
     <message>
         <source>Theme: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>主題:%1</translation>
     </message>
     <message>
         <source>Random perlin</source>
@@ -588,7 +600,7 @@
     </message>
     <message>
         <source>Style:</source>
-        <translation type="unfinished"></translation>
+        <translation>風格:</translation>
     </message>
 </context>
 <context>
@@ -603,14 +615,14 @@
     </message>
     <message>
         <source>Port</source>
-        <translation>埠</translation>
+        <translation>端口</translation>
     </message>
 </context>
 <context>
     <name>HWNewNet</name>
     <message>
         <source>The host was not found. Please check the host name and port settings.</source>
-        <translation>錯誤沒找到這個主機。請檢查主機名稱和埠設置。</translation>
+        <translation>錯誤沒找到這個主機。請檢查主機名稱和端口設置。</translation>
     </message>
     <message>
         <source>Connection refused</source>
@@ -646,74 +658,77 @@
     </message>
     <message>
         <source>User quit</source>
-        <translation type="unfinished"></translation>
+        <translation>用戶退出</translation>
     </message>
     <message>
         <source>Remote host has closed connection</source>
-        <translation type="unfinished"></translation>
+        <translation>遠程主機已關閉連接</translation>
     </message>
     <message>
         <source>The server is too old. Disconnecting now.</source>
-        <translation type="unfinished"></translation>
+        <translation>伺服器太舊。立即斷線。</translation>
     </message>
     <message>
         <source>Server authentication error</source>
-        <translation type="unfinished"></translation>
+        <translation>伺服器身份驗證錯誤</translation>
     </message>
 </context>
 <context>
     <name>HWPasswordDialog</name>
     <message>
         <source>Login</source>
-        <translation type="unfinished"></translation>
+        <translation>登入</translation>
     </message>
     <message>
         <source>To connect to the server, please log in.
 
 If you don&apos;t have an account on www.hedgewars.org,
 just enter your nickname.</source>
-        <translation type="unfinished"></translation>
+        <translation>要連接到伺服器,請登錄。
+
+如果你在www.hedgewars.org沒有一個的帳號,
+只需輸入你的暱稱。</translation>
     </message>
     <message>
         <source>Nickname:</source>
-        <translation type="unfinished"></translation>
+        <translation>暱稱:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>密碼:</translation>
     </message>
 </context>
 <context>
     <name>HWUploadVideoDialog</name>
     <message>
         <source>Upload video</source>
-        <translation type="unfinished"></translation>
+        <translation>上傳視頻</translation>
     </message>
     <message>
         <source>Upload</source>
-        <translation type="unfinished"></translation>
+        <translation>上傳</translation>
     </message>
 </context>
 <context>
     <name>HatButton</name>
     <message>
         <source>Change hat (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">改變帽子(%1)</translation>
     </message>
 </context>
 <context>
     <name>HatPrompt</name>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>Use selected hat</source>
-        <translation type="unfinished"></translation>
+        <translation>使用選定的帽子</translation>
     </message>
     <message>
         <source>Search for a hat:</source>
-        <translation type="unfinished"></translation>
+        <translation>搜索一頂帽子:</translation>
     </message>
 </context>
 <context>
@@ -727,7 +742,7 @@
     <name>KeyBinder</name>
     <message>
         <source>Category</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">分類</translation>
     </message>
 </context>
 <context>
@@ -738,26 +753,26 @@
     </message>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>未知</translation>
     </message>
     <message>
         <source>Duration: %1m %2s</source>
-        <translation type="unfinished"></translation>
+        <translation>持續時間:%1分 %2秒</translation>
     </message>
     <message>
         <source>Video: %1x%2</source>
-        <translation type="unfinished"></translation>
+        <translation>視頻:%1X%2</translation>
     </message>
     <message>
         <source>%1 fps</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 FPS</translation>
     </message>
 </context>
 <context>
     <name>MapModel</name>
     <message>
         <source>No description available.</source>
-        <translation type="unfinished"></translation>
+        <translation>沒有可用的描述。</translation>
     </message>
 </context>
 <context>
@@ -768,27 +783,27 @@
     </message>
     <message>
         <source>Fetch data</source>
-        <translation type="unfinished"></translation>
+        <translation>獲取數據</translation>
     </message>
     <message>
         <source>Server message for latest version:</source>
-        <translation type="unfinished"></translation>
+        <translation>對於最新版本的伺服器消息:</translation>
     </message>
     <message>
         <source>Server message for previous versions:</source>
-        <translation type="unfinished"></translation>
+        <translation>以前版本的伺服器消息:</translation>
     </message>
     <message>
         <source>Latest version protocol number:</source>
-        <translation type="unfinished"></translation>
+        <translation>最新版本協議號:</translation>
     </message>
     <message>
         <source>MOTD preview:</source>
-        <translation type="unfinished"></translation>
+        <translation>今日消息預覽:</translation>
     </message>
     <message>
         <source>Set data</source>
-        <translation type="unfinished"></translation>
+        <translation>設置數據</translation>
     </message>
     <message>
         <source>General</source>
@@ -796,31 +811,31 @@
     </message>
     <message>
         <source>Bans</source>
-        <translation type="unfinished"></translation>
+        <translation>封鎖</translation>
     </message>
     <message>
         <source>IP/Nick</source>
-        <translation type="unfinished"></translation>
+        <translation>IP/暱稱</translation>
     </message>
     <message>
         <source>Expiration</source>
-        <translation type="unfinished"></translation>
+        <translation>期滿</translation>
     </message>
     <message>
         <source>Reason</source>
-        <translation type="unfinished"></translation>
+        <translation>原因</translation>
     </message>
     <message>
         <source>Refresh</source>
-        <translation type="unfinished"></translation>
+        <translation>刷新</translation>
     </message>
     <message>
         <source>Add</source>
-        <translation type="unfinished"></translation>
+        <translation>增加</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished"></translation>
+        <translation>刪除</translation>
     </message>
 </context>
 <context>
@@ -834,145 +849,145 @@
     <name>PageDataDownload</name>
     <message>
         <source>Loading, please wait.</source>
-        <translation type="unfinished"></translation>
+        <translation>載入中,請稍候。</translation>
     </message>
     <message>
         <source>This page requires an internet connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>此頁面需要連接網際網路。</translation>
     </message>
     <message>
         <source>Open packages directory</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">打開組件目錄</translation>
     </message>
 </context>
 <context>
     <name>PageDrawMap</name>
     <message>
         <source>Undo</source>
-        <translation type="unfinished"></translation>
+        <translation>復原</translation>
     </message>
     <message>
         <source>Clear</source>
-        <translation type="unfinished">清除</translation>
+        <translation>清除</translation>
     </message>
     <message>
         <source>Load</source>
-        <translation type="unfinished">讀取</translation>
+        <translation>讀取</translation>
     </message>
     <message>
         <source>Save</source>
-        <translation type="unfinished"></translation>
+        <translation>保存</translation>
     </message>
     <message>
         <source>Load drawn map</source>
-        <translation type="unfinished"></translation>
+        <translation>讀取繪製的地圖</translation>
     </message>
     <message>
         <source>Save drawn map</source>
-        <translation type="unfinished"></translation>
+        <translation>保存繪製的地圖</translation>
     </message>
     <message>
         <source>Drawn Maps</source>
-        <translation type="unfinished"></translation>
+        <translation>繪製地圖</translation>
     </message>
     <message>
         <source>All files</source>
-        <translation type="unfinished"></translation>
+        <translation>所有文件</translation>
     </message>
     <message>
         <source>Eraser</source>
-        <translation type="unfinished"></translation>
+        <translation>黑板擦</translation>
     </message>
     <message>
         <source>Polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>折線</translation>
     </message>
     <message>
         <source>Rectangle</source>
-        <translation type="unfinished"></translation>
+        <translation>矩形</translation>
     </message>
     <message>
         <source>Ellipse</source>
-        <translation type="unfinished"></translation>
+        <translation>橢圓</translation>
     </message>
     <message>
         <source>Optimize</source>
-        <translation type="unfinished"></translation>
+        <translation>優化</translation>
     </message>
 </context>
 <context>
     <name>PageEditTeam</name>
     <message>
         <source>General</source>
-        <translation>常規</translation>
+        <translation type="unfinished">常規</translation>
     </message>
     <message>
         <source>Select an action to choose a custom key bind for this team</source>
-        <translation type="unfinished"></translation>
+        <translation>點動作,來替隊伍選擇自定義的按鍵綁定</translation>
     </message>
     <message>
         <source>Use my default</source>
-        <translation type="unfinished"></translation>
+        <translation>使用我的預設值</translation>
     </message>
     <message>
         <source>Reset all binds</source>
-        <translation type="unfinished"></translation>
+        <translation>重置全部綁定</translation>
     </message>
     <message>
         <source>Custom Controls</source>
-        <translation type="unfinished"></translation>
+        <translation>自定義控制</translation>
     </message>
     <message>
         <source>Hat</source>
-        <translation type="unfinished">帽子</translation>
+        <translation>帽子</translation>
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>名字</translation>
     </message>
     <message>
         <source>This hedgehog&apos;s name</source>
-        <translation type="unfinished"></translation>
+        <translation>這隻刺猬的名字</translation>
     </message>
     <message>
         <source>Randomize this hedgehog&apos;s name</source>
-        <translation type="unfinished"></translation>
+        <translation>隨機選擇這隻刺猬的名字</translation>
     </message>
     <message>
         <source>Random Team</source>
-        <translation type="unfinished">隨機隊伍分配</translation>
+        <translation>隨機隊伍分配</translation>
     </message>
 </context>
 <context>
     <name>PageGameStats</name>
     <message>
         <source>Details</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">細節</translation>
     </message>
     <message>
         <source>Health graph</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">生命圖</translation>
     </message>
     <message>
         <source>Ranking</source>
-        <translation type="unfinished"></translation>
+        <translation>排行</translation>
     </message>
     <message numerus="yes">
         <source>The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1%n&lt;/b&gt;的&lt;b&gt;%2&lt;/b&gt;傷害獲得最佳攻擊獎。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>The best killer is &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills in a turn.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>最佳殺手為&lt;b&gt;%1&lt;/b&gt;在一回合&lt;b&gt;%2&lt;/b&gt;殺。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>A total of &lt;b&gt;%1&lt;/b&gt; hedgehog(s) were killed during this round.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>這場總共&lt;b&gt;%1&lt;/b&gt;隻刺蝟死亡。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
@@ -984,28 +999,28 @@
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot his own hedgehogs with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt;認為攻擊自己的刺猬&lt;b&gt;%2&lt;/b&gt;傷害是很好的。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of his own hedgehogs.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt;殺了&lt;b&gt;%2&lt;/b&gt;隻自己的刺蝟。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt;很慌張,跳過&lt;b&gt;%2&lt;/b&gt;次。</numerusform>
         </translation>
     </message>
     <message>
         <source>Play again</source>
-        <translation type="unfinished"></translation>
+        <translation>再玩一次</translation>
     </message>
     <message>
         <source>Save</source>
-        <translation type="unfinished"></translation>
+        <translation>存檔</translation>
     </message>
     <message numerus="yes">
         <source>(%1 %2)</source>
@@ -1018,73 +1033,73 @@
     <name>PageInGame</name>
     <message>
         <source>In game...</source>
-        <translation type="unfinished"></translation>
+        <translation>在遊戲中...</translation>
     </message>
 </context>
 <context>
     <name>PageInfo</name>
     <message>
         <source>Open the snapshot folder</source>
-        <translation type="unfinished"></translation>
+        <translation>打開快照文件夾</translation>
     </message>
 </context>
 <context>
     <name>PageMain</name>
     <message>
         <source>Downloadable Content</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">可下載的內容</translation>
     </message>
     <message>
         <source>Play a game on a single computer</source>
-        <translation type="unfinished"></translation>
+        <translation>開始一個單機版遊戲</translation>
     </message>
     <message>
         <source>Play a game across a network</source>
-        <translation type="unfinished"></translation>
+        <translation>開始一個網路對戰遊戲</translation>
     </message>
     <message>
         <source>Read about who is behind the Hedgewars Project</source>
-        <translation type="unfinished"></translation>
+        <translation>看看刺蝟大作戰背後的功臣們</translation>
     </message>
     <message>
         <source>Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars</source>
-        <translation type="unfinished"></translation>
+        <translation>在這裡可以回報問題,提出建議,或是說說你多麼喜歡刺蝟大作戰</translation>
     </message>
     <message>
         <source>Access the user created content downloadable from our website</source>
-        <translation type="unfinished"></translation>
+        <translation>從我們的網站訪問用戶創建的內容</translation>
     </message>
     <message>
         <source>Exit game</source>
-        <translation type="unfinished"></translation>
+        <translation>退出遊戲</translation>
     </message>
     <message>
         <source>Manage videos recorded from game</source>
-        <translation type="unfinished"></translation>
+        <translation>管理從遊戲中錄製的視頻</translation>
     </message>
     <message>
         <source>Edit game preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>編輯遊戲偏好設定</translation>
     </message>
     <message>
         <source>Play a game across a local area network</source>
-        <translation type="unfinished"></translation>
+        <translation>跨內網玩遊戲</translation>
     </message>
     <message>
         <source>Play a game on an official server</source>
-        <translation type="unfinished"></translation>
+        <translation>在官方伺服器上玩遊戲</translation>
     </message>
     <message>
         <source>Feedback</source>
-        <translation type="unfinished"></translation>
+        <translation>信息反饋</translation>
     </message>
     <message>
         <source>Play local network game</source>
-        <translation type="unfinished"></translation>
+        <translation>玩內網遊戲</translation>
     </message>
     <message>
         <source>Play official network game</source>
-        <translation type="unfinished"></translation>
+        <translation>玩官網遊戲</translation>
     </message>
 </context>
 <context>
@@ -1095,7 +1110,7 @@
     </message>
     <message>
         <source>Edit game preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>編輯遊戲偏好設定</translation>
     </message>
 </context>
 <context>
@@ -1106,37 +1121,37 @@
     </message>
     <message>
         <source>Edit game preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>編輯遊戲偏好設定</translation>
     </message>
     <message>
         <source>Start</source>
-        <translation type="unfinished">開始</translation>
+        <translation>開始</translation>
     </message>
     <message>
         <source>Update</source>
-        <translation type="unfinished">更新</translation>
+        <translation>更新</translation>
     </message>
     <message>
         <source>Room controls</source>
-        <translation type="unfinished"></translation>
+        <translation>房間管理</translation>
     </message>
 </context>
 <context>
     <name>PageNetServer</name>
     <message>
         <source>Click here for details</source>
-        <translation type="unfinished"></translation>
+        <translation>點擊查看詳情</translation>
     </message>
     <message>
         <source>Insert your address here</source>
-        <translation type="unfinished"></translation>
+        <translation>在此處插入你的地址</translation>
     </message>
 </context>
 <context>
     <name>PageOptions</name>
     <message>
         <source>New team</source>
-        <translation>新隊伍</translation>
+        <translation>新增隊伍</translation>
     </message>
     <message>
         <source>Edit team</source>
@@ -1144,163 +1159,163 @@
     </message>
     <message>
         <source>Delete team</source>
-        <translation type="unfinished"></translation>
+        <translation>刪除隊伍</translation>
     </message>
     <message>
         <source>You can&apos;t edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
-        <translation type="unfinished"></translation>
+        <translation>你不能在隊伍選單中修改隊伍。回到主選單上,新增,編輯或刪除隊伍.</translation>
     </message>
     <message>
         <source>New scheme</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">新增方案</translation>
     </message>
     <message>
         <source>Edit scheme</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">修改方案</translation>
     </message>
     <message>
         <source>Delete scheme</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刪除方案</translation>
     </message>
     <message>
         <source>New weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">新增武器組合</translation>
     </message>
     <message>
         <source>Edit weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">修改武器組合</translation>
     </message>
     <message>
         <source>Delete weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刪除武器組合</translation>
     </message>
     <message>
         <source>Advanced</source>
-        <translation type="unfinished">進階</translation>
+        <translation>進階</translation>
     </message>
     <message>
         <source>Reset to default colors</source>
-        <translation type="unfinished"></translation>
+        <translation>重置為預設顏色</translation>
     </message>
     <message>
         <source>Proxy host</source>
-        <translation type="unfinished"></translation>
+        <translation>代理伺服器主機</translation>
     </message>
     <message>
         <source>Proxy port</source>
-        <translation type="unfinished"></translation>
+        <translation>代理伺服器端口</translation>
     </message>
     <message>
         <source>Proxy login</source>
-        <translation type="unfinished"></translation>
+        <translation>代理伺服器帳號</translation>
     </message>
     <message>
         <source>Proxy password</source>
-        <translation type="unfinished"></translation>
+        <translation>代理伺服器密碼</translation>
     </message>
     <message>
         <source>No proxy</source>
-        <translation type="unfinished"></translation>
+        <translation>無代理</translation>
     </message>
     <message>
         <source>Socks5 proxy</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Socks5代理</translation>
     </message>
     <message>
         <source>HTTP proxy</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">HTTP代理</translation>
     </message>
     <message>
         <source>System proxy settings</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">系統代理設置</translation>
     </message>
     <message>
         <source>Select an action to change what key controls it</source>
-        <translation type="unfinished"></translation>
+        <translation>點動作,來改變控制它的按鍵</translation>
     </message>
     <message>
         <source>Reset to default</source>
-        <translation type="unfinished"></translation>
+        <translation>重置為預設值</translation>
     </message>
     <message>
         <source>Reset all binds</source>
-        <translation type="unfinished"></translation>
+        <translation>重置所有的綁定</translation>
     </message>
     <message>
         <source>Game</source>
-        <translation type="unfinished"></translation>
+        <translation>遊戲</translation>
     </message>
     <message>
         <source>Graphics</source>
-        <translation type="unfinished"></translation>
+        <translation>圖像</translation>
     </message>
     <message>
         <source>Audio</source>
-        <translation type="unfinished"></translation>
+        <translation>聲音</translation>
     </message>
     <message>
         <source>Controls</source>
-        <translation type="unfinished"></translation>
+        <translation>控制</translation>
     </message>
     <message>
         <source>Video Recording</source>
-        <translation type="unfinished"></translation>
+        <translation>錄像</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
+        <translation>網路</translation>
     </message>
     <message>
         <source>Teams</source>
-        <translation type="unfinished">隊伍</translation>
+        <translation>隊伍</translation>
     </message>
     <message>
         <source>Schemes</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">方案</translation>
     </message>
     <message>
         <source>Weapons</source>
-        <translation type="unfinished">武器</translation>
+        <translation>武器</translation>
     </message>
     <message>
         <source>Frontend</source>
-        <translation type="unfinished"></translation>
+        <translation>前端</translation>
     </message>
     <message>
         <source>Custom colors</source>
-        <translation type="unfinished"></translation>
+        <translation>自定義顏色</translation>
     </message>
     <message>
         <source>Game audio</source>
-        <translation type="unfinished"></translation>
+        <translation>遊戲音效</translation>
     </message>
     <message>
         <source>Frontend audio</source>
-        <translation type="unfinished"></translation>
+        <translation>前端音效</translation>
     </message>
     <message>
         <source>Account</source>
-        <translation type="unfinished"></translation>
+        <translation>帳戶</translation>
     </message>
     <message>
         <source>Proxy settings</source>
-        <translation type="unfinished"></translation>
+        <translation>代理伺服器設置</translation>
     </message>
     <message>
         <source>Miscellaneous</source>
-        <translation type="unfinished"></translation>
+        <translation>雜項</translation>
     </message>
     <message>
         <source>Updates</source>
-        <translation type="unfinished"></translation>
+        <translation>更新</translation>
     </message>
     <message>
         <source>Check for updates</source>
-        <translation type="unfinished"></translation>
+        <translation>檢查更新</translation>
     </message>
     <message>
         <source>Video recording options</source>
-        <translation type="unfinished"></translation>
+        <translation>視頻錄製選項</translation>
     </message>
 </context>
 <context>
@@ -1339,35 +1354,35 @@
     <message numerus="yes">
         <source>%1 players online</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>%1%n 玩家在線</numerusform>
         </translation>
     </message>
     <message>
         <source>Search for a room:</source>
-        <translation type="unfinished"></translation>
+        <translation>搜索房間:</translation>
     </message>
     <message>
         <source>Create room</source>
-        <translation type="unfinished"></translation>
+        <translation>創建房間</translation>
     </message>
     <message>
         <source>Join room</source>
-        <translation type="unfinished"></translation>
+        <translation>加入房間</translation>
     </message>
     <message>
         <source>Room state</source>
-        <translation type="unfinished"></translation>
+        <translation>房間狀態</translation>
     </message>
     <message>
         <source>Open server administration page</source>
-        <translation type="unfinished"></translation>
+        <translation>打開伺服器管理頁面</translation>
     </message>
 </context>
 <context>
     <name>PageScheme</name>
     <message>
         <source>New</source>
-        <translation>新模式</translation>
+        <translation type="unfinished">新增</translation>
     </message>
     <message>
         <source>Delete</source>
@@ -1375,7 +1390,7 @@
     </message>
     <message>
         <source>Gain 80% of the damage you do back in health</source>
-        <translation>傷害的80%變成自身力量</translation>
+        <translation type="unfinished">傷害的80%成為自身生命</translation>
     </message>
     <message>
         <source>Share your opponents pain, share their damage</source>
@@ -1395,7 +1410,7 @@
     </message>
     <message>
         <source>Defend your fort and destroy the opponents, two team colours max!</source>
-        <translation>保衛你的城堡,破壞對手的,努力吧!</translation>
+        <translation type="unfinished">保衛你的堡壘,破壞對手的,努力吧!</translation>
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
@@ -1427,86 +1442,86 @@
     </message>
     <message>
         <source>Take turns placing your hedgehogs before the start of play.</source>
-        <translation>在開局前手動放置刺猬</translation>
+        <translation>在開局前手動放置刺猬。</translation>
     </message>
     <message>
         <source>Ammo is shared between all teams that share a colour.</source>
-        <translation type="unfinished"></translation>
+        <translation>同一個顏色的所有隊伍之間共享彈藥。</translation>
     </message>
     <message>
         <source>Disable girders when generating random maps.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">生成隨機地圖時,禁用橋樑。</translation>
     </message>
     <message>
         <source>Disable land objects when generating random maps.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">生成隨機地圖時,禁用地面物體。</translation>
     </message>
     <message>
         <source>AI respawns on death.</source>
-        <translation type="unfinished"></translation>
+        <translation>AI死亡後重生。</translation>
     </message>
     <message>
         <source>All (living) hedgehogs are fully restored at the end of turn</source>
-        <translation type="unfinished"></translation>
+        <translation>所有(活的)刺猬在回合結束時完全恢復</translation>
     </message>
     <message>
         <source>Attacking does not end your turn.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">進攻後不會自動結束你的回合。</translation>
     </message>
     <message>
         <source>Weapons are reset to starting values each turn.</source>
-        <translation type="unfinished"></translation>
+        <translation>每回合武器被重置為初始值。</translation>
     </message>
     <message>
         <source>Each hedgehog has its own ammo. It does not share with the team.</source>
-        <translation type="unfinished"></translation>
+        <translation>每個刺猬有它自己的彈藥。它不與隊伍分享。</translation>
     </message>
     <message>
         <source>You will not have to worry about wind anymore.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">禁風,你將不用擔心風了。</translation>
     </message>
     <message>
         <source>Wind will affect almost everything.</source>
-        <translation type="unfinished"></translation>
+        <translation>風將影響幾乎所有東西。</translation>
     </message>
     <message>
         <source>Copy</source>
-        <translation type="unfinished"></translation>
+        <translation>複製</translation>
     </message>
     <message>
         <source>Teams in each clan take successive turns sharing their turn time.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">同一顏色的每個隊伍採取連續輪流分享他們的回合時間。</translation>
     </message>
     <message>
         <source>Add an indestructible border around the terrain</source>
-        <translation>添加不可毀壞地邊界</translation>
+        <translation>在地型周圍添加一個堅不可摧的邊界</translation>
     </message>
     <message>
         <source>Add an indestructible border along the bottom</source>
-        <translation type="unfinished"></translation>
+        <translation>沿著底部添加一個堅不可摧的邊界</translation>
     </message>
     <message>
         <source>None (Default)</source>
-        <translation type="unfinished"></translation>
+        <translation>沒有(預設值)</translation>
     </message>
     <message>
         <source>Wrap (World wraps)</source>
-        <translation type="unfinished"></translation>
+        <translation>重疊(世界重疊)</translation>
     </message>
     <message>
         <source>Bounce (Edges reflect)</source>
-        <translation type="unfinished"></translation>
+        <translation>彈跳(邊緣反射)</translation>
     </message>
     <message>
         <source>Sea (Edges connect to sea)</source>
-        <translation type="unfinished"></translation>
+        <translation>海水(邊緣連接到海)</translation>
     </message>
 </context>
 <context>
     <name>PageSelectWeapon</name>
     <message>
         <source>Default</source>
-        <translation>默認</translation>
+        <translation>預設值</translation>
     </message>
     <message>
         <source>Delete</source>
@@ -1514,68 +1529,68 @@
     </message>
     <message>
         <source>New</source>
-        <translation type="unfinished">新模式</translation>
+        <translation>新增</translation>
     </message>
     <message>
         <source>Copy</source>
-        <translation type="unfinished"></translation>
+        <translation>複製</translation>
     </message>
 </context>
 <context>
     <name>PageSinglePlayer</name>
     <message>
         <source>Play a quick game against the computer with random settings</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">使用隨機設置與電腦快速開始遊戲</translation>
     </message>
     <message>
         <source>Play a hotseat game against your friends, or AI teams</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">與你的朋友或AI隊伍進行遊戲</translation>
     </message>
     <message>
         <source>Campaign Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>戰役模式</translation>
     </message>
     <message>
         <source>Practice your skills in a range of training missions</source>
-        <translation type="unfinished"></translation>
+        <translation>透過一系列的培訓任務,練習你的技能</translation>
     </message>
     <message>
         <source>Watch recorded demos</source>
-        <translation type="unfinished"></translation>
+        <translation>觀看錄製的演示</translation>
     </message>
     <message>
         <source>Load a previously saved game</source>
-        <translation type="unfinished"></translation>
+        <translation>讀取以前保存的遊戲</translation>
     </message>
 </context>
 <context>
     <name>PageTraining</name>
     <message>
         <source>No description available</source>
-        <translation type="unfinished"></translation>
+        <translation>沒有可用的描述</translation>
     </message>
     <message>
         <source>Select a mission!</source>
-        <translation type="unfinished"></translation>
+        <translation>選擇一個任務!</translation>
     </message>
     <message>
         <source>Pick the mission or training to play</source>
-        <translation type="unfinished"></translation>
+        <translation>選擇要玩的任務或培訓</translation>
     </message>
     <message>
         <source>Start fighting</source>
-        <translation type="unfinished"></translation>
+        <translation>開始戰鬥</translation>
     </message>
 </context>
 <context>
     <name>PageVideos</name>
     <message>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>名稱</translation>
     </message>
     <message>
         <source>Size</source>
-        <translation type="unfinished"></translation>
+        <translation>大小</translation>
     </message>
     <message numerus="yes">
         <source>%1 bytes</source>
@@ -1585,23 +1600,23 @@
     </message>
     <message>
         <source>(in progress...)</source>
-        <translation type="unfinished"></translation>
+        <translation>(處理中...)</translation>
     </message>
     <message>
         <source>encoding</source>
-        <translation type="unfinished"></translation>
+        <translation>編碼</translation>
     </message>
     <message>
         <source>uploading</source>
-        <translation type="unfinished"></translation>
+        <translation>上傳</translation>
     </message>
     <message>
         <source>Date: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">日期:%1</translation>
     </message>
     <message>
         <source>Size: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">大小:%1</translation>
     </message>
 </context>
 <context>
@@ -1620,7 +1635,7 @@
     </message>
     <message>
         <source>Restrict Team Additions</source>
-        <translation>限制團隊外掛程式</translation>
+        <translation>限制隊伍外掛程式</translation>
     </message>
     <message>
         <source>Ban</source>
@@ -1632,19 +1647,19 @@
     </message>
     <message>
         <source>Ignore</source>
-        <translation type="unfinished"></translation>
+        <translation>忽略</translation>
     </message>
     <message>
         <source>Add friend</source>
-        <translation type="unfinished"></translation>
+        <translation>加為好友</translation>
     </message>
     <message>
         <source>Unignore</source>
-        <translation type="unfinished"></translation>
+        <translation>不忽略</translation>
     </message>
     <message>
         <source>Remove friend</source>
-        <translation type="unfinished"></translation>
+        <translation>刪除好友</translation>
     </message>
     <message>
         <source>Update</source>
@@ -1652,22 +1667,22 @@
     </message>
     <message>
         <source>Restrict Unregistered Players Join</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">限制未註冊的玩家加入</translation>
     </message>
     <message>
         <source>Show games in lobby</source>
-        <translation type="unfinished"></translation>
+        <translation>顯示遊戲大廳</translation>
     </message>
     <message>
         <source>Show games in-progress</source>
-        <translation type="unfinished"></translation>
+        <translation>顯示正在進行的遊戲</translation>
     </message>
 </context>
 <context>
     <name>QCheckBox</name>
     <message>
         <source>Fullscreen</source>
-        <translation>遊戲全螢幕</translation>
+        <translation>全螢幕</translation>
     </message>
     <message>
         <source>Show FPS</source>
@@ -1679,11 +1694,11 @@
     </message>
     <message>
         <source>Append date and time to record file name</source>
-        <translation>記錄名稱中包含具體時間日期</translation>
+        <translation type="unfinished">記錄檔名中包含具體時間日期</translation>
     </message>
     <message>
         <source>Check for updates at startup</source>
-        <translation>啟動時檢查程式升級</translation>
+        <translation>啟動時檢查更新</translation>
     </message>
     <message>
         <source>Show ammo menu tooltips</source>
@@ -1691,83 +1706,83 @@
     </message>
     <message>
         <source>Save password</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">保存密碼</translation>
     </message>
     <message>
         <source>Save account name and password</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">保存帳戶名和密碼</translation>
     </message>
     <message>
         <source>Video is private</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">視頻是私人</translation>
     </message>
     <message>
         <source>Record audio</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">錄製音頻</translation>
     </message>
     <message>
         <source>Use game resolution</source>
-        <translation type="unfinished"></translation>
+        <translation>套用遊戲解析度</translation>
     </message>
     <message>
         <source>Visual effects</source>
-        <translation type="unfinished"></translation>
+        <translation>視覺效果</translation>
     </message>
     <message>
         <source>Sound</source>
-        <translation type="unfinished"></translation>
+        <translation>音效</translation>
     </message>
     <message>
         <source>In-game sound effects</source>
-        <translation type="unfinished"></translation>
+        <translation>在遊戲中的聲音效果</translation>
     </message>
     <message>
         <source>Music</source>
-        <translation type="unfinished"></translation>
+        <translation>音樂</translation>
     </message>
     <message>
         <source>In-game music</source>
-        <translation type="unfinished"></translation>
+        <translation>在遊戲中的音樂</translation>
     </message>
     <message>
         <source>Frontend sound effects</source>
-        <translation type="unfinished"></translation>
+        <translation>前端音效</translation>
     </message>
     <message>
         <source>Frontend music</source>
-        <translation type="unfinished"></translation>
+        <translation>前端的音樂</translation>
     </message>
     <message>
         <source>Team</source>
-        <translation type="unfinished"></translation>
+        <translation>隊伍</translation>
     </message>
     <message>
         <source>Enable team tags by default</source>
-        <translation type="unfinished"></translation>
+        <translation>預設顯示隊伍名標示</translation>
     </message>
     <message>
         <source>Hog</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟</translation>
     </message>
     <message>
         <source>Enable hedgehog tags by default</source>
-        <translation type="unfinished"></translation>
+        <translation>預設顯示刺猬名標示</translation>
     </message>
     <message>
         <source>Health</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">生命</translation>
     </message>
     <message>
         <source>Enable health tags by default</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">預設顯示生命值標示</translation>
     </message>
     <message>
         <source>Translucent</source>
-        <translation type="unfinished"></translation>
+        <translation>半透明</translation>
     </message>
     <message>
         <source>Enable translucent tags by default</source>
-        <translation type="unfinished"></translation>
+        <translation>預設啟用半透明顯示</translation>
     </message>
 </context>
 <context>
@@ -1778,11 +1793,11 @@
     </message>
     <message>
         <source>Level</source>
-        <translation>Lv 級別</translation>
+        <translation type="unfinished">AI等級</translation>
     </message>
     <message>
         <source>(System default)</source>
-        <translation type="unfinished"></translation>
+        <translation>(系統預設值)</translation>
     </message>
     <message>
         <source>Community</source>
@@ -1790,31 +1805,31 @@
     </message>
     <message>
         <source>Disabled</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">關閉</translation>
     </message>
     <message>
         <source>Red/Cyan</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅色/青色</translation>
     </message>
     <message>
         <source>Cyan/Red</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">青色/紅</translation>
     </message>
     <message>
         <source>Red/Blue</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅/藍</translation>
     </message>
     <message>
         <source>Blue/Red</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">藍/紅</translation>
     </message>
     <message>
         <source>Red/Green</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅/綠</translation>
     </message>
     <message>
         <source>Green/Red</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">綠/紅</translation>
     </message>
     <message>
         <source>Side-by-side</source>
@@ -1826,42 +1841,42 @@
     </message>
     <message>
         <source>Red/Cyan grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅/青色灰度</translation>
     </message>
     <message>
         <source>Cyan/Red grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">青色/紅灰度</translation>
     </message>
     <message>
         <source>Red/Blue grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅/藍灰度</translation>
     </message>
     <message>
         <source>Blue/Red grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">藍/紅灰度</translation>
     </message>
     <message>
         <source>Red/Green grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">紅/綠灰度</translation>
     </message>
     <message>
         <source>Green/Red grayscale</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">綠/紅灰度</translation>
     </message>
 </context>
 <context>
     <name>QGroupBox</name>
     <message>
         <source>Team Members</source>
-        <translation>成員</translation>
+        <translation>隊伍成員</translation>
     </message>
     <message>
         <source>Fort</source>
-        <translation>城堡模式</translation>
+        <translation>堡壘</translation>
     </message>
     <message>
         <source>Playing teams</source>
-        <translation>玩家隊伍</translation>
+        <translation type="unfinished">玩家隊伍</translation>
     </message>
     <message>
         <source>Net game</source>
@@ -1877,15 +1892,15 @@
     </message>
     <message>
         <source>Team Settings</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">隊伍設置</translation>
     </message>
     <message>
         <source>Videos</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">視頻</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">描述</translation>
     </message>
 </context>
 <context>
@@ -1900,11 +1915,11 @@
     </message>
     <message>
         <source>Server name:</source>
-        <translation>伺服器名:</translation>
+        <translation>伺服器名稱:</translation>
     </message>
     <message>
         <source>Server port:</source>
-        <translation>伺服器埠:</translation>
+        <translation>伺服器端口:</translation>
     </message>
     <message>
         <source>Host:</source>
@@ -1912,7 +1927,7 @@
     </message>
     <message>
         <source>Port:</source>
-        <translation>埠:</translation>
+        <translation>端口:</translation>
     </message>
     <message>
         <source>Weapons</source>
@@ -1928,7 +1943,7 @@
     </message>
     <message>
         <source>Damage Modifier</source>
-        <translation>傷害修改</translation>
+        <translation type="unfinished">傷害修正</translation>
     </message>
     <message>
         <source>Turn Time</source>
@@ -1940,11 +1955,11 @@
     </message>
     <message>
         <source>Sudden Death Timeout</source>
-        <translation>死亡模式倒計時</translation>
+        <translation type="unfinished">意外死亡倒數</translation>
     </message>
     <message>
         <source>Scheme Name:</source>
-        <translation>設置名稱:</translation>
+        <translation type="unfinished">方案名稱:</translation>
     </message>
     <message>
         <source>Crate Drops</source>
@@ -1952,7 +1967,7 @@
     </message>
     <message>
         <source>Mines Time</source>
-        <translation>佈雷時間</translation>
+        <translation type="unfinished">地雷爆炸緩衝</translation>
     </message>
     <message>
         <source>Mines</source>
@@ -1960,193 +1975,195 @@
     </message>
     <message>
         <source>% Dud Mines</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">地雷啞彈率(%)</translation>
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>名稱</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished"></translation>
+        <translation>類型</translation>
     </message>
     <message>
         <source>Grave</source>
-        <translation type="unfinished"></translation>
+        <translation>墳墓</translation>
     </message>
     <message>
         <source>Flag</source>
-        <translation type="unfinished"></translation>
+        <translation>旗幟</translation>
     </message>
     <message>
         <source>Voice</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">語音</translation>
     </message>
     <message>
         <source>Locale</source>
-        <translation type="unfinished"></translation>
+        <translation>語言環境</translation>
     </message>
     <message>
         <source>Explosives</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">炸藥桶</translation>
     </message>
     <message>
         <source>Quality</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">品質</translation>
     </message>
     <message>
         <source>% Health Crates</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">急救箱率(%)</translation>
     </message>
     <message>
         <source>Health in Crates</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">急救箱生命</translation>
     </message>
     <message>
         <source>Sudden Death Water Rise</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">意外死亡水上升</translation>
     </message>
     <message>
         <source>Sudden Death Health Decrease</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">意外死亡生命減少</translation>
     </message>
     <message>
         <source>% Rope Length</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">繩長(%)</translation>
     </message>
     <message>
         <source>Stereo rendering</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">立體渲染</translation>
     </message>
     <message>
         <source>Style</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">風格</translation>
     </message>
     <message>
         <source>Scheme</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">方案</translation>
     </message>
     <message>
         <source>% Get Away Time</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">爆炸逃離緩衝(%)</translation>
     </message>
     <message>
         <source>There are videos that are currently being processed.
 Exiting now will abort them.
 Do you really want to quit?</source>
-        <translation type="unfinished"></translation>
+        <translation>有視頻正在處理中
+現在離開將中止它
+你確定要離開嗎?</translation>
     </message>
     <message>
         <source>Please provide either the YouTube account name or the email address associated with the Google Account.</source>
-        <translation type="unfinished"></translation>
+        <translation>請提供YouTube帳戶名稱或與Google帳戶關聯的電子郵件地址。</translation>
     </message>
     <message>
         <source>Account name (or email): </source>
-        <translation type="unfinished"></translation>
+        <translation>賬戶名(或電子郵件):</translation>
     </message>
     <message>
         <source>Password: </source>
-        <translation type="unfinished"></translation>
+        <translation>密碼:</translation>
     </message>
     <message>
         <source>Video title: </source>
-        <translation type="unfinished"></translation>
+        <translation>視頻標題:</translation>
     </message>
     <message>
         <source>Video description: </source>
-        <translation type="unfinished"></translation>
+        <translation>視頻說明:</translation>
     </message>
     <message>
         <source>Tags (comma separated): </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">標籤(以逗號分隔):</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation>描寫</translation>
     </message>
     <message>
         <source>Nickname</source>
-        <translation type="unfinished">匿稱</translation>
+        <translation>暱稱</translation>
     </message>
     <message>
         <source>Format</source>
-        <translation type="unfinished"></translation>
+        <translation>格式</translation>
     </message>
     <message>
         <source>Audio codec</source>
-        <translation type="unfinished"></translation>
+        <translation>音頻編解碼器</translation>
     </message>
     <message>
         <source>Video codec</source>
-        <translation type="unfinished"></translation>
+        <translation>視頻編解碼器</translation>
     </message>
     <message>
         <source>Framerate</source>
-        <translation type="unfinished"></translation>
+        <translation>畫面刷新率</translation>
     </message>
     <message>
         <source>Bitrate (Kbps)</source>
-        <translation type="unfinished"></translation>
+        <translation>位元速率 (Kbps)</translation>
     </message>
     <message>
         <source>This development build is &apos;work in progress&apos; and may not be compatible with other versions of the game, while some features might be broken or incomplete!</source>
-        <translation type="unfinished"></translation>
+        <translation>這個開發版本是“尚未完成的”,可能不與其他的版本兼容,同時一些功能可能被破壞或殘缺!</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">遊戲全螢幕</translation>
+        <translation>全螢幕</translation>
     </message>
     <message>
         <source>Fullscreen Resolution</source>
-        <translation type="unfinished"></translation>
+        <translation>全螢幕解析度</translation>
     </message>
     <message>
         <source>Windowed Resolution</source>
-        <translation type="unfinished"></translation>
+        <translation>視窗解析度</translation>
     </message>
     <message>
         <source>Your Email</source>
-        <translation type="unfinished"></translation>
+        <translation>你的電子郵件</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished"></translation>
+        <translation>摘要</translation>
     </message>
     <message>
         <source>Send system information</source>
-        <translation type="unfinished"></translation>
+        <translation>發送系統信息</translation>
     </message>
     <message>
         <source>Type the security code:</source>
-        <translation type="unfinished"></translation>
+        <translation>鍵入安全碼:</translation>
     </message>
     <message>
         <source>Revision</source>
-        <translation type="unfinished"></translation>
+        <translation>版本</translation>
     </message>
     <message>
         <source>This program is distributed under the %1</source>
-        <translation type="unfinished"></translation>
+        <translation>此程序使用%1釋出</translation>
     </message>
     <message>
         <source>This setting will be effective at next restart.</source>
-        <translation type="unfinished"></translation>
+        <translation>該設置將在下次重啟時生效。</translation>
     </message>
     <message>
         <source>Tip: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>提示:%1</translation>
     </message>
     <message>
         <source>Displayed tags above hogs and translucent tags</source>
-        <translation type="unfinished"></translation>
+        <translation>刺蝟頭上顯示的標籤和半透明的標籤</translation>
     </message>
     <message>
         <source>World Edge</source>
-        <translation type="unfinished"></translation>
+        <translation>世界邊緣</translation>
     </message>
     <message>
         <source>Script parameter</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">腳本參數</translation>
     </message>
 </context>
 <context>
@@ -2157,11 +2174,11 @@
     </message>
     <message>
         <source>hedgehog %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟 %1</translation>
     </message>
     <message>
         <source>anonymous</source>
-        <translation type="unfinished"></translation>
+        <translation>匿名</translation>
     </message>
 </context>
 <context>
@@ -2183,53 +2200,53 @@
     </message>
     <message>
         <source>File association failed.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">檔案關聯失敗。</translation>
     </message>
     <message>
         <source>Error while authenticating at google.com:
 </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">在google.com認證時錯誤:</translation>
     </message>
     <message>
         <source>Login or password is incorrect</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">登錄或密碼不正確</translation>
     </message>
     <message>
         <source>Error while sending metadata to youtube.com:
 </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">傳送中繼資料給youtube.com時錯誤:</translation>
     </message>
     <message>
         <source>Teams - Are you sure?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">隊伍 - 你確定嗎?</translation>
     </message>
     <message>
         <source>Do you really want to delete the team &apos;%1&apos;?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你確定要刪除隊伍&apos;%1&apos;?</translation>
     </message>
     <message>
         <source>Cannot delete default scheme &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能刪除預設方案 &quot;%1&quot;!</translation>
     </message>
     <message>
         <source>Please select a record from the list</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">請從列表中選擇一個紀錄</translation>
     </message>
     <message>
         <source>Unable to start server</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">無法開啟伺服器</translation>
     </message>
     <message>
         <source>Hedgewars - Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 - 錯誤</translation>
     </message>
     <message>
         <source>Hedgewars - Success</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 - 成功</translation>
     </message>
     <message>
         <source>All file associations have been set</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">所有檔案關聯已經被設定</translation>
     </message>
     <message>
         <source>Cannot create directory %1</source>
@@ -2237,19 +2254,19 @@
     </message>
     <message>
         <source>Unable to start the server: %1.</source>
-        <translation type="obsolete">無法開始服務端: %1.</translation>
+        <translation type="obsolete">無法開啟伺服器: %1.</translation>
     </message>
     <message>
         <source>Video upload - Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">視頻上錯 - 錯誤</translation>
     </message>
     <message>
         <source>Netgame - Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">網路遊戲 - 錯誤</translation>
     </message>
     <message>
         <source>Please select a server from the list</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">請從列表中選擇一個伺服器</translation>
     </message>
     <message>
         <source>Please enter room name</source>
@@ -2257,23 +2274,23 @@
     </message>
     <message>
         <source>Record Play - Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">記錄播放 - 錯誤</translation>
     </message>
     <message>
         <source>Please select record from the list</source>
-        <translation type="unfinished">請從清單選擇記錄</translation>
+        <translation type="unfinished">請從列表選擇記錄</translation>
     </message>
     <message>
         <source>Cannot rename to </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能改名</translation>
     </message>
     <message>
         <source>Cannot delete file </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能刪除檔案</translation>
     </message>
     <message>
         <source>Room Name - Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">房間名 - 錯誤</translation>
     </message>
     <message>
         <source>Please select room from the list</source>
@@ -2281,129 +2298,131 @@
     </message>
     <message>
         <source>Room Name - Are you sure?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">房間名 - 你確定嗎?</translation>
     </message>
     <message>
         <source>The game you are trying to join has started.
 Do you still want to join the room?</source>
-        <translation type="unfinished"></translation>
+        <translation>你試著加入的遊戲已經開始了。
+你仍要加入這個房間嗎?</translation>
     </message>
     <message>
         <source>Schemes - Warning</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">方案 - 警告</translation>
     </message>
     <message>
         <source>Schemes - Are you sure?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">方案 - 你確定嗎?</translation>
     </message>
     <message>
         <source>Do you really want to delete the game scheme &apos;%1&apos;?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你真的確定要刪除遊戲方案 &apos;%1&apos;?</translation>
     </message>
     <message>
         <source>Videos - Are you sure?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">視頻 - 你確定嗎?</translation>
     </message>
     <message>
         <source>Do you really want to delete the video &apos;%1&apos;?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你確定要刪除視頻 &apos;%1&apos;嗎?</translation>
     </message>
     <message numerus="yes">
         <source>Do you really want to remove %1 file(s)?</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>你確定要移除檔案%1%n嗎?</numerusform>
         </translation>
     </message>
     <message>
         <source>Do you really want to cancel uploading %1?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你確定要取消上傳%1嗎?</translation>
     </message>
     <message>
         <source>File error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">檔案 - 錯誤</translation>
     </message>
     <message>
         <source>Cannot open &apos;%1&apos; for writing</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能開啟&apos;%1&apos;</translation>
     </message>
     <message>
         <source>Cannot open &apos;%1&apos; for reading</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能開啟&apos;%1&apos;</translation>
     </message>
     <message>
         <source>Cannot use the ammo &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能使用武器 &apos;%1&apos;!</translation>
     </message>
     <message>
         <source>Weapons - Warning</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">武器  - 警告</translation>
     </message>
     <message>
         <source>Cannot overwrite default weapon set &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能複寫預設武器設定&apos;%1&apos;!</translation>
     </message>
     <message>
         <source>Cannot delete default weapon set &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不能刪除預設武器設定&apos;%1&apos;!</translation>
     </message>
     <message>
         <source>Weapons - Are you sure?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">武器  -  你確定嗎?</translation>
     </message>
     <message>
         <source>Do you really want to delete the weapon set &apos;%1&apos;?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你確定要刪除武器設定&apos;%1&apos;嗎?</translation>
     </message>
     <message>
         <source>Hedgewars - Nick not registered</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 -  暱稱已經被註冊</translation>
     </message>
     <message>
         <source>System Information Preview</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">系統資訊預覽</translation>
     </message>
     <message>
         <source>Failed to generate captcha</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">產生驗證碼失敗</translation>
     </message>
     <message>
         <source>Failed to download captcha</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">下載驗證碼失敗</translation>
     </message>
     <message>
         <source>Please fill out all fields. Email is optional.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">請填寫所有欄位. 電子郵件地址是選填的. </translation>
     </message>
     <message>
         <source>Hedgewars - Warning</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 -  警告</translation>
     </message>
     <message>
         <source>Hedgewars - Information</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刺蝟大作戰 -  資訊</translation>
     </message>
     <message>
         <source>Not all players are ready</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">並不是所有的玩家都準備就緒</translation>
     </message>
     <message>
         <source>Are you sure you want to start this game?
 Not all players are ready.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你確定要啟動這個遊戲嗎?
+並不是所有的玩家都準備就緒。</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
         <source>No description available</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">沒有可用的描述</translation>
     </message>
 </context>
 <context>
     <name>QPushButton</name>
     <message>
         <source>Play demo</source>
-        <translation>播放 demo</translation>
+        <translation type="unfinished">播放演示</translation>
     </message>
     <message>
         <source>Connect</source>
@@ -2419,7 +2438,7 @@
     </message>
     <message>
         <source>Start server</source>
-        <translation>開始服務端</translation>
+        <translation type="unfinished">啟動伺服器</translation>
     </message>
     <message>
         <source>Update</source>
@@ -2435,11 +2454,11 @@
     </message>
     <message>
         <source>default</source>
-        <translation>默認</translation>
+        <translation>預設值</translation>
     </message>
     <message>
         <source>Rename</source>
-        <translation>重命名</translation>
+        <translation type="unfinished">更名</translation>
     </message>
     <message>
         <source>OK</source>
@@ -2455,97 +2474,97 @@
     </message>
     <message>
         <source>Associate file extensions</source>
-        <translation type="unfinished"></translation>
+        <translation>關聯副檔名</translation>
     </message>
     <message>
         <source>More info</source>
-        <translation type="unfinished"></translation>
+        <translation>更多信息</translation>
     </message>
     <message>
         <source>Set default options</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">回到預設值</translation>
     </message>
     <message>
         <source>Open videos directory</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">打開視頻目錄</translation>
     </message>
     <message>
         <source>Play</source>
-        <translation type="unfinished"></translation>
+        <translation>播放</translation>
     </message>
     <message>
         <source>Upload to YouTube</source>
-        <translation type="unfinished"></translation>
+        <translation>上傳到YouTube</translation>
     </message>
     <message>
         <source>Cancel uploading</source>
-        <translation type="unfinished"></translation>
+        <translation>取消上傳</translation>
     </message>
     <message>
         <source>Restore default coding parameters</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">恢復預設的編碼參數</translation>
     </message>
     <message>
         <source>Open the video directory in your system</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">打開你系統上的視頻目錄</translation>
     </message>
     <message>
         <source>Play this video</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">播放此視頻</translation>
     </message>
     <message>
         <source>Delete this video</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">刪除此視頻</translation>
     </message>
     <message>
         <source>Upload this video to your Youtube account</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">上傳視頻到你的YouTube帳戶</translation>
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">重置</translation>
     </message>
     <message>
         <source>Set the default server port for Hedgewars</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">設置為刺猬大作戰預設的伺服器端口</translation>
     </message>
     <message>
         <source>Invite your friends to your server in just 1 click!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">只要1個點擊就可以邀請你的朋友到你的伺服器!</translation>
     </message>
     <message>
         <source>Click to copy your unique server URL to your clipboard. Send this link to your friends and they will be able to join you.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">點擊複製你獨特的伺服器URL到剪貼簿。將此鏈接發送給你的朋友,他們就可以加入你。</translation>
     </message>
     <message>
         <source>Start private server</source>
-        <translation type="unfinished"></translation>
+        <translation>啟動私人伺服器</translation>
     </message>
 </context>
 <context>
     <name>RoomNamePrompt</name>
     <message>
         <source>Enter a name for your room.</source>
-        <translation type="unfinished"></translation>
+        <translation>為你的房間輸入一個名稱。</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>Create room</source>
-        <translation type="unfinished"></translation>
+        <translation>創建房間</translation>
     </message>
     <message>
         <source>set password</source>
-        <translation type="unfinished"></translation>
+        <translation>設定密碼</translation>
     </message>
 </context>
 <context>
     <name>RoomsListModel</name>
     <message>
         <source>In progress</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">進行中</translation>
     </message>
     <message>
         <source>Room Name</source>
@@ -2581,15 +2600,15 @@
     </message>
     <message>
         <source>Random Maze</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">隨機迷宮</translation>
     </message>
     <message>
         <source>Hand-drawn</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">手繪</translation>
     </message>
     <message>
         <source>Script</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">腳本</translation>
     </message>
     <message>
         <source>Random Perlin</source>
@@ -2600,38 +2619,38 @@
     <name>SeedPrompt</name>
     <message>
         <source>The map seed is the basis for all random values generated by the game.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">地圖種子是基礎由遊戲生成的所有隨機值。</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>Set seed</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">給定種子</translation>
     </message>
     <message>
         <source>Close</source>
-        <translation type="unfinished"></translation>
+        <translation>關閉</translation>
     </message>
 </context>
 <context>
     <name>SelWeaponWidget</name>
     <message>
         <source>Weapon set</source>
-        <translation type="unfinished">武器設置</translation>
+        <translation type="unfinished">武器組合</translation>
     </message>
     <message>
         <source>Probabilities</source>
-        <translation type="unfinished">幾率</translation>
+        <translation>機率</translation>
     </message>
     <message>
         <source>Ammo in boxes</source>
-        <translation type="unfinished"></translation>
+        <translation>箱中彈藥</translation>
     </message>
     <message>
         <source>Delays</source>
-        <translation type="unfinished"></translation>
+        <translation>延遲</translation>
     </message>
     <message>
         <source>new</source>
@@ -2639,19 +2658,20 @@
     </message>
     <message>
         <source>copy of %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">%1的拷貝</translation>
     </message>
 </context>
 <context>
     <name>TCPBase</name>
     <message>
         <source>Unable to start server at %1.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">無法在%1,啟動伺服器。</translation>
     </message>
     <message>
         <source>Unable to run engine at %1
 Error code: %2</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">無法在%1,運行引擎
+錯誤代碼:%2</translation>
     </message>
     <message>
         <source>The game engine died unexpectedly!
@@ -2660,29 +2680,34 @@
 We are very sorry for the inconvenience :(
 
 If this keeps happening, please click the &apos;%2&apos; button in the main menu!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">遊戲引擎意外死亡
+(退出代碼為%1)
+
+我們很抱歉給你帶來不便! :(
+
+如果這一情況持續發生,請點擊主菜單中的“%2”按鈕!</translation>
     </message>
 </context>
 <context>
     <name>TeamSelWidget</name>
     <message>
         <source>At least two teams are required to play!</source>
-        <translation type="unfinished"></translation>
+        <translation>至少要有兩隻隊伍才能玩!</translation>
     </message>
 </context>
 <context>
     <name>ThemePrompt</name>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <source>Search for a theme:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">搜索主題:</translation>
     </message>
     <message>
         <source>Use selected theme</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">使用選定的主題</translation>
     </message>
 </context>
 <context>
@@ -2717,35 +2742,35 @@
     </message>
     <message>
         <source>slot 1</source>
-        <translation>slot 1</translation>
+        <translation type="unfinished">第1類</translation>
     </message>
     <message>
         <source>slot 2</source>
-        <translation>slot 2</translation>
+        <translation type="unfinished">第2類</translation>
     </message>
     <message>
         <source>slot 3</source>
-        <translation>slot 3</translation>
+        <translation type="unfinished">第3類</translation>
     </message>
     <message>
         <source>slot 4</source>
-        <translation>slot 4</translation>
+        <translation type="unfinished">第4類</translation>
     </message>
     <message>
         <source>slot 5</source>
-        <translation>slot 5</translation>
+        <translation type="unfinished">第5類</translation>
     </message>
     <message>
         <source>slot 6</source>
-        <translation>slot 6</translation>
+        <translation type="unfinished">第6類</translation>
     </message>
     <message>
         <source>slot 7</source>
-        <translation>slot 7</translation>
+        <translation type="unfinished">第7類</translation>
     </message>
     <message>
         <source>slot 8</source>
-        <translation>slot 8</translation>
+        <translation type="unfinished">第8類</translation>
     </message>
     <message>
         <source>timer 1 sec</source>
@@ -2769,7 +2794,7 @@
     </message>
     <message>
         <source>capture</source>
-        <translation>奪取</translation>
+        <translation>抓取</translation>
     </message>
     <message>
         <source>quit</source>
@@ -2801,11 +2826,11 @@
     </message>
     <message>
         <source>slot 9</source>
-        <translation>slot 9</translation>
+        <translation type="unfinished">第9類</translation>
     </message>
     <message>
         <source>precise aim</source>
-        <translation>練習瞄準</translation>
+        <translation>精細瞄準</translation>
     </message>
     <message>
         <source>chat</source>
@@ -2821,180 +2846,180 @@
     </message>
     <message>
         <source>zoom in</source>
-        <translation type="unfinished">放大</translation>
+        <translation>放大</translation>
     </message>
     <message>
         <source>zoom out</source>
-        <translation type="unfinished">縮小</translation>
+        <translation>縮小</translation>
     </message>
     <message>
         <source>reset zoom</source>
-        <translation type="unfinished">重置</translation>
+        <translation>重置</translation>
     </message>
     <message>
         <source>long jump</source>
-        <translation type="unfinished">跳遠</translation>
+        <translation>跳遠</translation>
     </message>
     <message>
         <source>high jump</source>
-        <translation type="unfinished">跳高</translation>
+        <translation>跳高</translation>
     </message>
     <message>
         <source>slot 10</source>
-        <translation type="unfinished">slot 10</translation>
+        <translation type="unfinished">第10類</translation>
     </message>
     <message>
         <source>mute audio</source>
-        <translation type="unfinished"></translation>
+        <translation>靜音</translation>
     </message>
     <message>
         <source>record</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">錄像切換</translation>
     </message>
     <message>
         <source>hedgehog info</source>
-        <translation type="unfinished"></translation>
+        <translation>刺蝟資訊</translation>
     </message>
     <message>
         <source>autocam / find hedgehog</source>
-        <translation type="unfinished"></translation>
+        <translation>自動鏡頭/搜尋刺蝟</translation>
     </message>
     <message>
         <source>speed up replay</source>
-        <translation type="unfinished"></translation>
+        <translation>加速播放</translation>
     </message>
 </context>
 <context>
     <name>binds (categories)</name>
     <message>
         <source>Movement</source>
-        <translation type="unfinished"></translation>
+        <translation>移動</translation>
     </message>
     <message>
         <source>Weapons</source>
-        <translation type="unfinished">武器</translation>
+        <translation>武器</translation>
     </message>
     <message>
         <source>Camera</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">鏡頭</translation>
     </message>
     <message>
         <source>Miscellaneous</source>
-        <translation type="unfinished"></translation>
+        <translation>雜項</translation>
     </message>
 </context>
 <context>
     <name>binds (descriptions)</name>
     <message>
         <source>Traverse gaps and obstacles by jumping:</source>
-        <translation type="unfinished">越過障礙:</translation>
+        <translation>藉由跳躍通過間隙與障礙:</translation>
     </message>
     <message>
         <source>Fire your selected weapon or trigger an utility item:</source>
-        <translation type="unfinished">開火、使用物品:</translation>
+        <translation>開火或使用物品:</translation>
     </message>
     <message>
         <source>Pick a weapon or a target location under the cursor:</source>
-        <translation type="unfinished">選取武器、目的地:</translation>
+        <translation>選取游標下的武器或是目標位置:</translation>
     </message>
     <message>
         <source>Switch your currently active hog (if possible):</source>
-        <translation type="unfinished">切換刺蝟(如果可用):</translation>
+        <translation>切換現在能動的刺蝟(如果可能):</translation>
     </message>
     <message>
         <source>Pick a weapon or utility item:</source>
-        <translation type="unfinished">選取武器、物品:</translation>
+        <translation>挑武器或物品:</translation>
     </message>
     <message>
         <source>Set the timer on bombs and timed weapons:</source>
-        <translation type="unfinished">設置定時炸彈等武器時間:</translation>
+        <translation>設置定時炸彈和限時武器的時間:</translation>
     </message>
     <message>
         <source>Move the camera to the active hog:</source>
-        <translation type="obsolete">移動鏡頭到選中刺蝟:</translation>
+        <translation type="obsolete">移動鏡頭到能動的刺蝟:</translation>
     </message>
     <message>
         <source>Move the cursor or camera without using the mouse:</source>
-        <translation type="unfinished">不用滑鼠移動遊標或鏡頭:</translation>
+        <translation>不用滑鼠移動游標或鏡頭:</translation>
     </message>
     <message>
         <source>Modify the camera&apos;s zoom level:</source>
-        <translation type="unfinished">調整鏡頭放大倍數:</translation>
+        <translation>調整鏡頭放大倍數:</translation>
     </message>
     <message>
         <source>Talk to your team or all participants:</source>
-        <translation type="unfinished">同隊友或全部參與者對話:</translation>
+        <translation>同隊友或全部參與者對話:</translation>
     </message>
     <message>
         <source>Pause, continue or leave your game:</source>
-        <translation type="unfinished">暫停、繼續或離開遊戲:</translation>
+        <translation>暫停、繼續或離開遊戲:</translation>
     </message>
     <message>
         <source>Modify the game&apos;s volume while playing:</source>
-        <translation type="unfinished">調整遊戲時音量:</translation>
+        <translation>調整遊戲時音量:</translation>
     </message>
     <message>
         <source>Toggle fullscreen mode:</source>
-        <translation type="unfinished">全屏模式:</translation>
+        <translation>切換全屏模式:</translation>
     </message>
     <message>
         <source>Take a screenshot:</source>
-        <translation type="unfinished">截圖:</translation>
+        <translation>截圖:</translation>
     </message>
     <message>
         <source>Toggle labels above hedgehogs:</source>
-        <translation type="unfinished">切換刺蝟標籤顯示方式:</translation>
+        <translation>切換刺蝟頭上標籤的顯示方式:</translation>
     </message>
     <message>
         <source>Record video:</source>
-        <translation type="unfinished"></translation>
+        <translation>錄像:</translation>
     </message>
     <message>
         <source>Hedgehog movement</source>
-        <translation type="unfinished"></translation>
+        <translation>刺蝟移動</translation>
     </message>
     <message>
         <source>Toggle automatic camera / refocus on active hedgehog:</source>
-        <translation type="unfinished"></translation>
+        <translation>切換自動鏡頭/重新關注能動的刺蝟:</translation>
     </message>
     <message>
         <source>Demo replay:</source>
-        <translation type="unfinished"></translation>
+        <translation>播放演示:</translation>
     </message>
 </context>
 <context>
     <name>binds (keys)</name>
     <message>
         <source>Axis</source>
-        <translation type="unfinished">軸</translation>
+        <translation>軸</translation>
     </message>
     <message>
         <source>(Up)</source>
-        <translation type="unfinished">上</translation>
+        <translation>(上)</translation>
     </message>
     <message>
         <source>(Down)</source>
-        <translation type="unfinished">下</translation>
+        <translation>(下)</translation>
     </message>
     <message>
         <source>Hat</source>
-        <translation type="unfinished">帽子</translation>
+        <translation>帽子</translation>
     </message>
     <message>
         <source>(Left)</source>
-        <translation type="unfinished">左</translation>
+        <translation>(左)</translation>
     </message>
     <message>
         <source>(Right)</source>
-        <translation type="unfinished">右</translation>
+        <translation>(右)</translation>
     </message>
     <message>
         <source>Button</source>
-        <translation type="unfinished">按鍵</translation>
+        <translation>按鈕</translation>
     </message>
     <message>
         <source>Keyboard</source>
-        <translation type="unfinished">鍵盤</translation>
+        <translation>鍵盤</translation>
     </message>
     <message>
         <source>Mouse: Left button</source>
@@ -3018,27 +3043,27 @@
     </message>
     <message>
         <source>Backspace</source>
-        <translation>倒退鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Tab</source>
-        <translation>製錶鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Clear</source>
-        <translation>清除</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Return</source>
-        <translation>返回</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Pause</source>
-        <translation>暫停鍵</translation>
+        <translation>Pause/Break</translation>
     </message>
     <message>
         <source>Escape</source>
-        <translation>逸出鍵</translation>
+        <translation>Esc</translation>
     </message>
     <message>
         <source>Space</source>
@@ -3046,7 +3071,7 @@
     </message>
     <message>
         <source>Delete</source>
-        <translation>刪除鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Numpad 0</source>
@@ -3110,11 +3135,11 @@
     </message>
     <message>
         <source>Enter</source>
-        <translation>回車鍵</translation>
+        <translation>Enter</translation>
     </message>
     <message>
         <source>Equals</source>
-        <translation>等於</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Up</source>
@@ -3134,23 +3159,23 @@
     </message>
     <message>
         <source>Insert</source>
-        <translation>插入鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Home</source>
-        <translation>Home鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>End</source>
-        <translation>End鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Page up</source>
-        <translation>向上翻頁鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Page down</source>
-        <translation>向下翻頁鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Num lock</source>
@@ -3162,7 +3187,7 @@
     </message>
     <message>
         <source>Scroll lock</source>
-        <translation>Scroll Lock鍵</translation>
+        <translation></translation>
     </message>
     <message>
         <source>Right shift</source>
@@ -3198,266 +3223,266 @@
     </message>
     <message>
         <source>A button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">A鈕</translation>
     </message>
     <message>
         <source>B button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">B鈕</translation>
     </message>
     <message>
         <source>X button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">X鈕</translation>
     </message>
     <message>
         <source>Y button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Y鈕</translation>
     </message>
     <message>
         <source>LB button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">LB鈕</translation>
     </message>
     <message>
         <source>RB button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">RB鈕</translation>
     </message>
     <message>
         <source>Back button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Back鈕</translation>
     </message>
     <message>
         <source>Start button</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Start鈕</translation>
     </message>
     <message>
         <source>Left stick</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">左搖桿</translation>
     </message>
     <message>
         <source>Right stick</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">右搖桿</translation>
     </message>
     <message>
         <source>Left stick (Right)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">左搖桿(右)</translation>
     </message>
     <message>
         <source>Left stick (Left)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">左搖桿(左)</translation>
     </message>
     <message>
         <source>Left stick (Down)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">左搖桿(下)</translation>
     </message>
     <message>
         <source>Left stick (Up)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">左搖桿(上)</translation>
     </message>
     <message>
         <source>Left trigger</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">LT鈕</translation>
     </message>
     <message>
         <source>Right trigger</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">RT鈕</translation>
     </message>
     <message>
         <source>Right stick (Down)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">右搖桿(下)</translation>
     </message>
     <message>
         <source>Right stick (Up)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">右搖桿(上)</translation>
     </message>
     <message>
         <source>Right stick (Right)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">右搖桿(右)</translation>
     </message>
     <message>
         <source>Right stick (Left)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">右搖桿(左)</translation>
     </message>
     <message>
         <source>DPad</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">十字键</translation>
     </message>
 </context>
 <context>
     <name>server</name>
     <message>
         <source>Restricted</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">限制</translation>
     </message>
     <message>
         <source>Not room master</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不是房間主人</translation>
     </message>
     <message>
         <source>Corrupted hedgehogs info</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">錯誤的刺蝟資訊</translation>
     </message>
     <message>
         <source>too many teams</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">太多隊伍</translation>
     </message>
     <message>
         <source>too many hedgehogs</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">太多隻刺蝟</translation>
     </message>
     <message>
         <source>There&apos;s already a team with same name in the list</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">已經有一個同樣名稱的隊伍在列表中</translation>
     </message>
     <message>
         <source>round in progress</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">遊戲正在進行</translation>
     </message>
     <message>
         <source>restricted</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">限制</translation>
     </message>
     <message>
         <source>REMOVE_TEAM: no such team</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">移除隊伍: 沒有這樣的隊伍</translation>
     </message>
     <message>
         <source>Not team owner!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不是隊伍的擁有者!</translation>
     </message>
     <message>
         <source>Less than two clans!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">少於兩個家族!</translation>
     </message>
     <message>
         <source>Illegal room name</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不合法的房間名</translation>
     </message>
     <message>
         <source>Room with such name already exists</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">這樣名稱的房間已經存在</translation>
     </message>
     <message>
         <source>Nickname already chosen</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">暱稱已經選擇</translation>
     </message>
     <message>
         <source>Illegal nickname</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">不合法的暱稱</translation>
     </message>
     <message>
         <source>Protocol already known</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">已知協議</translation>
     </message>
     <message>
         <source>Bad number</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">壞數字</translation>
     </message>
     <message>
         <source>Nickname is already in use</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">暱稱已經被使用</translation>
     </message>
     <message>
         <source>No checker rights</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">沒有檢查權</translation>
     </message>
     <message>
         <source>Authentication failed</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">驗證失敗</translation>
     </message>
     <message>
         <source>60 seconds cooldown after kick</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">被踢出後60秒冷卻時間</translation>
     </message>
     <message>
         <source>kicked</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">被踢出</translation>
     </message>
     <message>
         <source>Ping timeout</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Ping超時</translation>
     </message>
     <message>
         <source>bye</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">再見</translation>
     </message>
     <message>
         <source>No such room</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">沒有這樣的房間</translation>
     </message>
     <message>
         <source>Room version incompatible to your hedgewars version</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">房間版本不兼容你的刺猬大作戰版本</translation>
     </message>
     <message>
         <source>Joining restricted</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">加入限制</translation>
     </message>
     <message>
         <source>Registered users only</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">僅已經註冊的使用者</translation>
     </message>
     <message>
         <source>You are banned in this room</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你被這個房間封鎖</translation>
     </message>
     <message>
         <source>Empty config entry</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">空的設定項目</translation>
     </message>
     <message>
         <source>You already have voted</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">你已經投過票了</translation>
     </message>
     <message>
         <source>Voting closed</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">投票已經關閉</translation>
     </message>
     <message>
         <source>New voting started</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">新的投票開始</translation>
     </message>
     <message>
         <source>Voting expired</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">投票已經過期</translation>
     </message>
     <message>
         <source>kick</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">踢</translation>
     </message>
     <message>
         <source>map</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">地圖</translation>
     </message>
     <message>
         <source>pause</source>
-        <translation type="unfinished">暫停</translation>
+        <translation>暫停</translation>
     </message>
     <message>
         <source>Reconnected too fast</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">太快重新連線</translation>
     </message>
     <message>
         <source>Warning! Chat flood protection activated</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">警告! 避免聊天氾濫的防護機制被啟動</translation>
     </message>
     <message>
         <source>Excess flood</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">超額洪水</translation>
     </message>
     <message>
         <source>Game messages flood detected - 1</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">已經偵測到遊戲訊息氾濫 - 1</translation>
     </message>
     <message>
         <source>Game messages flood detected - 2</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">已經偵測到遊戲訊息氾濫 - 2</translation>
     </message>
     <message>
         <source>Warning! Joins flood protection activated</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">警告! 避免加入氾濫的防護機制被啟動</translation>
     </message>
     <message>
         <source>There&apos;s no voting going on</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">沒有正在進行的投票</translation>
     </message>
 </context>
 </TS>
--- a/share/hedgewars/Data/Locale/missions_de.txt	Sun Nov 15 14:42:59 2015 +0100
+++ b/share/hedgewars/Data/Locale/missions_de.txt	Tue Nov 17 15:12:24 2015 +0100
@@ -16,6 +16,9 @@
 Basic_Training_-_Rope.name=Grundlagentraining: Seil
 Basic_Training_-_Rope.desc="Raus da und schwing!"
 
+Basic_Training_-_Flying_Saucer.name=Grundlagentraining: Fliegende Untertasse
+Basic_Training_-_Flying_Saucer.desc="Du willst also ausgerechnet Astronaut werden, wie? Dann lern erstmal fliegen!"
+
 User_Mission_-_Dangerous_Ducklings.name=Mission: Gefährliche Entchen
 User_Mission_-_Dangerous_Ducklings.desc="Nun gut, Rekrut! Es ist Zeit, dass du das im Grundlagentraining Gelernte in die Tag umsetzt!"
 
--- a/share/hedgewars/Data/Locale/missions_en.txt	Sun Nov 15 14:42:59 2015 +0100
+++ b/share/hedgewars/Data/Locale/missions_en.txt	Tue Nov 17 15:12:24 2015 +0100
@@ -16,6 +16,9 @@
 Basic_Training_-_Rope.name=Basic Rope Training
 Basic_Training_-_Rope.desc="Get out there and swing!"
 
+Basic_Training_-_Flying_Saucer.name=Basic Flying Saucer Training
+Basic_Training_-_Flying_Saucer.desc="So you really want to become an astronaut, eh? You should learn how to fly first!"
+
 User_Mission_-_Dangerous_Ducklings.name=Mission: Dangerous Ducklings
 User_Mission_-_Dangerous_Ducklings.desc="Alright, rookie! Time to put what we learned in Basic Training into practice!"
 
@@ -80,4 +83,4 @@
 Challenge_-_Speed_Shoppa_-_Ropes.desc="Take your rope and collect all crates on this medium-sized map."
 
 Challenge_-_Speed_Shoppa_-_ShoppaKing.name=Challenge: The Customer is King
-Challenge_-_Speed_Shoppa_-_ShoppaKing.desc="Show you're worthy of a true king and collect all crates as fast as possible on this large map."
\ No newline at end of file
+Challenge_-_Speed_Shoppa_-_ShoppaKing.desc="Show you're worthy of a true king and collect all crates as fast as possible on this large map."
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua	Tue Nov 17 15:12:24 2015 +0100
@@ -0,0 +1,558 @@
+--[[
+	Flying Saucer Training
+	This is a training mission which teaches many basic (and not-so-basic) moves
+	with the flying saucer.
+
+	Lesson plan:
+	- Taking off
+	- Basic flight
+	- Landing safely
+	- Managing fuel
+	- Changing saucers in mid-flight
+	- Diving
+	- Dropping weapons from flying saucer
+	- Firing from flying saucer with [Precise] + [Attack]
+	- Aiming in flying saucer with [Precise] + [Up]/[Down]
+	- Underwater attack
+	- Free flight with inf. fuel and some weapons at end of training
+
+	FIXME:
+	- Bad respawn animation ("explosion" just happens randomly because of the way the resurrection effect works)
+	- Hide fuel if infinite (probably needs engine support)
+]]
+
+HedgewarsScriptLoad("/Scripts/Locale.lua")
+HedgewarsScriptLoad("/Scripts/Tracker.lua")
+
+local Player = nil -- Pointer to hog created in: onGameInit
+local Target = nil -- Pointer to target hog
+local Objective = false -- Get to the target
+
+local TargetNumber = 0 -- The current target number
+local GrenadeThrown = false -- Used for the Boom Target
+local BazookasLeft = 0 -- Used by the Launch Target and the Unterwater Attack Target
+
+local InfFuel = false -- If true, flying saucer has infinite fuel
+local SaucerGear = nil -- Store flying saucer gear here (if one exists)
+local TargetGears = {} -- List of remaining gears to collect or destroy in the current round
+local TargetsRemaining = 0
+local Barrels = {} -- Table contraining the explosive barrel gears
+
+local CheckTimer = 500 -- Time to wait at least before checking safe landing
+local Check = false -- The last target has recently been collected/destroyed and the CheckTimer is running
+local GrenadeTimer = 0 -- Time after a grenade has been thrown
+
+local TargetPos = {} -- Table of targets
+
+local StartPos = { X = 742, Y = 290 }
+
+--[[
+List of all targets (or "objectives"). The player has to complete them one-by-one and must always land safely afterwards.
+Some target numbers have names for easier reference.
+]]
+TargetPos[1] =  {
+	Targets = {{ X = 1027, Y = 217 }},
+	Ammo = { },
+	Message = loc("Here you will learn how to fly the flying saucer|and get so learn some cool tricks.") .. "|" ..
+	loc("Collect the first crate to begin!"),
+	MessageIcon = -amJetpack, }
+TargetPos[2] = {
+	Targets = {{ X = 1369, Y = 265 }},
+	Ammo = { [amJetpack] = 100 },
+	InfFuel = true,
+	MessageTime = 10000,
+	Message = loc("Get to the crate using your flying saucer!") .. "|" ..
+	loc("Press [Attack] (space bar by default) to start,|repeadedly tap the up, left and right movement keys to accelerate.") .. "|" ..
+	loc("Try to land softly, as you can still take fall damage!"), }
+TargetPos[3] = {
+	Targets = {{ X = 689, Y = 58 }},
+	Ammo = { [amJetpack] = 100 },
+	MessageTime = 5000,
+	Message = loc("Now collect the next crate!") .. "|" .. loc("Be careful, your fuel is limited from now on!") .."|" ..
+	loc("Tip: If you get stuck in this training, use \"Skip turn\" to restart the current objective.") }
+
+-- The Double Target
+local DoubleTarget = 4
+TargetPos[4] = {
+	Targets = { { X = 84, Y = -20 }, { X = 1980 , Y = -20 } },
+	Ammo = { [amJetpack] = 2 },
+	MessageTime = 9000,
+	Message = loc("Now collect the 2 crates to the far left and right.") .. "|" ..
+	loc("You only have 2 flying saucers this time.") .. "|" ..
+	loc("Tip: You can change your flying saucer|in mid-flight by hitting the [Attack] key twice."), }
+TargetPos[5] = {
+	Targets = {{ X = 47, Y = 804 }},
+	Ammo = { [amJetpack] = 100 },
+	MessageTime = 5000,
+	Message = loc("Time for a more interesting stunt, but first just collect the next crate!"), }
+TargetPos[6] = {
+	Targets = {{ X = 604, Y = 871}},
+	MessageTime = 15000,
+	Message = loc("You can dive with your flying saucer!") .. "|" ..
+	loc("Try it now and dive here to collect the crate on the right girder.") .. "|" ..
+	loc("You only have one flying saucer this time.") .. "|" ..
+	loc("Beware, though, you will only be able to move slowly through the water.") .. "|" ..
+	loc("Warning: Never ever leave the flying saucer while in water!"),
+	Ammo = { [amJetpack] = 1 }, }
+
+TargetPos[7] = { 
+	Targets = {{ X = 1884, Y = 704 }},
+	MessageTime = 6500,
+	Message = loc("Now dive just one more time and collect the next crate." .. "|" ..
+		loc("Tip: Don't remain for too long in the water, or you won't make it.")),
+	Ammo = { [amJetpack] = 1}, }
+
+-- The Boom Target
+local BoomTarget = 8
+TargetPos[8] = {
+	Modifier = true, Func = function()
+		Info(loc("Instructions"),
+		loc("Now let's try to drop weapons while flying!") .. "|" ..
+		loc("You have to destroy the target above by dropping a grenade on it from your flying saucer.") .. "|" ..
+		loc("It's not that easy, so listen carefully:") .. "|" ..
+		loc("Step 1: Activate your flying saucer but do NOT move yet!") .. "|" ..
+		loc("Step 2: Select your grenade.") .. "|" ..
+		loc("Step 3: Start flying and get yourself right above the target.") .. "|" ..
+		loc("Step 4: Drop your grenade by pressing the [Long jump] key.") .. "|" ..
+		loc("Step 5: Get away quickly and land safely anywhere." .. "| |" ..
+		loc("Note: We only give you grenades if you stay in your flying saucer.")), nil, 20000)
+
+		SpawnBoomTarget()
+
+		if SaucerGear ~= nil then
+			AddAmmo(Player, amGrenade, 1)
+		else
+			AddAmmo(Player, amGrenade, 0)
+		end
+		GrenadeThrown = false
+
+	end,
+	Ammo = { [amJetpack] = 100 },
+	Respawn = { X = 2000, Y = 742 }, }
+
+-- The Launch Target
+local LaunchTarget = 9
+TargetPos[9] = {
+	Targets = {{ X = 1700, Y = 640, Type = gtTarget }, { X = 1460, Y = 775, Type = gtTarget }},
+	MessageTime = 20000,
+	Message = loc("Only the best pilots can master the following stunts.") .. "|" ..
+		loc("As you've seen, the dropped grenade roughly fell into your flying direction.") .. "|" ..
+		loc("You have to destroy two targets, but the previous technique would be very difficult or dangerous to use.") .. "|" ..
+		loc("So you are able to launch projectiles into your aiming direction, always at full power.") .."|"..
+		loc("To launch a projectile in mid-flight, hold [Precise] and press [Long jump].") .. "|" ..
+		loc("You can even change your aiming direction in mid-flight if you first hold [Precice] and then press [Up] or [Down].") .. "|" ..
+		loc("Tip: Changing your aim while flying is very difficult, so adjust it before you take off."),
+	Ammo = { [amJetpack] = 1, },
+	Respawn = { X = 1764, Y = 916 },
+	ExtraFunc = function()
+		HogTurnLeft(Player, true)
+		if SaucerGear ~= nil then
+			AddAmmo(Player, amBazooka, 2)
+		else
+			AddAmmo(Player, amBazooka, 0)
+		end
+		BazookasLeft = 2
+
+	end }
+
+-- The Underwater Attack Target
+local UnderwaterAttackTarget = 10
+TargetPos[10] = {
+	MessageTime = 17000,
+	Message = loc("Now for the supreme discipline of saucer flying, the underwater attack.") .. "|" ..
+	loc("Basically this is a combination of diving and launching.") .. "|" ..
+	loc("Dropping a weapon while in water would just drown it, but launching one would work.") .."|" ..
+	loc("Based on what you've learned, destroy the target on the girder and as always, land safely!"), 
+	Targets = {{ X = 1200, Y = 930, Type = gtTarget }},
+	Ammo = { [amJetpack] = 1, },
+	Respawn = { X = 1027, Y = 217 },
+	ExtraFunc = function()
+		if SaucerGear ~= nil then
+			AddAmmo(Player, amBazooka, 1)
+		else
+			AddAmmo(Player, amBazooka, 0)
+		end
+		BazookasLeft = 1
+	end }
+TargetPos[11] = {
+	Targets = {{ X = 742, Y = 290 }},
+	MessageTime = 5000,
+	Message = loc("This almost concludes our tutorial.") .. "|" ..
+	loc("You now have infinite fuel, grenades and bazookas for fun.") .. "|" ..
+	loc("Collect or destroy the final crate to finish the training."),
+	Ammo = { [amJetpack] = 100, [amGrenade] = 100, [amBazooka] = 100 },
+	InfFuel = true, }
+TargetPos[12] = { Modifier = true, Func = function()
+	Objective = true
+	AddCaption(loc("Training complete!"), 0xFFFFFFFF, capgrpGameState)
+	Info(loc("Training complete!"), loc("Good bye!"), 4, 5000)
+
+	if SaucerGear ~= nil then
+		DeleteGear(SaucerGear)
+	end
+	SetState(Player, band(GetState(Player), bnot(gstHHDriven)))
+	SetState(Player, bor(GetState(Player), gstWinner))
+	PlaySound(sndVictory, Player)
+
+	SendStat(siGameResult, loc("You have finished the Flying Saucer Training!"))
+	SendStat(siCustomAchievement, loc("Good job!"))
+	SendStat(siPlayerKills, "0", loc("Hogonauts"))
+
+	TurnTimeLeft = 0
+	EndGame()
+end,
+}
+
+-- Just a wrapper for ShowMission
+function Info(Title, Text, Icon, Time)
+	if Time == nil then Time = 0 end
+	if Icon == nil then Icon = 2 end
+	ShowMission(loc("Flying Saucer Training"), Title, Text, Icon, Time)
+end
+
+-- Spawn all the gears for the Boom Target
+function SpawnBoomTarget()
+	if TargetsRemaining < 1 then
+		TargetGears[1] = AddGear(1602, 507, gtTarget, 0, 0, 0, 0)
+		TargetsRemaining = TargetsRemaining + 1
+	end
+
+	if Barrels[1] == nil then
+		Barrels[1] = AddGear(1563, 532, gtExplosives, 0, 0, 0, 0)
+	end
+	if Barrels[2] == nil then
+		Barrels[2] = AddGear(1648, 463, gtExplosives, 0, 0, 0, 0)
+	end
+
+	for i=1,#Barrels do
+		SetHealth(Barrels[i], 1)
+	end
+end
+
+-- Generic target spawning for the current target
+function SpawnTargets()
+	for i=1,#TargetPos[TargetNumber].Targets do
+		if TargetGears[i] == nil then
+			SpawnTarget(TargetPos[TargetNumber].Targets[i].X, TargetPos[TargetNumber].Targets[i].Y,
+				TargetPos[TargetNumber].Targets[i].Type, i)
+		end
+	end
+end
+
+function SpawnTarget( PosX, PosY, Type, ID )
+	if Type ~= nil and Type ~= gtCase then
+		if Type == gtTarget then
+			TargetGears[ID] = AddGear(PosX, PosY, gtTarget, 0, 0, 0, 0)
+		end
+	else
+		TargetGears[ID] = SpawnFakeUtilityCrate(PosX, PosY, false, false)
+	end
+	TargetsRemaining = TargetsRemaining + 1
+end
+
+function AutoSpawn() -- Auto-spawn the next target after you've obtained the current target!
+	TargetNumber = TargetNumber + 1
+	TargetsRemaining = 0
+
+	if TargetPos[TargetNumber].Ammo then
+		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
+			AddAmmo(Player, ammoType, count)
+		end
+		if GetCurAmmoType() ~= amJetpack then
+			SetWeapon(amJetpack)
+		end
+	end
+	if TargetPos[TargetNumber].InfFuel then
+		InfFuel = true
+	else
+		InfFuel = false
+	end
+
+	-- Func (if present) will be run instead of the ordinary spawning handling
+	if TargetPos[TargetNumber].Modifier then -- If there is a modifier, run the function
+		TargetPos[TargetNumber].Func()
+		return true
+	end
+
+	-- ExtraFunc is for additional events for a target
+	if TargetPos[TargetNumber].ExtraFunc ~= nil then
+		TargetPos[TargetNumber].ExtraFunc()
+	end
+
+	local subcap
+	if TargetNumber == 1 then
+		subcap = loc("Training")
+	else
+		subcap = loc("Instructions")
+	end
+	Info(subcap, TargetPos[TargetNumber].Message, TargetPos[TargetNumber].MessageIcon, TargetPos[TargetNumber].MessageTime)
+
+	-- Spawn targets on the next position
+	SpawnTargets()
+
+	if TargetNumber > 1 then
+		AddCaption(loc("Next target is ready!"), 0xFFFFFFFF, capgrpMessage2)
+	end
+end
+
+-- Returns true if the hedgehog has safely "landed" (alive, no flying saucer gear and not moving)
+-- This is to ensure the training only continues when the player didn't screw up and to restart the current target
+function HasHedgehogLandedYet()
+	if band(GetState(Player), gstMoving) == 0 and SaucerGear == nil and GetHealth(Player) > 0 then
+		return true
+	else
+		return false
+	end
+end
+
+-- Clean up the gear mess left behind when the player failed to get a clean state after restarting
+function CleanUpGears()
+	-- (We track flames, grenades, bazooka shells)
+	runOnGears(DeleteGear)
+end
+
+-- Completely restarts the current target/objective; the hedgehog is spawned at the last "checkpoint"
+-- Called when hedgeghog is resurrected or skips turn
+function ResetCurrentTarget()
+	GrenadeThrown = false
+	GrenadeTimer = 0
+	if TargetNumber == LaunchTarget then
+		BazookasLeft = 2
+	elseif TargetNumber == UnderwaterAttackTarget then
+		BazookasLeft = 1
+	else
+		BazookasLeft = 0
+	end
+	Check = false
+
+	CleanUpGears()
+
+	local X, Y
+	if TargetNumber == 1 then
+		X, Y = StartPos.X, StartPos.Y
+	else
+		if TargetPos[TargetNumber-1].Modifier or TargetPos[TargetNumber-1].Respawn ~= nil then
+			X, Y = TargetPos[TargetNumber-1].Respawn.X, TargetPos[TargetNumber-1].Respawn.Y
+		else
+			X, Y = TargetPos[TargetNumber-1].Targets[1].X, TargetPos[TargetNumber-1].Targets[1].Y
+		end
+	end
+	if TargetNumber == BoomTarget then
+		SpawnBoomTarget()
+	end
+	if TargetPos[TargetNumber].Modifier ~= true then
+		SpawnTargets()
+	end
+	if TargetPos[TargetNumber].Ammo then
+		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
+			AddAmmo(Player, ammoType, count)
+		end
+		if GetCurAmmoType() ~= amJetpack then
+			SetWeapon(amJetpack)
+		end
+	end
+	if TargetPos[TargetNumber].InfFuel then
+		InfFuel = true
+	else
+		InfFuel = false
+	end
+
+	SetGearPosition(Player, X, Y)
+end
+
+function onGameInit()
+	Seed = 1
+	GameFlags = gfInfAttack + gfOneClanMode + gfSolidLand + gfDisableWind
+	TurnTime = 2000000 --[[ This rffectively 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
+	Explosives = 0
+	Map = "Eyes"
+	Theme = "EarthRise"
+	SuddenDeathTurns = 50
+	WaterRise = 0
+	HealthDecrease = 0
+
+	-- Team name is a pun on “hedgehog” and “astronauts”
+	AddTeam( loc( "Hogonauts" ), 0xDDDD00, "earth", "Earth", "Default", "cm_galaxy" )
+
+	-- Hedgehog name is a pun on “Neil Armstrong”
+	Player = AddHog( loc( "Neil Hogstrong" ), 0, 1, "NoHat" )
+	SetGearPosition( Player, StartPos.X, StartPos.Y)
+	SetEffect( Player, heResurrectable, 1 )
+end
+
+function onGameStart()
+	SendHealthStatsOff()
+
+	-- Girder near first crate
+	PlaceGirder(1257, 204, 6)
+
+	-- The upper girders
+	PlaceGirder(84, 16, 0)
+	PlaceGirder(1980, 16, 0)
+
+	-- The lower girder platform at the water pit
+	PlaceGirder(509, 896, 4)
+	PlaceGirder(668, 896, 4)
+	PlaceGirder(421, 896, 2)
+	PlaceGirder(758, 896, 2)
+
+	-- Girders for the Launch Target and the Underwater Attack Target
+	PlaceGirder(1191, 960, 4)
+	PlaceGirder(1311, 960, 0)
+	PlaceGirder(1460, 827, 3)
+	PlaceGirder(1509, 763, 2)
+	PlaceGirder(1605, 672, 4)
+	PlaceGirder(1764, 672, 4)
+	PlaceGirder(1803, 577, 6)
+
+	-- Spawn our 1st target using the wrapper function
+	AutoSpawn()
+end
+
+function onAmmoStoreInit()
+	SetAmmo(amJetpack, 0, 0, 0, 0)
+	SetAmmo(amGrenade, 0, 0, 0, 0)
+	SetAmmo(amBazooka, 0, 0, 0, 0)
+
+	-- Added for resetting current target/objective when player is stuck somehow
+	SetAmmo(amSkip, 9, 0, 0, 0)
+end
+
+function onGearAdd(Gear)
+	if GetGearType(Gear) == gtJetpack then
+		SaucerGear = Gear
+		if TargetNumber == BoomTarget and GrenadeThrown == false then
+			AddAmmo(Player, amGrenade, 1)
+		end
+		if (TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget) and BazookasLeft > 0 then
+			AddAmmo(Player, amBazooka, BazookasLeft)
+		end
+	end
+	if GetGearType(Gear) == gtGrenade then
+		GrenadeThrown = true
+		GrenadeTimer = 0
+	end
+	if GetGearType(Gear) == gtShell then
+		BazookasLeft = BazookasLeft - 1
+	end
+	if GetGearType(Gear) == gtFlame or GetGearType(Gear) == gtGrenade or GetGearType(Gear) == gtShell then
+		trackGear(Gear)
+	end
+end
+
+function onGearDelete(Gear)
+	if GetGearType(Player) ~= nil and (GetGearType(Gear) == gtTarget or GetGearType(Gear) == gtCase) then
+		for i=1, #TargetGears do
+			if Gear == TargetGears[i] then
+				TargetGears[i] = nil
+				TargetsRemaining = TargetsRemaining - 1
+			end
+		end
+		if TargetsRemaining <= 0 then
+			if TargetNumber == BoomTarget or not HasHedgehogLandedYet() then
+				if SaucerGear then
+					AddCaption(loc("Objective completed! Now land safely."), 0xFFFFFFFF, capgrpMessage2)
+				end
+				Check = true
+				CheckTimer = 500
+			else
+				AutoSpawn()
+			end
+		end
+	end
+	if GetGearType(Gear) == gtGrenade then
+		GrenadeTimer = 0
+		GrenadeExploded = true
+	end
+	if GetGearType(Gear) == gtJetpack then
+		SaucerGear = nil
+		if TargetNumber == BoomTarget then
+			AddAmmo(Player, amGrenade, 0)
+		end
+		if TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget then
+			AddAmmo(Player, amBazooka, 0)
+		end
+	end
+	if GetGearType(Gear) == gtCase and GetGearType(Player) ~= nil then
+		PlaySound(sndShotgunReload)
+	end
+	if Gear == Barrels[1] then
+		Barrels[1] = nil
+	end
+	if Gear == Barrels[2] then
+		Barrels[2] = nil
+		AddCaption(loc("Kaboom!"), 0xFFFFFFFF, capgrpMessage)
+	end
+end
+
+
+
+function onNewTurn()
+	SetWeapon(amJetpack)
+end
+
+function onGameTick20()
+	if (TurnTimeLeft < 1500000 and not Objective) then
+		TurnTimeLeft = TurnTime
+	end
+	if Check then
+		CheckTimer = CheckTimer - 20
+		if CheckTimer <= 0 then
+			if HasHedgehogLandedYet() then
+				AutoSpawn()
+				Check = false
+				GrenadeThrown = false
+			end
+		end
+	end
+	if GrenadeExploded and TargetNumber == BoomTarget then
+		GrenadeTimer = GrenadeTimer + 20
+		if GrenadeTimer > 1500 then
+			GrenadeTimer = 0
+			GrenadeThrown = false
+			GrenadeExploded = false
+			if SaucerGear and TargetNumber == BoomTarget and TargetsRemaining > 0 then
+				PlaySound(sndShotgunReload)
+				AddCaption(loc("+1 Grenade"), 0xDDDD00FF, capgrpAmmoinfo)
+				AddAmmo(Player, amGrenade, 1)
+			end
+		end
+	end
+	ResetFuel()
+end
+
+-- Used to ensure infinite fuel
+function ResetFuel()
+	if SaucerGear and InfFuel then
+		SetHealth(SaucerGear, 2000)
+	end
+end
+
+onUp = ResetFuel
+onLeft = ResetFuel
+onRight = ResetFuel
+
+function onGearDamage(Gear)
+	if Gear == Player then
+		CleanUpGears()
+		GrenadeThrown = false
+		Check = false
+	end
+end
+
+function onGearResurrect(Gear)
+	if Gear == Player then
+		AddCaption(loc("Oh no! You have died. Try again!"), 0xFFFFFFFF, capgrpMessage2)
+		ResetCurrentTarget()
+	end
+end
+
+function onHogAttack(ammoType)
+	if ammoType == amSkip then
+		AddCaption(loc("Try again!"), 0xFFFFFFFF, capgrpMessage2)
+		ResetCurrentTarget()
+	end
+end
--- a/tools/pas2c/Pas2C.hs	Sun Nov 15 14:42:59 2015 +0100
+++ b/tools/pas2c/Pas2C.hs	Tue Nov 17 15:12:24 2015 +0100
@@ -1,4 +1,5 @@
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleContexts #-}
 module Pas2C where
 
 import Text.PrettyPrint.HughesPJ
--- a/tools/pas2c/PascalParser.hs	Sun Nov 15 14:42:59 2015 +0100
+++ b/tools/pas2c/PascalParser.hs	Tue Nov 17 15:12:24 2015 +0100
@@ -239,10 +239,10 @@
     ] <?> "range declaration"
     where
     rangeft = do
-    e1 <- initExpression
-    string' ".."
-    e2 <- initExpression
-    return $ RangeFromTo e1 e2
+        e1 <- initExpression
+        string' ".."
+        e2 <- initExpression
+        return $ RangeFromTo e1 e2
 
 typeVarDeclaration :: Bool -> Parsec String u [TypeVarDeclaration]
 typeVarDeclaration isImpl = (liftM concat . many . choice) [
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/pas2c/pas2c.cabal	Tue Nov 17 15:12:24 2015 +0100
@@ -0,0 +1,30 @@
+Name:                pas2c
+Version:             0.1
+Synopsis:            pas2c
+Description:         pas2c
+Homepage:            http://www.hedgewars.org/
+License:             GPL-2
+Author:              unC0Rr
+Maintainer:          unC0Rr@hedgewars.org
+Category:            Converter
+Build-type:          Simple
+Cabal-version:       >=1.10
+
+
+Executable pas2c
+  main-is: Main.hs
+
+  default-language:    Haskell2010
+
+  build-depends:
+    base >= 4.3,
+    containers,
+    mtl >= 2,
+    parsec,
+    pretty,
+    transformers
+
+  if !os(windows)
+    build-depends: unix
+
+  ghc-options: -O2