# HG changeset patch # User unc0rr # Date 1449423381 -10800 # Node ID 42a9dd7b724caa6960af01781032394771040030 # Parent 2572afe532af5e7c4733d9fe2533785a44098199# Parent 6f119783a1adb69759c00dea16f39d2c3cefb0a8 Merge default diff -r 2572afe532af -r 42a9dd7b724c .hgtags --- a/.hgtags Sun Dec 06 20:35:58 2015 +0300 +++ b/.hgtags Sun Dec 06 20:36:21 2015 +0300 @@ -70,6 +70,7 @@ 4c4f22cc3fa4e6c1e5cd6cce35350dd93478415f 0.9.22-release 4c4f22cc3fa4e6c1e5cd6cce35350dd93478415f 0.9.22-release 9621fdcad96589b3fd78713a0f31e72f26f068bb 0.9.22-release +a0163b8302c592aac60d98134bb6730f390fcaad Hedgewars-iOS-2.0 7e55468ffe384a3065524c483eb5e3cdb1658fd5 fab746a3597e 0000000000000000000000000000000000000000 fab746a3597e d9622394ec9c2974a84b9b4d9e6c0ac26c4060ff 0.9.22-RC diff -r 2572afe532af -r 42a9dd7b724c .travis.yml --- a/.travis.yml Sun Dec 06 20:35:58 2015 +0300 +++ b/.travis.yml Sun Dec 06 20:36:21 2015 +0300 @@ -1,7 +1,10 @@ language: c +os: + - linux + - osx branches: - except: - gh-pages + only: + master compiler: - gcc - clang @@ -11,15 +14,41 @@ - BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1" - BUILD_ARGS="-DNOSERVER=1 -DNOVIDEOREC=1 -DNOPNG=1" - BUILD_ARGS="-DNOSERVER=1 -DLUA_SYSTEM=0 -DPHYSFS_SYSTEM=0" -matrix: - allow_failures: - # Failures we expect here -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 libglew1.6-dev -script: - - mkdir build && cd build && cmake $BUILD_ARGS .. && make VERBOSE=1 && make test_verbose +before_install: | + if [ "$TRAVIS_OS_NAME" == "linux" ]; then + sudo add-apt-repository -y ppa:zoogie/sdl2-snapshots + sudo apt-get update -qq + elif [ "$TRAVIS_OS_NAME" == "osx" ]; then + brew update --all + fi +install: | + if [ "$TRAVIS_OS_NAME" == "linux" ]; then + sudo apt-get install debhelper cmake dpkg-dev libqt4-dev qt4-qmake libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-parsec3-dev libghc-bytestring-show-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-stm-dev libghc-network-dev libghc-dataenc-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev liblua5.1-0-dev imagemagick fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev libglew1.6-dev + elif [ "$TRAVIS_OS_NAME" == "osx" ]; then + brew install fpc glew qt physfs lua51 sdl2 sdl2_image sdl2_net sdl2_ttf ffmpeg ghc cabal-install + brew install sdl2_mixer --with-vorbis + # use cabal install haskell deps, pas2c ones are covered by server + if [[ "$BUILD_ARGS" != *"NOSERVER"* ]]; then + cabal update + cabal install --only-dependencies gameServer/hedgewars-server.cabal + fi + if [[ "$BUILD_ARGS" == *"BUILD_ENGINE_C"* ]]; then + cabal update + cabal install --only-dependencies tools/pas2c/pas2c.cabal + fi + # avoid installing Sparkle, add default unit path + export BUILD_ARGS="$BUILD_ARGS -DNOAUTOUPDATE=1 -DCMAKE_Pascal_FLAGS=-Fu/usr/local/lib/fpc/$(fpc -iW)/units/x86_64-darwin/*/" + fi +before_script: + - mkdir build && cd build && cmake $BUILD_ARGS .. +script: + - make VERBOSE=1 +after_success: | + if [ "$TRAVIS_OS_NAME" == "linux" ]; then + make test_verbose + elif [ "$TRAVIS_OS_NAME" == "osx" ]; then + make install + fi notifications: email: false irc: @@ -30,3 +59,4 @@ - "See details at %{build_url}" on_success: change on_failure: always + skip_join: true diff -r 2572afe532af -r 42a9dd7b724c ChangeLog.txt --- a/ChangeLog.txt Sun Dec 06 20:35:58 2015 +0300 +++ b/ChangeLog.txt Sun Dec 06 20:36:21 2015 +0300 @@ -30,8 +30,12 @@ Lua-API: + New map parameter: MapFeatureSize -- numeric representation of detail slider below map preview; use within onGameInit()/onPreviewInit() - + New function: SetMaxBuildDistance([ distInPx ]) -- specify how many pixels away a hedgehog can still place girders/etc. set to 0 for no limit; call with no param to reset to default + + New functions: SetMaxBuildDistance([ distInPx ]) -- specify how many pixels away a hedgehog can still place girders/etc. set to 0 for no limit; call with no param to reset to default, + New hook: onSuddenDeath() -- called by engine when sudden death begins + + Parameters are now optional for the generic gear setters. i.e. - SetVisualGearValues(gear, x, y). nil values are skipped and not set. + + PlaceSprite can now set land type (bouncy, indestructible, ice etc), colour the sprite, flip the sprite, and place the sprite behind existing land. + + EraseSprite. Can flip and selectively erase based on land flags. + + More of the gear structure values are now accessible in the generic gear getter/setter. * Previously missing gear states are now available (gstSubmersible, gstFrozen and gstNoGravity) * Fixed OnHogAttack giving the incorrect AmmoType (amNothing) under certain conditions diff -r 2572afe532af -r 42a9dd7b724c gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Sun Dec 06 20:35:58 2015 +0300 +++ b/gameServer/HWProtoInRoomState.hs Sun Dec 06 20:36:21 2015 +0300 @@ -175,11 +175,11 @@ ModifyClient (\c -> c{ teamsInGame = teamsInGame c - 1, - clientClan = if teamsInGame c == 1 then Nothing else Just $ anotherTeamClan clNick team r + clientClan = if teamsInGame c == 1 then Nothing else anotherTeamClan clNick team r }) ] where - anotherTeamClan clNick team = teamcolor . fromMaybe (error "CHECKPOINT 011") . find (\t -> (teamowner t == clNick) && (t /= team)) . teams + anotherTeamClan clNick team = liftM teamcolor . find (\t -> (teamowner t == clNick) && (t /= team)) . teams findTeam = find (\t -> tName == teamname t) . teams diff -r 2572afe532af -r 42a9dd7b724c hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sun Dec 06 20:35:58 2015 +0300 +++ b/hedgewars/uStore.pas Sun Dec 06 20:36:21 2015 +0300 @@ -745,7 +745,7 @@ if SDLGLcontext = nil then SDLGLcontext:= SDL_GL_CreateContext(SDLwindow); SDLTry(SDLGLcontext <> nil, 'SDLGLcontext', true); - SDLTry(SDL_GL_SetSwapInterval(1) = 0, 'SDL_GL_SetSwapInterval', true); + SDL_GL_SetSwapInterval(1); RendererSetup(); diff -r 2572afe532af -r 42a9dd7b724c project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/forwardjump.png Binary file project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/forwardjump.png has changed diff -r 2572afe532af -r 42a9dd7b724c project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/forwardjump_old.png Binary file project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/forwardjump_old.png has changed diff -r 2572afe532af -r 42a9dd7b724c project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m --- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Sun Dec 06 20:35:58 2015 +0300 +++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Sun Dec 06 20:36:21 2015 +0300 @@ -267,7 +267,6 @@ -(void) didReceiveMemoryWarning { - self.previewImage = nil; self.missionName = nil; self.listOfMissionIDs = nil; self.dictOfMissions = nil; diff -r 2572afe532af -r 42a9dd7b724c project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Sun Dec 06 20:35:58 2015 +0300 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Sun Dec 06 20:36:21 2015 +0300 @@ -268,14 +268,14 @@ footer.backgroundColor = [UIColor clearColor]; footer.autoresizingMask = UIViewAutoresizingFlexibleWidth; - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width*80/100, height)]; + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width*90/100, height)]; label.center = CGPointMake(aTableView.frame.size.width/2, height/2); label.textAlignment = UITextAlignmentCenter; label.font = [UIFont italicSystemFontOfSize:12]; label.textColor = [UIColor whiteColor]; label.numberOfLines = 2; label.backgroundColor = [UIColor clearColor]; - label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; + label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth; label.text = NSLocalizedString(@"Setting a Style might force a particular Scheme or Weapon configuration.",@""); diff -r 2572afe532af -r 42a9dd7b724c project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sun Dec 06 20:35:58 2015 +0300 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sun Dec 06 20:36:21 2015 +0300 @@ -194,23 +194,23 @@ } -(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return IS_IPAD() ? 40 : 20; + return IS_IPAD() ? 40 : 30; } -(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger) section { - NSInteger height = IS_IPAD() ? 40 : 20; + NSInteger height = IS_IPAD() ? 40 : 30; UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, height)]; footer.backgroundColor = [UIColor clearColor]; footer.autoresizingMask = UIViewAutoresizingFlexibleWidth; - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width*80/100, height)]; + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width*90/100, height)]; label.center = CGPointMake(aTableView.frame.size.width/2, height/2); label.textAlignment = UITextAlignmentCenter; label.font = [UIFont italicSystemFontOfSize:12]; label.textColor = [UIColor whiteColor]; label.numberOfLines = 2; label.backgroundColor = [UIColor clearColor]; - label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; + label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth; if (section == 0) label.text = NSLocalizedString(@"Tap to add hogs or change color, touch and hold to remove a team.",@""); diff -r 2572afe532af -r 42a9dd7b724c share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Flying_Saucer@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Flying_Saucer@2x.png has changed diff -r 2572afe532af -r 42a9dd7b724c share/hedgewars/Data/Locale/hedgewars_zh_TW.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Dec 06 20:35:58 2015 +0300 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Dec 06 20:36:21 2015 +0300 @@ -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'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 '%1' 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. "%2") to connect on start.</source> <comment>command-line</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">啟動刺蝟大作戰能使用%1(例如 "%2")來連線</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'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'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't specified a password. @@ -377,61 +379,67 @@ If this nick isn'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'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'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's name</source> - <translation type="unfinished"></translation> + <translation>這隻刺猬的名字</translation> </message> <message> <source>Randomize this hedgehog'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 <b>%1</b> with <b>%2</b> pts.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform><b>%1%n</b>的<b>%2</b>傷害獲得最佳攻擊獎。</numerusform> </translation> </message> <message numerus="yes"> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>最佳殺手為<b>%1</b>在一回合<b>%2</b>殺。</numerusform> </translation> </message> <message numerus="yes"> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>這場總共<b>%1</b>隻刺蝟死亡。</numerusform> </translation> </message> <message numerus="yes"> @@ -984,28 +999,28 @@ <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform><b>%1</b>認為攻擊自己的刺猬<b>%2</b>傷害是很好的。</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform><b>%1</b>殺了<b>%2</b>隻自己的刺蝟。</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform><b>%1</b>很慌張,跳過<b>%2</b>次。</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'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 'work in progress' 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 '%1'?</source> - <translation type="unfinished"></translation> + <translation type="unfinished">你確定要刪除隊伍'%1'?</translation> </message> <message> <source>Cannot delete default scheme '%1'!</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能刪除預設方案 "%1"!</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 '%1'?</source> - <translation type="unfinished"></translation> + <translation type="unfinished">你真的確定要刪除遊戲方案 '%1'?</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 '%1'?</source> - <translation type="unfinished"></translation> + <translation type="unfinished">你確定要刪除視頻 '%1'嗎?</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 '%1' for writing</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能開啟'%1'</translation> </message> <message> <source>Cannot open '%1' for reading</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能開啟'%1'</translation> </message> <message> <source>Cannot use the ammo '%1'!</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能使用武器 '%1'!</translation> </message> <message> <source>Weapons - Warning</source> - <translation type="unfinished"></translation> + <translation type="unfinished">武器 - 警告</translation> </message> <message> <source>Cannot overwrite default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能複寫預設武器設定'%1'!</translation> </message> <message> <source>Cannot delete default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation type="unfinished">不能刪除預設武器設定'%1'!</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 '%1'?</source> - <translation type="unfinished"></translation> + <translation type="unfinished">你確定要刪除武器設定'%1'嗎?</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 '%2' 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'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'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'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's no voting going on</source> - <translation type="unfinished"></translation> + <translation type="unfinished">沒有正在進行的投票</translation> </message> </context> </TS> diff -r 2572afe532af -r 42a9dd7b724c share/hedgewars/Data/Locale/missions_de.txt --- a/share/hedgewars/Data/Locale/missions_de.txt Sun Dec 06 20:35:58 2015 +0300 +++ b/share/hedgewars/Data/Locale/missions_de.txt Sun Dec 06 20:36:21 2015 +0300 @@ -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!" diff -r 2572afe532af -r 42a9dd7b724c share/hedgewars/Data/Locale/missions_en.txt --- a/share/hedgewars/Data/Locale/missions_en.txt Sun Dec 06 20:35:58 2015 +0300 +++ b/share/hedgewars/Data/Locale/missions_en.txt Sun Dec 06 20:36:21 2015 +0300 @@ -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." diff -r 2572afe532af -r 42a9dd7b724c share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua Sun Dec 06 20:36:21 2015 +0300 @@ -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