# HG changeset patch # User Xeli # Date 1312472695 -7200 # Node ID 272ed78e59a760c87cde45bc82fab62867eb5759 # Parent b9aed3de7c277f96ab38b2ed5d3b628b78abf1bf# Parent a0455a050ca893257e62e05c32dd912d415b0821 merge diff -r b9aed3de7c27 -r 272ed78e59a7 .hgtags --- a/.hgtags Thu Aug 04 17:41:07 2011 +0200 +++ b/.hgtags Thu Aug 04 17:44:55 2011 +0200 @@ -11,14 +11,34 @@ ae71dff40ecc405a55647b0f52f628674c1ebb51 0.9.14.1-release ae0c6c35414ddc120c8ae94035f287f03a752e78 Hedgewars-iOS-1.2.3 19ba506ed86b6306f7cd01b2613069391f4e34e6 0.9.13-release +19ba506ed86b6306f7cd01b2613069391f4e34e6 0.9.13 +0000000000000000000000000000000000000000 0.9.13 7d8d62a5566ed84688c596b8f55e83cfd171683e 0.9.12-release +7d8d62a5566ed84688c596b8f55e83cfd171683e 0.9.12 +0000000000000000000000000000000000000000 0.9.12 89d0fa6734af24e439755b102080cf6268c50aa6 0.9.11-release +89d0fa6734af24e439755b102080cf6268c50aa6 0.9.11 +0000000000000000000000000000000000000000 0.9.11 990f341a2332a7bef0822b313854544228375e36 0.9.10-release +990f341a2332a7bef0822b313854544228375e36 0.9.10 +0000000000000000000000000000000000000000 0.9.10 8c3e71880f492c61086c2ca2541b52f82a5957b0 0.9.9.2-release +8c3e71880f492c61086c2ca2541b52f82a5957b0 0.9.9.2 +0000000000000000000000000000000000000000 0.9.9.2 040cfeac98127d35f22ac8433b06b09e50d5b28f 0.9.8-release 44cc464de8f320e8018ed9e9cbb7281fd42d0a00 0.9.7-release a32f1eed51a6df2513d471cb849eb110545c50b3 0.9.6-release 6bc4389344c7d7f41bcbc46f986c1dcf88846189 0.9.5-release 52c7981594f6bc3a7ed1b297b80cb38082015401 0.9.4-release +52c7981594f6bc3a7ed1b297b80cb38082015401 0.9.4 +0000000000000000000000000000000000000000 0.9.4 9b2abea1071f83da8fbda70b0bf6cec0ca481b07 0.9.3-release +9b2abea1071f83da8fbda70b0bf6cec0ca481b07 0.9.3 +0000000000000000000000000000000000000000 0.9.3 69f1dc50a1faddf1a52080600a3f4771bedd45c1 0.9.2-release +69f1dc50a1faddf1a52080600a3f4771bedd45c1 0.9.2 +0000000000000000000000000000000000000000 0.9.2 +fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9 +0000000000000000000000000000000000000000 0.9.9 +fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9.1 +0000000000000000000000000000000000000000 0.9.9.1 diff -r b9aed3de7c27 -r 272ed78e59a7 CMakeLists.txt --- a/CMakeLists.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/CMakeLists.txt Thu Aug 04 17:44:55 2011 +0200 @@ -1,11 +1,15 @@ project(hedgewars) + +#initialise cmake environment cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) FOREACH(policy CMP0003 CMP0012) IF(POLICY ${policy}) CMAKE_POLICY(SET ${policy} NEW) ENDIF() ENDFOREACH() +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules) + #detect Mercurial revision (if present) set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME @@ -20,7 +24,7 @@ OUTPUT_VARIABLE version_suffix ) STRING(REGEX REPLACE "[^+]" "" HGCHANGED ${version_suffix}) - STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3:\\1" version_suffix ${version_suffix}) + STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3-\\1" version_suffix ${version_suffix}) IF (HGCHANGED) MESSAGE(STATUS "Building revision ${version_suffix} (SOURCE CODE MODIFIED)") ELSE() @@ -33,11 +37,14 @@ set(HW_DEV false) ENDIF() -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules) -set( CPACK_PACKAGE_VERSION_MAJOR 0 ) -set( CPACK_PACKAGE_VERSION_MINOR 9 ) -set( CPACK_PACKAGE_VERSION_PATCH 16${version_suffix} ) +#versioning +set(CPACK_PACKAGE_VERSION_MAJOR 0) +set(CPACK_PACKAGE_VERSION_MINOR 9) +set(CPACK_PACKAGE_VERSION_PATCH 16${version_suffix}) +set(HEDGEWARS_PROTO_VER 38) +set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + #set some safe values IF(NOT WITH_SERVER) @@ -49,6 +56,7 @@ set(target_dir "bin") +#bundle .app setup if(APPLE) set(CMAKE_FIND_FRAMEWORK "FIRST") @@ -165,8 +173,6 @@ endif() set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) -set( HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" ) -set( HEDGEWARS_PROTO_VER 38 ) if(WITH_SERVER) find_program(ghc_executable ghc) @@ -195,8 +201,8 @@ add_subdirectory(tools) endif() -# CPack vars +# CPack variables set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Hedgewars, a free turn-based strategy") set(CPACK_PACKAGE_VENDOR "Hedgewars Project") set(CPACK_PACKAGE_FILE_NAME "hedgewars-${HEDGEWARS_VERSION}") @@ -278,3 +284,4 @@ ) include(CPack) + diff -r b9aed3de7c27 -r 272ed78e59a7 ChangeLog.txt --- a/ChangeLog.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/ChangeLog.txt Thu Aug 04 17:44:55 2011 +0200 @@ -1,6 +1,46 @@ + features * bugfixes +0.9.15 -> ???: + + New modes: The Specialists, Space Invasion + + Installing content (anything under Data/ - maps, sounds, and any such stuff) to user profile allows custom adding/overriding of any Data/ content + + Sudden Death art + + New Weapon/Utility: Land Spray Gun + + New Game mode: Tag team + + Allow up to 8 teams in a game + + Shoppa scheme by default resets ammo + + Shots are on a tenth of a second delay instead of a 1 and a quarter second delay (fast deagle/portal fire) + + Defective mines explode if they take enough damage + + Rope head can attach to hogs/crates/barrels again (rope still passes through them) + + Control of grenade bounce + + Drill Strike bombs don't explode when leaving ground, but after a (customizable!) timer + + Ukranian localization of Default voice. support for localized voices + + Theme cleanup, including the new theme config file change + + Improvements in scoring and tracking damage + + Camera tracking now toggleable + + Mudball does not end turn + + Indicator for height of plane when using napalm + + Land smoothing (looks less pixelated on generation and damage) + + Improved lua script support (e.g. possibility to change hats) + * Prevent portaling to impossible locations better + * Snow accumulates more smoothly + * Rope should be less sticky now + * Fix for last portal shot always being yellow + * More accurate napalm strike drop location + * AI fixes + * Fixed locales, such as korean + * Code refactoring + * Various bug/leak fixes + +Frontend/Menu and Netgame: + + Drawing straight lines in drawn map mode + + Autokick ignored players joining your room + + Improved nick sorting in lobby and rooms. (not case-sensitive, letters first, friend @ top, ignored @ bottom) + + Display player count in lobby + + Lobby: Player names of online players can be clicked in chat directly so that you don't have to find them in the player list + * Fix invisible icons in popup menus + * Various fixes and adjustments + 0.9.14 -> 0.9.15: + Ability to create, save and load hand drawn maps + New maps: Capture the Flag (Blizzard) Map diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/gamecfgwidget.cpp --- a/QTfrontend/gamecfgwidget.cpp Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/gamecfgwidget.cpp Thu Aug 04 17:44:55 2011 +0200 @@ -49,10 +49,13 @@ QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions); - GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Gameplay"), GBoxOptions), 0, 0); + QLabel *titleLabel = new QLabel(QLabel::tr("Game Options"), GBoxOptions); + titleLabel->setMargin(7); // TODO: make the text larger/richer!!!! + GBoxOptionsLayout->addWidget(titleLabel, 0, 0, 1, 0, Qt::AlignHCenter); + GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Style"), GBoxOptions), 1, 0); Scripts = new QComboBox(GBoxOptions); - GBoxOptionsLayout->addWidget(Scripts, 0, 1); + GBoxOptionsLayout->addWidget(Scripts, 1, 1); Scripts->addItem("Normal"); Scripts->insertSeparator(1); @@ -91,7 +94,7 @@ connect(Scripts, SIGNAL(currentIndexChanged(int)), this, SLOT(scriptChanged(int))); QWidget *SchemeWidget = new QWidget(GBoxOptions); - GBoxOptionsLayout->addWidget(SchemeWidget, 1, 0, 1, 2); + GBoxOptionsLayout->addWidget(SchemeWidget, 2, 0, 1, 2); QGridLayout *SchemeWidgetLayout = new QGridLayout(SchemeWidget); SchemeWidgetLayout->setMargin(0); @@ -100,7 +103,7 @@ SchemeWidgetLayout->addWidget(GameSchemes, 0, 2); connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int))); - SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), SchemeWidget), 0, 0); + SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Scheme"), SchemeWidget), 0, 0); QPixmap pmEdit(":/res/edit.png"); @@ -127,8 +130,6 @@ SchemeWidgetLayout->addWidget(goToWeaponPage, 1, 3); connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons())); - //GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Bind schemes with weapons"), GBoxOptions), 2, 0); - bindEntries = new QCheckBox(SchemeWidget); bindEntries->setToolTip(tr("When this option is enabled selecting a game scheme will auto-select a weapon")); bindEntries->setChecked(true); @@ -136,7 +137,6 @@ bindEntries->setStyleSheet( "QCheckBox::indicator:checked { image: url(\":/res/lock.png\"); }" "QCheckBox::indicator:unchecked { image: url(\":/res/unlock.png\"); }" ); SchemeWidgetLayout->addWidget(bindEntries, 0, 1, 0, 1, Qt::AlignVCenter); - //GBoxOptionsLayout->addWidget(bindEntries, 2, 2); connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &))); connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &))); diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/hwconsts.h --- a/QTfrontend/hwconsts.h Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/hwconsts.h Thu Aug 04 17:44:55 2011 +0200 @@ -99,13 +99,24 @@ // see http://en.wikipedia.org/wiki/List_of_colors -#define HW_TEAMCOLOR_ARRAY { 0xff007fff, /* azure */ \ - 0xffdd0000, /* classic red */ \ - 0xff3e9321, /* classic green */ \ - 0xffa23dbb, /* classic purple */ \ - 0xffffb347, /* pastel orange */ \ - 0xffcfcfc4, /* pastel gray */ \ - 0xffbff000, /* lime */ \ - 0xffffef00, /* yellow */ \ +/*define HW_TEAMCOLOR_ARRAY {0xff007fff, /. azure ./ \ + 0xffdd0000, /. classic red ./ \ + 0xff3e9321, /. classic green ./ \ + 0xffa23dbb, /. classic purple ./ \ + 0xffffb347, /. pastel orange ./ \ + 0xffcfcfc4, /. pastel gray ./ \ + 0xffbff000, /. lime ./ \ + 0xffffef00, /. yellow ./ \ + // add new colors here + 0 }*/ +#define HW_TEAMCOLOR_ARRAY { 0xffd12b42, /* red */ \ + 0xff4980c1, /* blue */ \ + 0xff6ab530, /* green */ \ + 0xffbc64c4, /* purple */ \ + 0xffe76d14, /* orange */ \ + 0xff3fb6e6, /* cyan */ \ + 0xffe3e90c, /* yellow */ \ + 0xff61d4ac, /* mint */ \ + 0xfff1c3e1, /* pink */ \ /* add new colors here */ \ 0 } diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/mapContainer.cpp --- a/QTfrontend/mapContainer.cpp Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/mapContainer.cpp Thu Aug 04 17:44:55 2011 +0200 @@ -175,7 +175,7 @@ connect(cbTemplateFilter, SIGNAL(activated(int)), this, SLOT(setTemplateFilter(int))); maze_size_label = new QLabel(tr("Type"), mapWidget); - mainLayout.addWidget(maze_size_label, 2, 0); + mapLayout->addWidget(maze_size_label, 2, 0); maze_size_label->hide(); cbMazeSize = new QComboBox(mapWidget); cbMazeSize->addItem(tr("Small tunnels"), 0); diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/pagemain.cpp --- a/QTfrontend/pagemain.cpp Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/pagemain.cpp Thu Aug 04 17:44:55 2011 +0200 @@ -91,7 +91,7 @@ Tips << tr("Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.", "Tips"); Tips << tr("The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.", "Tips"); Tips << tr("The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.", "Tips"); - Tips << tr("The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.", "Tips"); + Tips << tr("The Homing Bee can be tricky to use. Its turn radius depends on its velocity, so try to not use full power.", "Tips"); Tips << tr("Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.", "Tips"); Tips << tr("The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.", "Tips"); Tips << tr("If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.", "Tips"); diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/pageoptions.cpp --- a/QTfrontend/pageoptions.cpp Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/pageoptions.cpp Thu Aug 04 17:44:55 2011 +0200 @@ -328,6 +328,12 @@ CBStereoMode->addItem(QComboBox::tr("Side-by-side")); CBStereoMode->addItem(QComboBox::tr("Top-Bottom")); CBStereoMode->addItem(QComboBox::tr("Wiggle")); + CBStereoMode->addItem(QComboBox::tr("Red/Cyan grayscale")); + CBStereoMode->addItem(QComboBox::tr("Cyan/Red grayscale")); + CBStereoMode->addItem(QComboBox::tr("Red/Blue grayscale")); + CBStereoMode->addItem(QComboBox::tr("Blue/Red grayscale")); + CBStereoMode->addItem(QComboBox::tr("Red/Green grayscale")); + CBStereoMode->addItem(QComboBox::tr("Green/Red grayscale")); connect(CBStereoMode, SIGNAL(currentIndexChanged(int)), this, SLOT(forceFullscreen(int))); GBAstereolayout->addWidget(CBStereoMode); diff -r b9aed3de7c27 -r 272ed78e59a7 QTfrontend/teamselhelper.cpp --- a/QTfrontend/teamselhelper.cpp Thu Aug 04 17:41:07 2011 +0200 +++ b/QTfrontend/teamselhelper.cpp Thu Aug 04 17:44:55 2011 +0200 @@ -49,7 +49,7 @@ QIcon(QString(":/res/botlevels/net%1.png").arg(m_team.difficulty)) : QIcon(QString(":/res/botlevels/%1.png").arg(m_team.difficulty)); - butt = new QPushButton(difficultyIcon, team.TeamName, this); + butt = new QPushButton(difficultyIcon, team.TeamName.replace("&","&&"), this); butt->setFlat(true); butt->setToolTip(team.Owner); mainLayout.addWidget(butt); diff -r b9aed3de7c27 -r 272ed78e59a7 gameServer/Actions.hs --- a/gameServer/Actions.hs Thu Aug 04 17:41:07 2011 +0200 +++ b/gameServer/Actions.hs Thu Aug 04 17:44:55 2011 +0200 @@ -45,6 +45,8 @@ | KickClient ClientIndex | KickRoomClient ClientIndex | BanClient NominalDiffTime B.ByteString ClientIndex + | BanIP B.ByteString NominalDiffTime B.ByteString + | BanList | ChangeMaster | RemoveClientTeams ClientIndex | ModifyClient (ClientInfo -> ClientInfo) @@ -393,12 +395,25 @@ modify (\s -> s{clientIndex = Just banId}) clHost <- client's host currentTime <- io getCurrentTime - let msg = B.concat ["Ban for ", B.pack . show $ seconds, "seconds (", reason, ")"] + let msg = B.concat ["Ban for ", B.pack . show $ seconds, " (", reason, ")"] mapM_ processAction [ AddIP2Bans clHost msg (addUTCTime seconds currentTime) , KickClient banId ] +processAction (BanIP ip seconds reason) = do + currentTime <- io getCurrentTime + let msg = B.concat ["Ban for ", B.pack . show $ seconds, " (", reason, ")"] + processAction $ + AddIP2Bans ip msg (addUTCTime seconds currentTime) + +processAction BanList = do + ch <- client's sendChan + bans <- gets (bans . serverInfo) + processAction $ + AnswerClients [ch] ["BANLIST", B.pack $ show bans] + + processAction (KickRoomClient kickId) = do modify (\s -> s{clientIndex = Just kickId}) @@ -442,15 +457,13 @@ si <- gets serverInfo let validBans = filter (checkNotExpired clTime) $ bans si let ban = L.find (checkBan clHost clNick) $ validBans - when (isJust ban) $ - mapM_ processAction [ + mapM_ processAction $ ModifyServerInfo (\s -> s{bans = validBans}) - , ByeClient (getBanReason $ fromJust ban) - ] + : [ByeClient (getBanReason $ fromJust ban) | isJust ban] where checkNotExpired testTime (BanByIP _ _ time) = testTime `diffUTCTime` time <= 0 checkNotExpired testTime (BanByNick _ _ time) = testTime `diffUTCTime` time <= 0 - checkBan ip _ (BanByIP bip _ _) = bip == ip + checkBan ip _ (BanByIP bip _ _) = bip `B.isPrefixOf` ip checkBan _ n (BanByNick bn _ _) = bn == n getBanReason (BanByIP _ msg _) = msg getBanReason (BanByNick _ msg _) = msg diff -r b9aed3de7c27 -r 272ed78e59a7 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Thu Aug 04 17:41:07 2011 +0200 +++ b/gameServer/HWProtoLobbyState.hs Thu Aug 04 17:44:55 2011 +0200 @@ -154,6 +154,16 @@ cl <- thisClient banId <- clientByNick banNick return [BanClient 60 reason (fromJust banId) | isAdministrator cl && isJust banId && fromJust banId /= ci] + +handleCmd_lobby ["BANIP", ip, reason, duration] = do + (ci, _) <- ask + cl <- thisClient + return [BanIP ip (readInt_ duration) reason | isAdministrator cl] + +handleCmd_lobby ["BANLIST"] = do + (ci, _) <- ask + cl <- thisClient + return [BanList | isAdministrator cl] handleCmd_lobby ["SET_SERVER_VAR", "MOTD_NEW", newMessage] = do diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/ArgParsers.inc --- a/hedgewars/ArgParsers.inc Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/ArgParsers.inc Thu Aug 04 17:44:55 2011 +0200 @@ -50,7 +50,14 @@ UserNick:= DecodeBase64(ParamStr(14)); val(ParamStr(15), cReducedQuality); val(ParamStr(16), tmp); - cStereoMode:= TStereoMode(max(0, min(ord(high(TStereoMode)), tmp))); + cGrayScale:= false; + if (tmp > 9) and (tmp < 16) then + begin + cGrayScale:= true; + cStereoMode:= TStereoMode(max(0, min(ord(high(TStereoMode)), tmp-9))) + end + else if tmp <= 9 then cStereoMode:= TStereoMode(max(0, min(ord(high(TStereoMode)), tmp))) + else cStereoMode:= TStereoMode(max(0, min(ord(high(TStereoMode)), tmp-6))); cLocaleFName:= ParamStr(17); end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/GSHandlers.inc Thu Aug 04 17:44:55 2011 +0200 @@ -156,12 +156,8 @@ AddCaption(Format(GetEventString(eidDrowned), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); end end - else if Gear^.Kind = gtFlake then - begin - DeleteGear(Gear); - exit - end - else Gear^.doStep := @doStepDrowningGear + else Gear^.doStep := @doStepDrowningGear; + if Gear^.Kind = gtFlake then exit // skip splashes end; if ((not isSubmersible) and (Y < cWaterLine + 64 + Gear^.Radius)) or (isSubmersible and (Y < cWaterLine + 2 + Gear^.Radius) and ((CurAmmoGear^.Pos = 0) and (CurAmmoGear^.dY < _0_01))) then @@ -361,12 +357,12 @@ else Gear^.State := Gear^.State or gstMoving; - if (Gear^.nImpactSounds > 0) then - if ((Gear^.Damage <> 0) or ((Gear^.State and (gstCollision or gstMoving)) = (gstCollision or - gstMoving))) and - ((Gear^.dX.QWordValue > _0_1.QWordValue) or (Gear^.dY.QWordValue > _0_1.QWordValue)) then - PlaySound(TSound(ord(Gear^.ImpactSound) + LongInt(GetRandom(Gear^.nImpactSounds))), true - ); + if (Gear^.nImpactSounds > 0) and + ((Gear^.Damage <> 0) or + ((Gear^.State and (gstCollision or gstMoving)) = (gstCollision or gstMoving))) and + ((Gear^.dX.QWordValue > _0_1.QWordValue) or + (Gear^.dY.QWordValue > _0_1.QWordValue)) then + PlaySound(TSound(ord(Gear^.ImpactSound) + LongInt(GetRandom(Gear^.nImpactSounds))), true); end; //////////////////////////////////////////////////////////////////////////////// @@ -500,9 +496,9 @@ gX := hwRound(Gear^.X); gY := hwRound(Gear^.Y); //doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound); - for i:= 0 to 20 do + for i:= 0 to 24 do begin - dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1); + dX := AngleCos(i * 2) * ((_0_15*(i div 5))) * (GetRandom + _1); dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1); Fire := AddGear(gX, gY, gtFlame, 0, dX, dY, 0); Fire^.State := Fire^.State or gsttmpFlag; @@ -595,6 +591,7 @@ draw:= false; if gun then begin + Gear^.State:= Gear^.State and not gstInvisible; doStepFallingGear(Gear); CheckCollision(Gear); if ((Gear^.State and gstCollision) <> 0) or ((Gear^.State and gstMoving) = 0) then draw:= true; @@ -733,7 +730,8 @@ exit end; Gear^.X:= int2hwFloat(GetRandom(LAND_WIDTH+1024)-512); - Gear^.Y:= int2hwFloat(750+(GetRandom(50)-25)) + Gear^.Y:= int2hwFloat(750+(GetRandom(50)-25)); + Gear^.State:= Gear^.State or gstInvisible; end end; @@ -2113,6 +2111,7 @@ gX,gY,i: LongInt; sticky: Boolean; vgt: PVisualGear; + tdX,tdY: HWFloat; begin sticky:= (Gear^.State and gsttmpFlag) <> 0; if not sticky then AllInactive := false; @@ -2158,7 +2157,15 @@ if sticky then begin Gear^.Radius := 7; - AmmoShove(Gear, 2, 30); + tdX:= Gear^.dX; + tdY:= Gear^.dY; + Gear^.dX.QWordValue:= 214748365; + Gear^.dY.QWordValue:= 429496730; + Gear^.dX.isNegative:= getrandom(2)<>1; + Gear^.dY.isNegative:= true; + AmmoShove(Gear, 2, 125); + Gear^.dX:= tdX; + Gear^.dY:= tdY; Gear^.Radius := 1 end; if Gear^.Timer > 0 then @@ -2176,10 +2183,18 @@ if ((GameTicks and $1) = 0) then begin Gear^.Radius := 7; - AmmoShove(Gear, 4, 150); + tdX:= Gear^.dX; + tdY:= Gear^.dY; + Gear^.dX.QWordValue:= 214748365; + Gear^.dY.QWordValue:= 429496730; + Gear^.dX.isNegative:= getrandom(2)<>1; + Gear^.dY.isNegative:= true; + AmmoShove(Gear, 6, 100); + Gear^.dX:= tdX; + Gear^.dY:= tdY; Gear^.Radius := 1; end - else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, Gear^.Hedgehog, 0);//, EXPLNoDamage); + else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 8, Gear^.Hedgehog, 0);//, EXPLNoDamage); //DrawExplosion(gX, gY, 4); if ((GameTicks and $7) = 0) and (Random(2) = 0) then for i:= 1 to Random(2)+1 do @@ -3756,13 +3771,19 @@ or (iterator^.Y < Gear^.Y - r) or (iterator^.Y > Gear^.Y + r) then continue; - +(* +Square check causes fail on many innocent cases. the 3/4s and 1.5 fudge factors... help. +Might still need to remove this section +*) //Will if fit through? //set r to be portal distance - r := Int2hwFloat(Gear^.Radius +1); - - o_x := hwRound(conPortal^.X + conPortal^.dX); - o_y := hwRound(conPortal^.Y + conPortal^.dY); + r := Int2hwFloat(Gear^.Radius * 3 div 4); + o_x := hwRound(conPortal^.X + (conPortal^.dX*_1_5)); + o_y := hwRound(conPortal^.Y + (conPortal^.dY*_1_5)); + //r := Int2hwFloat(Gear^.Radius +1); + + //o_x := hwRound(conPortal^.X + conPortal^.dX); + //o_y := hwRound(conPortal^.Y + conPortal^.dY); r_x := hwRound(conPortal^.X+r*conPortal^.dX); r_y := hwRound(conPortal^.Y+r*conPortal^.dY); rr_x := hwRound(conPortal^.X+r*conPortal^.dX*2); @@ -4391,18 +4412,18 @@ if Gear^.Timer = 0 then begin dec(Gear^.Health); - if (Gear^.Health mod 10) = 0 then + if (Gear^.Health mod 5) = 0 then begin rx := rndSign(getRandom * _0_1); ry := rndSign(getRandom * _0_1); - speed := _0_8 * (_10 / Gear^.Tag); + speed := _0_5 * (_10 / Gear^.Tag); Fire := AddGear(gx, gy, gtFlame, 0, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); Fire^.State := Fire^.State or gsttmpFlag; - if (Gear^.Health mod 20) = 0 then + if (Gear^.Health mod 30) = 0 then Fire := AddGear(gx, gy, gtFlame, 0, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); @@ -4470,18 +4491,16 @@ if Gear^.Timer = 0 then begin dec(Gear^.Health); - if (Gear^.Health mod 5) = 0 then - begin - rx := rndSign(getRandom * _0_1); - ry := rndSign(getRandom * _0_1); - speed := (_3 / Gear^.Tag); - - Flake := AddGear(gx, gy, gtFlake, 0, _0, _0, 0); - Flake^.dX:= SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx; - Flake^.dY:= AngleCos(HHGear^.Angle) * ( - speed) + ry; - Flake^.State := Flake^.State or gsttmpFlag; + + rx := rndSign(getRandom * _0_1); + ry := rndSign(getRandom * _0_1); + speed := (_3 / Gear^.Tag); + + Flake := AddGear(gx, gy, gtFlake, 0, _0, _0, 0); + Flake^.dX:= SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx; + Flake^.dY:= AngleCos(HHGear^.Angle) * ( - speed) + ry; + Flake^.State := Flake^.State or gsttmpFlag; - end; Gear^.Timer:= Gear^.Tag end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/HHHandlers.inc Thu Aug 04 17:44:55 2011 +0200 @@ -77,7 +77,7 @@ ammoidx:= -1; //TryDo(i < 2, 'Engine bug: no ammo in current slot', true) end; - until ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) or (i = 1) + until (i = 1) or ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) end else begin diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/PascalExports.pas Thu Aug 04 17:44:55 2011 +0200 @@ -80,7 +80,6 @@ procedure HW_zoomReset; cdecl; export; begin ZoomValue:= cZoomVal; - //middleClick:= true; // center the camera at current hog if CurrentHedgehog <> nil then followGear:= CurrentHedgehog^.Gear; @@ -237,8 +236,8 @@ function HW_isAmmoMenuNotAllowed: boolean; cdecl; export; begin; - exit ( (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or - ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) ); + exit( (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or + ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) ); end; function HW_isWeaponRequiringClick: boolean; cdecl; export; @@ -268,7 +267,7 @@ function HW_isWeaponRope: boolean cdecl; export; begin if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Ammo <> nil) and (CurrentHedgehog^.BotLevel = 0) then - exit (CurrentHedgehog^.CurAmmoType = amRope) + exit(CurrentHedgehog^.CurAmmoType = amRope) else exit(false); end; @@ -298,17 +297,17 @@ function HW_getWeaponNameByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getWeaponCaptionByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getWeaponDescriptionByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getNumberOfWeapons:LongInt; cdecl; export; @@ -318,6 +317,7 @@ procedure HW_setWeapon(whichone: LongInt); cdecl; export; begin + if (CurrentTeam = nil) then exit; if (not CurrentTeam^.ExtDriven) and (CurrentTeam^.Hedgehogs[0].BotLevel = 0) then SetWeapon(TAmmoType(whichone+1)); end; @@ -331,11 +331,12 @@ var a : PHHAmmo; slot, index: LongInt; begin - if (CurrentTeam = nil) or - (CurrentHedgehog = nil) or - (CurrentTeam^.ExtDriven) or - (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then + // nil check + if (CurrentHedgehog = nil) or (CurrentHedgehog^.Ammo = nil) or (CurrentTeam = nil) then exit(-1); + // hog controlled by opponent (net or ai) + if (CurrentTeam^.ExtDriven) or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then + exit(1); a:= CurrentHedgehog^.Ammo; for slot:= 0 to cMaxSlotIndex do @@ -354,7 +355,10 @@ function HW_getTurnsForCurrentTeam: LongInt; cdecl; export; begin - exit(CurrentTeam^.Clan^.TurnNumber); + if (CurrentTeam <> nil) and (CurrentTeam^.Clan <> nil) then + exit(CurrentTeam^.Clan^.TurnNumber) + else + exit(0); end; function HW_getMaxNumberOfHogs: LongInt; cdecl; export; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/SDLh.pas --- a/hedgewars/SDLh.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/SDLh.pas Thu Aug 04 17:44:55 2011 +0200 @@ -297,6 +297,7 @@ PSDL_Window = Pointer; PSDL_Renderer = Pointer; PSDL_Texture = Pointer; + PSDL_GLContext= Pointer; {$ENDIF} PSDL_Rect = ^TSDL_Rect; @@ -776,11 +777,16 @@ {$IFDEF SDL13} function SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName; function SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): PSDL_Renderer; cdecl; external SDLLibName; +function SDL_DestroyWindow(window: PSDL_Window): LongInt; cdecl; external SDLLibName; function SDL_DestroyRenderer(renderer: PSDL_Renderer): LongInt; cdecl; external SDLLibName; -function SDL_DestroyWindow(window: PSDL_Window): LongInt; cdecl; external SDLLibName; + +function SDL_GL_CreateContext(window: PSDL_Window): PSDL_GLContext; cdecl; external SDLLibName; +procedure SDL_GL_DeleteContext(context: PSDL_GLContext); cdecl; external SDLLibName; +function SDL_GL_SwapWindow(window: PSDL_Window): LongInt; cdecl; external SDLLibName; procedure SDL_VideoQuit; cdecl; external SDLLibName; function SDL_GetNumVideoDisplays: LongInt; cdecl; external SDLLibName; +procedure SDL_ShowWindow(window: PSDL_Window); cdecl; external SDLLibName; function SDL_SetRenderDrawColor(renderer: PSDL_Renderer; r,g,b,a: byte): LongInt; cdecl; external SDLLibName; function SDL_GetRenderer(window: PSDL_Window): PSDL_Renderer; cdecl; external SDLLibName; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/VGSHandlers.inc Thu Aug 04 17:44:55 2011 +0200 @@ -258,7 +258,11 @@ if Gear^.FrameTicks <= Steps then DeleteVisualGear(Gear) else + begin dec(Gear^.FrameTicks, Steps); + if (Gear^.FrameTicks < 501) and (Gear^.FrameTicks mod 5 = 0) then + Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or (((Gear^.Tint and $000000FF) * Gear^.FrameTicks) div 500) + end end; //////////////////////////////////////////////////////////////////////////////// diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uAI.pas Thu Aug 04 17:44:55 2011 +0200 @@ -74,6 +74,9 @@ with CurrentHedgehog^ do a:= CurAmmoType; aa:= a; + + ThreadSwitch(); + repeat if (CanUseAmmo[a]) and ((not isMoved) or ((AmmoTests[a].flags and amtest_OnTurn) = 0)) then @@ -279,10 +282,9 @@ begin WalkMe:= BackMe; Walk(@WalkMe); - if (StartTicks > GameTicks - 1500) and not StopThinking then SDL_Delay(2000); + if (StartTicks > GameTicks - 1500) and not StopThinking then SDL_Delay(1000); if BestActions.Score < -1023 then begin - addfilelog('AI: best score ' + inttostr(bestactions.score)); BestActions.Count:= 0; AddAction(BestActions, aia_Skip, 0, 250, 0, 0); end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uAIActions.pas --- a/hedgewars/uAIActions.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uAIActions.pas Thu Aug 04 17:44:55 2011 +0200 @@ -158,7 +158,7 @@ end else if hwRound(Me^.X) < Param then begin - OutError('AI: WaitXL assert (' + IntToStr(hwRound(Me^.X)) + ' < ' + IntToStr(Param) + ')', false); + //OutError('AI: WaitXL assert (' + IntToStr(hwRound(Me^.X)) + ' < ' + IntToStr(Param) + ')', false); FreeActionsList; exit end @@ -171,7 +171,7 @@ end else if hwRound(Me^.X) > Param then begin - OutError('AI: WaitXR assert (' + IntToStr(hwRound(Me^.X)) + ' > ' + IntToStr(Param) + ')', false); + //OutError('AI: WaitXR assert (' + IntToStr(hwRound(Me^.X)) + ' > ' + IntToStr(Param) + ')', false); FreeActionsList; exit end diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uAIMisc.pas Thu Aug 04 17:44:55 2011 +0200 @@ -302,7 +302,6 @@ begin bRes:= false; GoInfo.Ticks:= 0; -GoInfo.FallPix:= 0; GoInfo.JumpType:= jmpNone; bX:= hwRound(Gear^.X); bY:= hwRound(Gear^.Y); @@ -371,9 +370,7 @@ function HHGo(Gear, AltGear: PGear; var GoInfo: TGoInfo): boolean; var pX, pY: LongInt; - bRes: boolean; begin -bRes:= false; AltGear^:= Gear^; GoInfo.Ticks:= 0; @@ -391,7 +388,7 @@ begin Goinfo.FallPix:= 0; HHJump(AltGear, jmpLJump, GoInfo); // try ljump instead of fall with damage - exit(bRes) + exit(false) end; Gear^.Y:= Gear^.Y + Gear^.dY; if hwRound(Gear^.Y) > pY then inc(GoInfo.FallPix); @@ -400,14 +397,13 @@ inc(GoInfo.Ticks, 410); Gear^.State:= Gear^.State and not (gstMoving or gstHHJumping); Gear^.dY:= _0; - bRes:= true; HHJump(AltGear, jmpLJump, GoInfo); // try ljump instead of fall - exit(bRes) + exit(true) end; continue end; if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= -cLittle else - if (Gear^.Message and gmRight )<>0 then Gear^.dX:= cLittle else exit(bRes); + if (Gear^.Message and gmRight )<>0 then Gear^.dX:= cLittle else exit(false); if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then begin if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX)) @@ -463,7 +459,7 @@ exit(true); until (pX = hwRound(Gear^.X)) and (pY = hwRound(Gear^.Y)) and ((Gear^.State and gstMoving) = 0); HHJump(AltGear, jmpHJump, GoInfo); -HHGo:= bRes; +HHGo:= false; end; function AIrndSign(num: LongInt): LongInt; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uConsts.pas Thu Aug 04 17:44:55 2011 +0200 @@ -120,6 +120,16 @@ cifAllInited = cifRandomize or cifTheme or cifMap; cTransparentColor: Longword = $00000000; + cGrayScale: Boolean = false; + + RGB_LUMINANCE_RED = 0.212671; + RGB_LUMINANCE_GREEN = 0.715160; + RGB_LUMINANCE_BLUE = 0.072169; +(* + RGB_LUMINANCE_RED = 0.3333333333; + RGB_LUMINANCE_GREEN = 0.3333333333; + RGB_LUMINANCE_BLUE = 0.3333333333; +*) cMaxTeams = 8; cMaxHHIndex = 7; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uGears.pas Thu Aug 04 17:44:55 2011 +0200 @@ -914,7 +914,7 @@ CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked; if delay2 = 0 then begin - SweepDirty; + if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) then SweepDirty; CheckNoDamage; AliveCount:= 0; // shorter version of check for win to allow typical step activity to proceed for i:= 0 to Pred(ClansCount) do @@ -1069,7 +1069,7 @@ while i < vampDmg do begin vg:= AddVisualGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), vgtHealth); - if vg <> nil then vg^.Frame:= 10; + if vg <> nil then vg^.Tint:= $FF0000FF; inc(i, 5); end; end diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uGearsRender.pas Thu Aug 04 17:44:55 2011 +0200 @@ -1050,15 +1050,15 @@ end; gtNapalmBomb: DrawRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); gtFlake: if (Gear^.State and gstTmpFlag) <> 0 then - //DrawRotatedTextureF(SpritesData[sprSnowBall].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle) begin Tint((cExplosionBorderColor shr RShift) and $FF, (cExplosionBorderColor shr GShift) and $FF, (cExplosionBorderColor shr BShift) and $FF, - (cExplosionBorderColor shr AShift) and $FF); - //DrawRotated(sprSnow, x, y, 0, Gear^.DirAngle); + $FF); // Needs a nicer white texture to tint - DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1); + DrawRotatedTextureF(SpritesData[sprSnowDust].Texture, 1, 0, 0, x, y, 0, 1, 8, 8, Gear^.DirAngle); + //DrawRotated(sprSnowDust, x, y, 0, Gear^.DirAngle); + //DrawTexture(x, y, SpritesData[sprVampiric].Texture, 0.1); Tint($FF, $FF, $FF, $FF); end else if not isInLag then diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uLand.pas --- a/hedgewars/uLand.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uLand.pas Thu Aug 04 17:44:55 2011 +0200 @@ -1096,6 +1096,7 @@ end; Land[y,x]:= lfObject end; + AddProgress(); end; @@ -1314,6 +1315,32 @@ FreeLandObjects; +if cGrayScale then + begin + if (cReducedQuality and rqBlurryLand) = 0 then + for x:= leftX to rightX do + for y:= topY to LAND_HEIGHT-1 do + begin + w:= LandPixels[y,x]; + w:= round(((w shr RShift and $FF) * RGB_LUMINANCE_RED + + (w shr BShift and $FF) * RGB_LUMINANCE_GREEN + + (w shr GShift and $FF) * RGB_LUMINANCE_BLUE)); + if w > 255 then w:= 255; + w:= (w and $FF shl RShift) or (w and $FF shl BShift) or (w and $FF shl GShift) or (LandPixels[y,x] and AMask); + LandPixels[y,x]:= w or (LandPixels[y, x] and AMask) + end + else + for x:= leftX div 2 to rightX div 2 do + for y:= topY div 2 to LAND_HEIGHT-1 div 2 do + begin + w:= LandPixels[y div 2,x div 2]; + w:= ((w shr RShift and $FF) + (w shr BShift and $FF) + (w shr GShift and $FF)) div 3; + if w > 255 then w:= 255; + w:= (w and $FF shl RShift) or (w and $FF shl BShift) or (w and $FF shl GShift) or (LandPixels[y div 2,x div 2] and AMask); + LandPixels[y,x]:= w or (LandPixels[y div 2, x div 2] and AMask) + end + end; + UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT); end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uLandGraphics.pas Thu Aug 04 17:44:55 2011 +0200 @@ -210,81 +210,93 @@ end; function FillLandCircleLinesBG(x, y, dx, dy: LongInt): Longword; -var i, t: LongInt; +var i, t, by, bx: LongInt; cnt: Longword; begin cnt:= 0; t:= y + dy; if (t and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then + begin + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= t; bx:= i; + end + else + begin + by:= t div 2; bx:= i div 2; + end; + if ((Land[t, i] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then begin inc(cnt); - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + LandPixels[by, bx]:= LandBackPixel(i, t) end else - if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 - else - LandPixels[t div 2, i div 2]:= 0; + if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0 + end; t:= y - dy; if (t and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then + begin + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= t; bx:= i; + end + else + begin + by:= t div 2; bx:= i div 2; + end; + if ((Land[t, i] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then begin inc(cnt); - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + LandPixels[by, bx]:= LandBackPixel(i, t) end - else - if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 - else - LandPixels[t div 2, i div 2]:= 0; + else if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0 + end; t:= y + dx; if (t and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then + begin + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= t; bx:= i; + end + else + begin + by:= t div 2; bx:= i div 2; + end; + if ((Land[t, i] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then begin inc(cnt); - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + LandPixels[by, bx]:= LandBackPixel(i, t) end - else - if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 - else - LandPixels[t div 2, i div 2]:= 0; - + else if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0 + end; t:= y - dx; if (t and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then + begin + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= t; bx:= i; + end + else + begin + by:= t div 2; bx:= i div 2; + end; + if ((Land[t, i] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then begin inc(cnt); - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + LandPixels[by, bx]:= LandBackPixel(i, t) end - else - if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 - else - LandPixels[t div 2, i div 2]:= 0; + else if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0 + end; FillLandCircleLinesBG:= cnt; end; @@ -430,23 +442,26 @@ end; procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); -var tx, ty, i: LongInt; +var tx, ty, by, bx, i: LongInt; begin for i:= 0 to Pred(Count) do begin for ty:= Max(y - Radius, 0) to Min(y + Radius, LAND_HEIGHT) do for tx:= Max(0, ar^[i].Left - Radius) to Min(LAND_WIDTH, ar^[i].Right + Radius) do - if ((Land[ty, tx] and lfBasic) <> 0) and not disableLandBack then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= LandBackPixel(tx, ty) - else - LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty) + begin + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= ty; bx:= tx; + end else - if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= 0 - else - LandPixels[ty div 2, tx div 2]:= 0; + begin + by:= ty div 2; bx:= tx div 2; + end; + if ((Land[ty, tx] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then + LandPixels[by, bx]:= LandBackPixel(tx, ty) + else if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0 + end; inc(y, dY) end; @@ -479,7 +494,7 @@ // procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); var nx, ny, dX8, dY8: hwFloat; - i, t, tx, ty, stX, stY, ddy, ddx: Longint; + i, t, tx, ty, by, bx, stX, stY, ddy, ddx: Longint; despeckle : Boolean; begin // (-dY, dX) is (dX, dY) rotated by PI/2 stY:= hwRound(Y); @@ -550,17 +565,18 @@ ty:= hwRound(Y); if ((ty and LAND_HEIGHT_MASK) = 0) and ((tx and LAND_WIDTH_MASK) = 0) and ((Land[ty, tx] and lfIndestructible) = 0) then begin - if ((Land[ty, tx] and lfBasic) <> 0) and not disableLandBack then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= LandBackPixel(tx, ty) - else - LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty) + if (cReducedQuality and rqBlurryLand) = 0 then + begin + by:= ty; bx:= tx; + end else - if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= 0 - else - LandPixels[ty div 2, tx div 2]:= 0; + begin + by:= ty div 2; bx:= tx div 2; + end; + if ((Land[ty, tx] and lfBasic) <> 0) and ((LandPixels[by,bx] and AMask) shr AShift = 255) and not disableLandBack then + LandPixels[by, bx]:= LandBackPixel(tx, ty) + else if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) or ((LandPixels[by,bx] and AMask) shr AShift < 255) then + LandPixels[by, bx]:= 0; Land[ty, tx]:= 0; end @@ -748,7 +764,7 @@ LandPixels[yy, xx]:= 0; Land[Y, X]:= 0; - if not pixelsweep then exit(1) // cannot exit true on pixel sweep, or risk desyncs due to inconsistent resweeps + if not pixelsweep then exit(1) else exit(2) end; end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uLandObjects.pas Thu Aug 04 17:44:55 2011 +0200 @@ -372,7 +372,7 @@ var s, key: shortstring; f: textfile; i: LongInt; - ii: Longword; + ii, t: Longword; c1, c2: TSDL_Color; procedure CheckRect(Width, Height, x, y, w, h: LongWord); @@ -415,6 +415,14 @@ c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); c1.b:= StrToInt(Trim(s)); + if cGrayScale then + begin + t:= round(c1.r * RGB_LUMINANCE_RED + c1.g * RGB_LUMINANCE_GREEN + c1.b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + c1.r:= t; + c1.g:= t; + c1.b:= t + end; glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); SDSkyColor.r:= byte(c1.r * SDTint div 255); SDSkyColor.g:= byte(c1.g * SDTint div 255); @@ -441,6 +449,14 @@ Delete(s, 1, i); WaterColorArray[0].b:= StrToInt(Trim(s)); WaterColorArray[0].a := 255; + if cGrayScale then + begin + t:= round(WaterColorArray[0].r * RGB_LUMINANCE_RED + WaterColorArray[0].g * RGB_LUMINANCE_GREEN + WaterColorArray[0].b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + WaterColorArray[0].r:= t; + WaterColorArray[0].g:= t; + WaterColorArray[0].b:= t + end; WaterColorArray[1]:= WaterColorArray[0]; end else if key = 'water-bottom' then @@ -453,6 +469,14 @@ Delete(s, 1, i); WaterColorArray[2].b:= StrToInt(Trim(s)); WaterColorArray[2].a := 255; + if cGrayScale then + begin + t:= round(WaterColorArray[2].r * RGB_LUMINANCE_RED + WaterColorArray[2].g * RGB_LUMINANCE_GREEN + WaterColorArray[2].b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + WaterColorArray[2].r:= t; + WaterColorArray[2].g:= t; + WaterColorArray[2].b:= t + end; WaterColorArray[3]:= WaterColorArray[2]; end else if key = 'water-opacity' then @@ -566,6 +590,14 @@ Delete(s, 1, i); SDWaterColorArray[0].b:= StrToInt(Trim(s)); SDWaterColorArray[0].a := 255; + if cGrayScale then + begin + t:= round(SDWaterColorArray[0].r * RGB_LUMINANCE_RED + SDWaterColorArray[0].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[0].b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + SDWaterColorArray[0].r:= t; + SDWaterColorArray[0].g:= t; + SDWaterColorArray[0].b:= t + end; SDWaterColorArray[1]:= SDWaterColorArray[0]; end else if key = 'sd-water-bottom' then @@ -578,6 +610,14 @@ Delete(s, 1, i); SDWaterColorArray[2].b:= StrToInt(Trim(s)); SDWaterColorArray[2].a := 255; + if cGrayScale then + begin + t:= round(SDWaterColorArray[2].r * RGB_LUMINANCE_RED + SDWaterColorArray[2].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[2].b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + SDWaterColorArray[2].r:= t; + SDWaterColorArray[2].g:= t; + SDWaterColorArray[2].b:= t + end; SDWaterColorArray[3]:= SDWaterColorArray[2]; end else if key = 'sd-water-opacity' then cSDWaterOpacity:= StrToInt(Trim(s)) @@ -612,6 +652,14 @@ c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); c1.b:= StrToInt(Trim(s)); + if cGrayScale then + begin + t:= round(c1.r * RGB_LUMINANCE_RED + c1.g * RGB_LUMINANCE_GREEN + c1.b * RGB_LUMINANCE_BLUE); + if t > 255 then t:= 255; + c1.r:= t; + c1.g:= t; + c1.b:= t + end; glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); SDSkyColor.r:= byte(c1.r * SDTint div 255); SDSkyColor.g:= byte(c1.g * SDTint div 255); diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uRender.pas --- a/hedgewars/uRender.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uRender.pas Thu Aug 04 17:44:55 2011 +0200 @@ -22,7 +22,7 @@ interface -uses SDLh, uTypes, GLunit; +uses SDLh, uTypes, GLunit, uConsts; procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); procedure DrawFromRect(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture); @@ -453,11 +453,20 @@ procedure Tint(r, g, b, a: Byte); inline; -var nc: Longword; +var nc, tw: Longword; begin nc:= (a shl 24) or (b shl 16) or (g shl 8) or r; if nc = lastTint then exit; +if cGrayScale then + begin + tw:= round(r * RGB_LUMINANCE_RED + g * RGB_LUMINANCE_GREEN + b * RGB_LUMINANCE_BLUE); + if tw > 255 then tw:= 255; + r:= tw; + g:= tw; + b:= tw + end; + glColor4ub(r, g, b, a); lastTint:= nc; end; diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uScript.pas Thu Aug 04 17:44:55 2011 +0200 @@ -986,11 +986,28 @@ LuaError('Lua: Wrong number of parameters passed to SetEffect!') else begin gear := GearByUID(lua_tointeger(L, 1)); - if gear <> nil then + if (gear <> nil) and (gear^.Hedgehog <> nil) then gear^.Hedgehog^.Effects[THogEffect(lua_tointeger(L, 2))]:= lua_toboolean(L, 3); end; lc_seteffect := 0; end; +function lc_geteffect(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 2 then + begin + LuaError('Lua: Wrong number of parameters passed to GetEffect!'); + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if (gear <> nil) and (gear^.Hedgehog <> nil) then + lua_pushboolean(L, gear^.Hedgehog^.Effects[THogEffect(lua_tointeger(L, 2))]) + else + lua_pushboolean(L, false) + end; + lc_geteffect:= 1 +end; function lc_setstate(L : Plua_State) : LongInt; Cdecl; var gear : PGear; @@ -1840,6 +1857,7 @@ lua_register(luaState, 'SetHealth', @lc_sethealth); lua_register(luaState, 'GetHealth', @lc_gethealth); lua_register(luaState, 'SetEffect', @lc_seteffect); +lua_register(luaState, 'GetEffect', @lc_geteffect); lua_register(luaState, 'GetHogClan', @lc_gethogclan); lua_register(luaState, 'GetClanColor', @lc_getclancolor); lua_register(luaState, 'SetClanColor', @lc_setclancolor); diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uTextures.pas --- a/hedgewars/uTextures.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uTextures.pas Thu Aug 04 17:44:55 2011 +0200 @@ -131,6 +131,24 @@ if SDL_MustLock(surf) then SDLTry(SDL_LockSurface(surf) >= 0, true); +fromP4:= Surf^.pixels; + +if cGrayScale then + for y:= 0 to Pred(Surf^.h) do + begin + for x:= 0 to Pred(Surf^.w) do + begin + tw:= fromP4^[x]; + tw:= round((tw shr RShift and $FF) * RGB_LUMINANCE_RED + + (tw shr GShift and $FF) * RGB_LUMINANCE_GREEN + + (tw shr BShift and $FF) * RGB_LUMINANCE_BLUE); + if tw > 255 then tw:= 255; + tw:= (tw and $FF shl RShift) or (tw and $FF shl BShift) or (tw and $FF shl GShift) or (fromP4^[x] and AMask); + fromP4^[x]:= tw; + end; + fromP4:= @(fromP4^[Surf^.pitch div 4]) + end; + if (not SupportNPOTT) and (not (isPowerOf2(Surf^.w) and isPowerOf2(Surf^.h))) then begin tw:= toPowerOf2(Surf^.w); diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uVisualGears.pas Thu Aug 04 17:44:55 2011 +0200 @@ -245,6 +245,7 @@ vgtHealth: begin dx:= 0.001 * random(45); dy:= 0.001 * (random(20) + 25); + Tint:= $00FF00FF; // default to green if random(2) = 0 then dx := -dx; Frame:= 0; FrameTicks:= random(750) + 1250; @@ -432,7 +433,7 @@ // this layer is on the land level (which is close but behind the screen plane) when stereo 1: while Gear <> nil do begin - tinted:= false; + //tinted:= false; if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint); case Gear^.Kind of vgtSmokeTrace: if Gear^.State < 8 then DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); @@ -461,7 +462,8 @@ DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); end; - if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF); + //if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF); + if (Gear^.Tint <> $FFFFFFFF) then Tint($FF,$FF,$FF,$FF); Gear:= Gear^.NextGear end; // this layer is on the screen plane (depth = 0) when stereo @@ -482,14 +484,7 @@ end; vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); - vgtHealth: begin - tinted:= true; - case Gear^.Frame div 10 of - 0:Tint(0, $FF, 0, round(Gear^.FrameTicks * $FF / 1000)); - 1:Tint($FF, 0, 0, round(Gear^.FrameTicks * $FF / 1000)); - end; - DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0); - end; + vgtHealth: DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0); end; if (cReducedQuality and rqAntiBoom) = 0 then case Gear^.Kind of diff -r b9aed3de7c27 -r 272ed78e59a7 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Thu Aug 04 17:41:07 2011 +0200 +++ b/hedgewars/uWorld.pas Thu Aug 04 17:44:55 2011 +0200 @@ -971,7 +971,7 @@ end; if smallScreenOffset <> 0 then begin - SetScale(zoom); + SetScale(cDefaultZoomLevel); if TeamsCount * 20 > cScreenHeight div 5 then Tint($FF,$FF,$FF,$FF); end; diff -r b9aed3de7c27 -r 272ed78e59a7 misc/hedgewars.desktop --- a/misc/hedgewars.desktop Thu Aug 04 17:41:07 2011 +0200 +++ b/misc/hedgewars.desktop Thu Aug 04 17:44:55 2011 +0200 @@ -14,6 +14,7 @@ GenericName[pt]=Batalhas entre ouriços GenericName[ru]=Битвы ежей GenericName[sk]=Bojujúci ježkovia +GenericName[cs]=Bojující ježci GenericName[sv]=Stridande igelkottar Icon=hedgewars.png Exec=hedgewars diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/Appirater.h --- a/project_files/HedgewarsMobile/Classes/Appirater.h Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/Appirater.h Thu Aug 04 17:44:55 2011 +0200 @@ -45,7 +45,7 @@ /* Place your Apple generated software id here. */ -#define APPIRATER_APP_ID 391234866 +#define APPIRATER_APP_ID 391234866 /* Your app's name. @@ -82,13 +82,13 @@ Users will need to have the same version of your app installed for this many days before they will be prompted to rate it. */ -#define DAYS_UNTIL_PROMPT 5 // double +#define DAYS_UNTIL_PROMPT 3 // double /* Users will need to launch the same version of the app this many times before they will be prompted to rate it. */ -#define LAUNCHES_UNTIL_PROMPT 10 // integer +#define LAUNCHES_UNTIL_PROMPT 5 // integer /* 'YES' will show the Appirater alert everytime. Useful for testing how your message diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/Appirater.m --- a/project_files/HedgewarsMobile/Classes/Appirater.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/Appirater.m Thu Aug 04 17:44:55 2011 +0200 @@ -37,6 +37,7 @@ #import "Appirater.h" #import <SystemConfiguration/SCNetworkReachability.h> #import <netinet/in.h> +#import "CommodityFunctions.h" NSString *const kAppiraterLaunchDate = @"kAppiraterLaunchDate"; NSString *const kAppiraterLaunchCount = @"kAppiraterLaunchCount"; @@ -46,47 +47,6 @@ NSString *templateReviewURL = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software"; -@interface Appirater (hidden) - --(BOOL) connectedToNetwork; - -@end - -@implementation Appirater (hidden) - --(BOOL) connectedToNetwork { - // Create zero addy - struct sockaddr_in zeroAddress; - bzero(&zeroAddress, sizeof(zeroAddress)); - zeroAddress.sin_len = sizeof(zeroAddress); - zeroAddress.sin_family = AF_INET; - - // Recover reachability flags - SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); - SCNetworkReachabilityFlags flags; - - BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); - CFRelease(defaultRouteReachability); - - if (!didRetrieveFlags) { - NSLog(@"Error. Could not recover network reachability flags"); - return NO; - } - - BOOL isReachable = flags & kSCNetworkFlagsReachable; - BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; - BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection; - - NSURL *testURL = [NSURL URLWithString:@"http://www.apple.com/"]; - NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0]; - NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:self]; - - return ((isReachable && !needsConnection) || nonWiFi) ? (testConnection ? YES : NO) : NO; -} - -@end - - @implementation Appirater +(void) appLaunched { @@ -146,7 +106,7 @@ launchCount > LAUNCHES_UNTIL_PROMPT && !declinedToRate && !ratedApp) { - if ([self connectedToNetwork]) { // check if they can reach the app store + if (isNetworkReachable()) { // check if they can reach the app store willShowPrompt = YES; [self performSelectorOnMainThread:@selector(showPrompt) withObject:nil waitUntilDone:NO]; } diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/CommodityFunctions.h --- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Thu Aug 04 17:44:55 2011 +0200 @@ -46,6 +46,7 @@ #define MAPS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Maps/"] #define MISSIONS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Maps/"] #define LOCALE_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Locale/"] +#define SCRIPTS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Scripts/plist/"] #define MSG_MEMCLEAN() DLog(@"has cleaned up some memory"); #define MSG_DIDUNLOAD() DLog(@"unloaded"); @@ -75,6 +76,7 @@ UILabel *createLabelWithParams (NSString *title, CGRect frame, CGFloat borderWidth, UIColor *borderColor, UIColor *backgroundColor); CGSize PSPNGSizeFromMetaData (NSString *aFileName); +BOOL isNetworkReachable (void); @interface NSString (extra) diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/CommodityFunctions.m --- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Thu Aug 04 17:44:55 2011 +0200 @@ -27,6 +27,8 @@ #import <QuartzCore/QuartzCore.h> #import <AudioToolbox/AudioToolbox.h> #import <CommonCrypto/CommonDigest.h> +#import <SystemConfiguration/SCNetworkReachability.h> +#import <netinet/in.h> #import "PascalImports.h" #import "hwconsts.h" @@ -39,6 +41,7 @@ // by http://landonf.bikemonkey.org/code/iphone/Determining_Available_Memory.20081203.html void print_free_memory () { +#ifdef DEBUG mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -57,6 +60,7 @@ natural_t mem_free = vm_stat.free_count * pagesize; natural_t mem_total = mem_used + mem_free; DLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total); +#endif } BOOL inline isApplePhone () { @@ -128,6 +132,40 @@ return theLabel; } +BOOL isNetworkReachable (void) { + // Create zero addy + struct sockaddr_in zeroAddress; + bzero(&zeroAddress, sizeof(zeroAddress)); + zeroAddress.sin_len = sizeof(zeroAddress); + zeroAddress.sin_family = AF_INET; + + // Recover reachability flags + SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); + SCNetworkReachabilityFlags flags; + + BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); + CFRelease(defaultRouteReachability); + + if (!didRetrieveFlags) { + NSLog(@"Error. Could not recover network reachability flags"); + return NO; + } + + BOOL isReachable = flags & kSCNetworkFlagsReachable; + BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; + BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection; + + NSURL *testURL = [NSURL URLWithString:@"http://www.apple.com/"]; + NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:20.0]; + NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:nil]; + BOOL testResult = testConnection ? YES : NO; + [testConnection release]; + + return ((isReachable && !needsConnection) || nonWiFi) ? testResult : NO; +} + // this routine checks for the PNG size without loading it in memory // https://github.com/steipete/PSFramework/blob/master/PSFramework%20Version%200.3/PhotoshopFramework/PSMetaDataFunctions.m CGSize PSPNGSizeFromMetaData (NSString *aFileName) { diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/CreationChamber.m --- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Thu Aug 04 17:44:55 2011 +0200 @@ -28,8 +28,11 @@ [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"]; [settings setObject:[NSNumber numberWithBool:NO] forKey:@"classic_menu"]; - [settings setObject:[NSNumber numberWithBool:YES] forKey:@"enhanced"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"multitasking"]; + [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"]; + + // limit graphic usage on older devices + [settings setObject:[NSNumber numberWithBool:IS_VERY_POWERFUL(getModelType())] forKey:@"enhanced"]; // don't overwrite these two strings when present if ([settings objectForKey:@"username"] == nil) diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/GameConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -212,6 +212,10 @@ if ([self isEverythingSet] == NO) return; + NSString *script = self.mapConfigViewController.missionCommand; + if ([script isEqualToString:@""]) + script = self.schemeWeaponConfigViewController.scriptCommand; + // create the configuration file that is going to be sent to engine NSDictionary *gameDictionary = [NSDictionary dictionaryWithObjectsAndKeys: self.mapConfigViewController.seedCommand,@"seed_command", @@ -220,10 +224,10 @@ self.mapConfigViewController.mazeSizeCommand,@"mazesize_command", self.mapConfigViewController.themeCommand,@"theme_command", self.mapConfigViewController.staticMapCommand,@"staticmap_command", - self.mapConfigViewController.missionCommand,@"mission_command", self.teamConfigViewController.listOfSelectedTeams,@"teams_list", self.schemeWeaponConfigViewController.selectedScheme,@"scheme", self.schemeWeaponConfigViewController.selectedWeapon,@"weapon", + script,@"mission_command", nil]; GameInterfaceBridge *bridge = [[GameInterfaceBridge alloc] initWithController:self]; diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -84,6 +84,9 @@ case 30: //alternateSwitch [settings setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"alternate"]; break; + case 90: //synched weapons/scheme + [settings setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"sync_ws"]; + break; case 70: //enhanced graphics [settings setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"enhanced"]; break; @@ -117,16 +120,13 @@ -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger )section { switch (section) { case 0: // user and pass - return 1; // set 2 here for the password field + return 1; // set 2 here to show the password field break; case 1: // audio return 2; break; - case 2: // other stuff - if (IS_IPAD() == YES) - return 4; - else - return 3; + case 2: // other options + return 5; break; default: DLog(@"Nope"); @@ -225,6 +225,7 @@ } switchContent = (UISwitch *)cell.accessoryView; + cell.detailTextLabel.adjustsFontSizeToFitWidth = YES; switch (row) { case 0: cell.textLabel.text = NSLocalizedString(@"Alternate Damage", @""); @@ -233,22 +234,34 @@ switchContent.tag = 30; break; case 1: - cell.textLabel.text = NSLocalizedString(@"Enanched Graphics Mode", @""); - cell.detailTextLabel.text = NSLocalizedString(@"The game will use more memory so it could crash!", @""); - switchContent.on = [[settings objectForKey:@"enhanced"] boolValue]; - switchContent.tag = 70; + cell.textLabel.text = NSLocalizedString(@"Sync Schemes and Weapons", @""); + cell.detailTextLabel.text = NSLocalizedString(@"Choosing a Scheme will select its associated Weapon", @""); + switchContent.on = [[settings objectForKey:@"sync_ws"] boolValue]; + switchContent.tag = 90; break; case 2: - cell.textLabel.text = NSLocalizedString(@"Multitasking Enabled", @""); + cell.textLabel.text = NSLocalizedString(@"Multitasking", @""); cell.detailTextLabel.text = NSLocalizedString(@"Disable it in case of issues when returing in game", @""); switchContent.on = [[settings objectForKey:@"multitasking"] boolValue]; switchContent.tag = 80; break; case 3: + cell.textLabel.text = NSLocalizedString(@"Enanched Graphics", @""); + cell.detailTextLabel.text = NSLocalizedString(@"Beware that the game will consume more memory", @""); + switchContent.on = [[settings objectForKey:@"enhanced"] boolValue]; + switchContent.tag = 70; + // prevent the oldest devices to even think about enabling it + if (IS_NOT_POWERFUL(getModelType())) + switchContent.enabled = NO; + break; + case 4: cell.textLabel.text = NSLocalizedString(@"Classic Ammo Menu", @""); cell.detailTextLabel.text = NSLocalizedString(@"Select which style of ammo menu you prefer",@""); switchContent.on = [[settings objectForKey:@"classic_menu"] boolValue]; switchContent.tag = 60; + // remove this when classic ammomenu works on iphone as well + if (IS_IPAD() == NO) + switchContent.enabled = NO; break; default: DLog(@"Nope"); diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Thu Aug 04 17:44:55 2011 +0200 @@ -25,7 +25,6 @@ #import "CommodityFunctions.h" #import "MainMenuViewController.h" #import "AVFoundation/AVAudioPlayer.h" -#import "Appirater.h" #include <unistd.h> @@ -97,7 +96,6 @@ // override the direct execution of SDL_main to allow us to implement our own frontend -(void) postFinishLaunch { [[UIApplication sharedApplication] setStatusBarHidden:YES]; - [Appirater appLaunched]; self.uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/InGameMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -257,7 +257,8 @@ image = [[UIImage alloc] initWithCGImage:imageRef]; CGImageRelease(imageRef); - UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), (void *)alert); // add callback for finish saving + // add callback for cleaning memory and removing alert + UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), (void *)alert); } diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/MainMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -27,6 +27,7 @@ #import "AboutViewController.h" #import "SavedGamesViewController.h" #import "RestoreViewController.h" +#import "Appirater.h" #import "ServerSetup.h" @implementation MainMenuViewController @@ -72,7 +73,7 @@ [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL]; NSString *baseSchemesDir = [[NSString alloc] initWithFormat:@"%@/Settings/Schemes/",resourcesDir]; [[NSFileManager defaultManager] copyItemAtPath:baseSchemesDir toPath:SCHEMES_DIRECTORY() error:NULL]; - + [baseSchemesDir release]; // WEAPONS - always overwrite if ([[NSFileManager defaultManager] fileExistsAtPath:WEAPONS_DIRECTORY()] == NO) @@ -101,31 +102,40 @@ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSString *trackingVersion = [userDefaults stringForKey:@"HedgeVersion"]; + if ([[userDefaults objectForKey:@"music"] boolValue]) + [HedgewarsAppDelegate playBackgroundMusic]; + if (trackingVersion == nil || [trackingVersion isEqualToString:version] == NO) { + // remove any reminder of previous games as saves are going to be wiped out + [userDefaults setObject:@"" forKey:@"savedGamePath"]; + // update the tracking version with the new one [userDefaults setObject:version forKey:@"HedgeVersion"]; + [userDefaults synchronize]; [self createNecessaryFiles]; } - if ([[userDefaults objectForKey:@"music"] boolValue]) - [HedgewarsAppDelegate playBackgroundMusic]; - - NSString *saveString = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedGamePath"]; + // prompt for restoring any previous game + NSString *saveString = [userDefaults objectForKey:@"savedGamePath"]; if (saveString != nil && [saveString isEqualToString:@""] == NO) { if (self.restoreViewController == nil) { - NSString *xibName = [@"RestoreViewController-" stringByAppendingString:(IS_IPAD() ? @"iPad" : @"iPhone")]; + NSString *xibName = [@"RestoreViewController-" stringByAppendingString:(IS_IPAD() ? @"iPad" : @"iPhone")]; RestoreViewController *restored = [[RestoreViewController alloc] initWithNibName:xibName bundle:nil]; if ([restored respondsToSelector:@selector(setModalPresentationStyle:)]) restored.modalPresentationStyle = UIModalPresentationFormSheet; self.restoreViewController = restored; [restored release]; } - [self performSelector:@selector(presentModalViewController:animated:) withObject:self.restoreViewController afterDelay:0.35]; + [self performSelector:@selector(presentModalViewController:animated:) withObject:self.restoreViewController afterDelay:0.3]; + } else { + // let's not prompt for rating when app crashed >_> + [Appirater appLaunched]; } + /* ServerSetup *setup = [[ServerSetup alloc] init]; - if ([setup isNetworkReachable]) { + if (isNetworkReachable()) { DLog(@"network is reachable"); [NSThread detachNewThreadSelector:@selector(serverProtocol) toTarget:setup @@ -147,11 +157,8 @@ switch (button.tag) { case 0: if (nil == self.gameConfigViewController) { - if (IS_IPAD()) - xib = nil; - else - xib = @"GameConfigViewController"; - + xib = IS_IPAD() ? nil : @"GameConfigViewController"; + GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil]; gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; self.gameConfigViewController = gcvc; @@ -172,7 +179,10 @@ break; case 3: #ifdef DEBUG - debugStr = [[NSString alloc] initWithContentsOfFile:DEBUG_FILE()]; + if ([[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()]) + debugStr = [[NSString alloc] initWithContentsOfFile:DEBUG_FILE()]; + else + debugStr = [[NSString alloc] initWithString:@"Here be log"]; UITextView *scroll = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.height, self.view.frame.size.width)]; scroll.text = debugStr; [debugStr release]; @@ -186,6 +196,7 @@ [self.view addSubview:scroll]; [scroll release]; #else + debugStr = debugStr; // prevent compiler warning if (nil == self.aboutViewController) { AboutViewController *about = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil]; about.modalTransitionStyle = UIModalTransitionStyleCoverVertical; diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/MapConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -387,6 +387,7 @@ NSString *checkPath = [[NSString alloc] initWithFormat:@"%@/%@/icon.png",THEMES_DIRECTORY(),themeName]; if ([[NSFileManager defaultManager] fileExistsAtPath:checkPath]) [themeArray addObject:themeName]; + [checkPath release]; } // remove images that are too big for certain devices without loading the whole image diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Thu Aug 04 17:44:55 2011 +0200 @@ -25,24 +25,33 @@ @interface SchemeWeaponConfigViewController : UITableViewController { NSArray *listOfSchemes; NSArray *listOfWeapons; + NSArray *listOfScripts; NSIndexPath *lastIndexPath_sc; NSIndexPath *lastIndexPath_we; + NSIndexPath *lastIndexPath_lu; NSString *selectedScheme; NSString *selectedWeapon; + NSString *selectedScript; + NSString *scriptCommand; - UISwitch *syncSwitch; + UISegmentedControl *topControl; BOOL hideSections; } @property (nonatomic,retain) NSArray *listOfSchemes; @property (nonatomic,retain) NSArray *listOfWeapons; +@property (nonatomic,retain) NSArray *listOfScripts; @property (nonatomic,retain) NSIndexPath *lastIndexPath_sc; @property (nonatomic,retain) NSIndexPath *lastIndexPath_we; +@property (nonatomic,retain) NSIndexPath *lastIndexPath_lu; @property (nonatomic,retain) NSString *selectedScheme; @property (nonatomic,retain) NSString *selectedWeapon; -@property (nonatomic,retain) UISwitch *syncSwitch; +@property (nonatomic,retain) NSString *selectedScript; +@property (nonatomic,retain) NSString *scriptCommand; +@property (nonatomic,retain) UISegmentedControl *topControl; +@property (assign) BOOL hideSections; -(void) fillSections; -(void) emptySections; diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Thu Aug 04 17:44:55 2011 +0200 @@ -25,7 +25,8 @@ #define LABEL_TAG 57423 @implementation SchemeWeaponConfigViewController -@synthesize listOfSchemes, listOfWeapons, lastIndexPath_sc, lastIndexPath_we, selectedScheme, selectedWeapon, syncSwitch; +@synthesize listOfSchemes, listOfWeapons, listOfScripts, lastIndexPath_sc, lastIndexPath_we, lastIndexPath_lu, + selectedScheme, selectedWeapon, selectedScript, scriptCommand, topControl, hideSections; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); @@ -41,6 +42,8 @@ self.selectedScheme = nil; self.selectedWeapon = nil; + self.selectedScript = nil; + self.scriptCommand = nil; if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) { if (IS_IPAD()) @@ -74,7 +77,12 @@ if (self.selectedWeapon == nil && [listOfWeapons containsObject:@"Default.plist"]) self.selectedWeapon = @"Default.plist"; - + + contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:SCRIPTS_DIRECTORY() error:NULL]; + self.listOfScripts = contentsOfDir; + self.selectedScript = @"Normal.plist"; + self.scriptCommand = @""; + [self.tableView reloadData]; } @@ -85,30 +93,30 @@ if (hideSections) return 0; else - return 3; + return 1; } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) + if (self.topControl.selectedSegmentIndex == 0) return [self.listOfSchemes count]; - else if (section == 1) + else if (self.topControl.selectedSegmentIndex == 1) return [self.listOfWeapons count]; else - return 1; + return [self.listOfScripts count]; } // Customize the appearance of table view cells. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; + NSInteger index = self.topControl.selectedSegmentIndex; NSInteger row = [indexPath row]; - NSInteger section = [indexPath section]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; cell.accessoryView = nil; - if (0 == section) { + if (0 == index) { cell.textLabel.text = [[self.listOfSchemes objectAtIndex:row] stringByDeletingPathExtension]; NSString *str = [NSString stringWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),[self.listOfSchemes objectAtIndex:row]]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:str]; @@ -120,7 +128,7 @@ [checkbox release]; self.lastIndexPath_sc = indexPath; } - } else if (1 == section) { + } else if (1 == index) { cell.textLabel.text = [[self.listOfWeapons objectAtIndex:row] stringByDeletingPathExtension]; NSString *str = [NSString stringWithFormat:@"%@/%@",WEAPONS_DIRECTORY(),[self.listOfWeapons objectAtIndex:row]]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:str]; @@ -133,44 +141,47 @@ self.lastIndexPath_we = indexPath; } } else { - if (self.syncSwitch == nil) { - UISwitch *theSwitch = [[UISwitch alloc] init]; - [theSwitch setOn:YES]; - self.syncSwitch = theSwitch; - [theSwitch release]; + cell.textLabel.text = [[self.listOfScripts objectAtIndex:row] stringByDeletingPathExtension]; + NSString *str = [NSString stringWithFormat:@"%@/%@",SCRIPTS_DIRECTORY(),[self.listOfScripts objectAtIndex:row]]; + NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:str]; + cell.detailTextLabel.text = [dict objectForKey:@"description"]; + [dict release]; + if ([[self.listOfScripts objectAtIndex:row] isEqualToString:self.selectedScript]) { + UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; + cell.accessoryView = checkbox; + [checkbox release]; + self.lastIndexPath_lu = indexPath; } - cell.textLabel.text = IS_IPAD() ? NSLocalizedString(@"Sync Schemes",@"") : NSLocalizedString(@"Sync Schemes and Weapons",@""); - cell.detailTextLabel.text = IS_IPAD() ? nil : NSLocalizedString(@"Choosing a Scheme will select its associated Weapon",@""); - cell.detailTextLabel.adjustsFontSizeToFitWidth = YES; - cell.accessoryView = self.syncSwitch; } cell.backgroundColor = UICOLOR_HW_ALMOSTBLACK; cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; cell.detailTextLabel.textColor = [UIColor whiteColor]; + cell.textLabel.adjustsFontSizeToFitWidth = YES; + cell.detailTextLabel.adjustsFontSizeToFitWidth = YES; return cell; } -(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return 40.0; + return 50.0; } -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - CGRect frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30); - NSString *text; - if (section == 0) - text = NSLocalizedString(@"Schemes",@""); - else if (section == 1) - text = NSLocalizedString(@"Weapons",@""); - else - text = NSLocalizedString(@"Options",@""); - - UILabel *theLabel = createBlueLabel(text, frame); - theLabel.center = CGPointMake(self.view.frame.size.width/2, 20); + if (self.topControl == nil) { + NSArray *array = [[NSArray alloc] initWithObjects:NSLocalizedString(@"Scheme",@""),NSLocalizedString(@"Weapon",@""), + NSLocalizedString(@"Style",@""),nil]; + self.topControl = [[UISegmentedControl alloc] initWithItems:array]; + [array release]; + [self.topControl addTarget:self.tableView action:@selector(reloadData) forControlEvents:UIControlEventValueChanged]; + self.topControl.segmentedControlStyle = UISegmentedControlStyleBar; + self.topControl.frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30); + self.topControl.center = CGPointMake(self.view.frame.size.width/2, 24); + self.topControl.tintColor = [UIColor lightGrayColor]; + self.topControl.selectedSegmentIndex = 0; + } UIView *theView = [[[UIView alloc] init] autorelease]; - [theView addSubview:theLabel]; - [theLabel release]; + [theView addSubview:self.topControl]; return theView; } @@ -178,10 +189,13 @@ #pragma mark Table view delegate -(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSIndexPath *lastIndexPath; - if ([indexPath section] == 0) + NSInteger index = self.topControl.selectedSegmentIndex; + if (index == 0) lastIndexPath = self.lastIndexPath_sc; + else if (index == 1) + lastIndexPath = self.lastIndexPath_we; else - lastIndexPath = self.lastIndexPath_we; + lastIndexPath = self.lastIndexPath_lu; int newRow = [indexPath row]; int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -195,10 +209,12 @@ UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:lastIndexPath]; oldCell.accessoryView = nil; - if ([indexPath section] == 0) { + if (index == 0) { self.lastIndexPath_sc = indexPath; self.selectedScheme = [self.listOfSchemes objectAtIndex:newRow]; - if (self.syncSwitch.on) { + + NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; + if ([[settings objectForKey:@"sync_ws"] boolValue]) { for (NSString *str in self.listOfWeapons) { if ([str isEqualToString:self.selectedScheme]) { int index = [self.listOfSchemes indexOfObject:str]; @@ -209,9 +225,36 @@ } } } - } else { + } else if (index == 1) { self.lastIndexPath_we = indexPath; self.selectedWeapon = [self.listOfWeapons objectAtIndex:newRow]; + } else { + self.lastIndexPath_lu = indexPath; + self.selectedScript = [self.listOfScripts objectAtIndex:newRow]; + + NSString *path = [[NSString alloc] initWithFormat:@"%@/%@",SCRIPTS_DIRECTORY(),selectedScript]; + NSDictionary *scriptDict = [[NSDictionary alloc] initWithContentsOfFile:path]; + [path release]; + self.scriptCommand = [scriptDict objectForKey:@"command"]; + NSString *scheme = [scriptDict objectForKey:@"scheme"]; + if ([scheme isEqualToString:@""]) { + self.selectedScheme = @"Default.plist"; + [self.topControl setEnabled:NO forSegmentAtIndex:0]; + } else { + self.selectedScheme = scheme; + [self.topControl setEnabled:YES forSegmentAtIndex:0]; + } + + NSString *weapon = [scriptDict objectForKey:@"weapon"]; + if ([weapon isEqualToString:@""]) { + self.selectedWeapon = @"Default.plist"; + [self.topControl setEnabled:NO forSegmentAtIndex:1]; + } else { + self.selectedWeapon = weapon; + [self.topControl setEnabled:YES forSegmentAtIndex:1]; + } + + [scriptDict release]; } [aTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; @@ -224,11 +267,12 @@ hideSections = NO; NSRange range; range.location = 0; - range.length = 3; + range.length = 1; NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range]; [self.tableView insertSections:sections withRowAnimation:UITableViewRowAnimationFade]; self.selectedScheme = @"Default.plist"; self.selectedWeapon = @"Default.plist"; + self.selectedScript = @"Normal.plist"; self.tableView.scrollEnabled = YES; @@ -240,11 +284,12 @@ hideSections = YES; NSRange range; range.location = 0; - range.length = 3; + range.length = 1; NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range]; [self.tableView deleteSections:sections withRowAnimation:UITableViewRowAnimationFade]; self.selectedScheme = @"Default.plist"; self.selectedWeapon = @"Default.plist"; + self.selectedScript = @"Normal.plist"; self.tableView.scrollEnabled = NO; @@ -264,9 +309,11 @@ if ([[HedgewarsAppDelegate sharedAppDelegate] isInGame]) { self.lastIndexPath_sc = nil; self.lastIndexPath_we = nil; + self.lastIndexPath_lu = nil; self.listOfSchemes = nil; self.listOfWeapons = nil; - self.syncSwitch = nil; + self.listOfScripts = nil; + self.topControl = nil; MSG_MEMCLEAN(); } [super didReceiveMemoryWarning]; @@ -275,11 +322,15 @@ -(void) viewDidUnload { self.listOfSchemes = nil; self.listOfWeapons = nil; + self.listOfScripts = nil; self.lastIndexPath_sc = nil; self.lastIndexPath_we = nil; + self.lastIndexPath_lu = nil; self.selectedScheme = nil; self.selectedWeapon = nil; - self.syncSwitch = nil; + self.selectedScript = nil; + self.scriptCommand = nil; + self.topControl = nil; MSG_DIDUNLOAD(); [super viewDidUnload]; } @@ -288,11 +339,15 @@ -(void) dealloc { releaseAndNil(listOfSchemes); releaseAndNil(listOfWeapons); + releaseAndNil(listOfScripts); releaseAndNil(lastIndexPath_sc); releaseAndNil(lastIndexPath_we); + releaseAndNil(lastIndexPath_lu); releaseAndNil(selectedScheme); releaseAndNil(selectedWeapon); - releaseAndNil(syncSwitch); + releaseAndNil(selectedScript); + releaseAndNil(scriptCommand); + releaseAndNil(topControl); [super dealloc]; } diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/ServerSetup.h --- a/project_files/HedgewarsMobile/Classes/ServerSetup.h Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/ServerSetup.h Thu Aug 04 17:44:55 2011 +0200 @@ -30,6 +30,4 @@ @property (nonatomic, retain) NSDictionary *systemSettings; --(BOOL) isNetworkReachable; - @end diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Classes/ServerSetup.m --- a/project_files/HedgewarsMobile/Classes/ServerSetup.m Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Classes/ServerSetup.m Thu Aug 04 17:44:55 2011 +0200 @@ -22,8 +22,6 @@ #import "ServerSetup.h" #import "PascalImports.h" #import "CommodityFunctions.h" -#import <SystemConfiguration/SCNetworkReachability.h> -#import <netinet/in.h> #import "hwconsts.h" #define BUFFER_SIZE 256 @@ -43,39 +41,6 @@ [super dealloc]; } -// reusing appirater method --(BOOL) isNetworkReachable { - // Create zero addy - struct sockaddr_in zeroAddress; - bzero(&zeroAddress, sizeof(zeroAddress)); - zeroAddress.sin_len = sizeof(zeroAddress); - zeroAddress.sin_family = AF_INET; - - // Recover reachability flags - SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); - SCNetworkReachabilityFlags flags; - - BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); - CFRelease(defaultRouteReachability); - - if (!didRetrieveFlags) { - NSLog(@"Error. Could not recover network reachability flags"); - return NO; - } - - BOOL isReachable = flags & kSCNetworkFlagsReachable; - BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; - BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection; - - NSURL *testURL = [NSURL URLWithString:@"http://www.apple.com/"]; - NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL - cachePolicy:NSURLRequestReloadIgnoringLocalCacheData - timeoutInterval:20.0]; - NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:self]; - - return ((isReachable && !needsConnection) || nonWiFi) ? (testConnection ? YES : NO) : NO; -} - -(int) sendToServer:(NSString *)command { NSString *message = [[NSString alloc] initWithFormat:@"%@\n\n",command]; int result = SDLNet_TCP_Send(sd, [message UTF8String], [message length]); diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Thu Aug 04 17:44:55 2011 +0200 @@ -1370,7 +1370,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\n#create config.inc\necho \"Updating config file...\"\nPROTO=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep HEDGEWARS_PROTO_VER | cut -d ' ' -f 3`\nMAJN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MAJOR | xargs | cut -d ' ' -f 3`\nMINN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MINOR | xargs | cut -d ' ' -f 3`\nPATN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_PATCH | xargs | cut -d ' ' -f 3 | cut -d '$' -f 1`\nREVN=-`/usr/local/bin/hg id -n ${PROJECT_DIR}/../../`\necho \"const cNetProtoVersion = $PROTO; const cVersionString = '${MAJN}.${MINN}.${PATN}${REVN}'; const cLuaLibrary = '';\" > ${PROJECT_DIR}/../../hedgewars/config.inc\n\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend/res...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsMedal*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsR.png ${PROJECT_DIR}/Data/Graphics/Btn/StatsStar.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n\necho \"Handling audio files...\"\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n#copy mono audio\ncp -R ${PROJECT_DIR}/Audio/* ${PROJECT_DIR}/Data/\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Justyouwait,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace,CTF_Blizzard,Control} ${PROJECT_DIR}/Data/Missions/Maps/\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove WIP themes (check they are not used in Maps)\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\necho \"Done\""; + shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\n#create config.inc\necho \"Updating config file...\"\nPROTO=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep HEDGEWARS_PROTO_VER | cut -d ' ' -f 2 | cut -d ')' -f 1`\nMAJN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MAJOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nMINN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MINOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nPATN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_PATCH | xargs | cut -d ' ' -f 2 | cut -d '$' -f 1`\nREVN=-`/usr/local/bin/hg id -n ${PROJECT_DIR}/../../`\necho \"const cNetProtoVersion = $PROTO; const cVersionString = '${MAJN}.${MINN}.${PATN}${REVN}'; const cLuaLibrary = '';\" > ${PROJECT_DIR}/../../hedgewars/config.inc\n\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend/res...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsMedal*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsR.png ${PROJECT_DIR}/Data/Graphics/Btn/StatsStar.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps and WIP themes (remember to check that no Map uses them)\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\n#delete unused fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n\necho \"Handling audio files...\"\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n#copy mono audio\ncp -R ${PROJECT_DIR}/Audio/* ${PROJECT_DIR}/Data/\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Justyouwait,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace,CTF_Blizzard,Control} ${PROJECT_DIR}/Data/Missions/Maps/\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n#remove cfg files since we have plists\nfind ${PROJECT_DIR}/Data/Scripts -name *.cfg -delete\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\necho \"Done\""; showEnvVarsInLog = 0; }; 9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = { @@ -1522,49 +1522,24 @@ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; - COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_GENERATE_TEST_COVERAGE_FILES = YES; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Hedgewars_Prefix.pch; INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-lgcov", - ); PRODUCT_NAME = Hedgewars; - TARGETED_DEVICE_FAMILY = "$(inherited)"; }; name = Debug; }; 1D6058950D05DD3E006BFB54 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_ENTITLEMENTS = "Entitlements-Development.plist"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Hedgewars_Prefix.pch; INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); PRODUCT_NAME = Hedgewars; - PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - TARGETED_DEVICE_FAMILY = "$(inherited)"; }; name = Release; }; @@ -1584,7 +1559,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_DEBUGGING_SYMBOLS = default; GCC_FAST_MATH = YES; - GCC_OPTIMIZATION_LEVEL = 2; + GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_STRICT_ALIASING = YES; GCC_THUMB_SUPPORT = NO; @@ -1599,6 +1574,7 @@ "\"$(SRCROOT)/../../../Library/SDL_mixer/\"", ); IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LLVM_LTO = NO; ONLY_ACTIVE_ARCH = NO; OTHER_CODE_SIGN_FLAGS = ""; OTHER_LDFLAGS = ( @@ -1618,30 +1594,17 @@ 61022D7D12305A2800B08935 /* Distro AppStore */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_ENTITLEMENTS = "Entitlements-Distribution.plist"; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Hedgewars_Prefix.pch; INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); PRODUCT_NAME = Hedgewars; - PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - TARGETED_DEVICE_FAMILY = "$(inherited)"; }; name = "Distro AppStore"; }; 61022D7E12305A2800B08935 /* Distro AppStore */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; @@ -1674,12 +1637,12 @@ FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/2.5.1; FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas"; FPC_RTL_UNITS_BASE = /usr/local/lib/fpc; - FPC_SPECIFIC_OPTIONS = "-dDEBUGFILE -Ci- -Cr- -Co- -O-2 -Xs -Cfvfpv2"; + FPC_SPECIFIC_OPTIONS = "-dDEBUGFILE -O- -g -gl -gw2 -gt -ghttt -Xs- -Cfvfpv2"; FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\""; GCC_C_LANGUAGE_STANDARD = c99; - GCC_DEBUGGING_SYMBOLS = default; + GCC_DEBUGGING_SYMBOLS = full; GCC_FAST_MATH = YES; - GCC_OPTIMIZATION_LEVEL = 2; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; GCC_STRICT_ALIASING = YES; GCC_THUMB_SUPPORT = NO; @@ -1712,28 +1675,17 @@ 6137064C117B1CB3004EE44A /* Distro Adhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; - CODE_SIGN_ENTITLEMENTS = "Entitlements-Distribution.plist"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Hedgewars_Prefix.pch; INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); PRODUCT_NAME = Hedgewars; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - TARGETED_DEVICE_FAMILY = "$(inherited)"; }; name = "Distro Adhoc"; }; 6137064D117B1CB3004EE44A /* Distro Adhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; @@ -1778,7 +1730,6 @@ 928301180F10CAFD00CC5A3C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -1790,7 +1741,6 @@ 928301190F10CAFD00CC5A3C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; @@ -1816,7 +1766,7 @@ FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\""; GCC_C_LANGUAGE_STANDARD = c99; GCC_DEBUGGING_SYMBOLS = full; - GCC_FAST_MATH = NO; + GCC_FAST_MATH = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; GCC_STRICT_ALIASING = YES; @@ -1863,7 +1813,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_DEBUGGING_SYMBOLS = default; GCC_FAST_MATH = YES; - GCC_OPTIMIZATION_LEVEL = 2; + GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; GCC_STRICT_ALIASING = YES; GCC_THUMB_SUPPORT = NO; @@ -1878,6 +1828,7 @@ "\"$(SRCROOT)/../../../Library/SDL_mixer/\"", ); IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LLVM_LTO = NO; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = ( "-lz", diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/GameConfigViewController.xib --- a/project_files/HedgewarsMobile/Resources/GameConfigViewController.xib Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/GameConfigViewController.xib Thu Aug 04 17:44:55 2011 +0200 @@ -2,9 +2,9 @@ <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1056</int> - <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.SystemVersion">10K540</string> <string key="IBDocument.InterfaceBuilderVersion">823</string> - <string key="IBDocument.AppKitVersion">1038.35</string> + <string key="IBDocument.AppKitVersion">1038.36</string> <string key="IBDocument.HIToolboxVersion">461.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -50,7 +50,7 @@ <object class="IBUISegmentedControl" id="563596142"> <reference key="NSNextResponder" ref="836721772"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{96, 8}, {269, 30}}</string> + <string key="NSFrame">{{96, 8}, {270, 30}}</string> <reference key="NSSuperview" ref="836721772"/> <bool key="IBUIOpaque">NO</bool> <int key="IBUITag">12345</int> @@ -94,8 +94,8 @@ <reference ref="4"/> </object> <object class="NSColor" key="IBTintColor"> - <int key="NSColorSpace">2</int> - <bytes key="NSRGB">MC4yMzEzNzI1NjUgMCAwLjQ2Mjc0NTEzMDEAA</bytes> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MC42IDAuNiAwLjYAA</bytes> </object> </object> </object> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib --- a/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib Thu Aug 04 17:44:55 2011 +0200 @@ -2,9 +2,9 @@ <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1056</int> - <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.SystemVersion">10K540</string> <string key="IBDocument.InterfaceBuilderVersion">823</string> - <string key="IBDocument.AppKitVersion">1038.35</string> + <string key="IBDocument.AppKitVersion">1038.36</string> <string key="IBDocument.HIToolboxVersion">461.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -12,7 +12,7 @@ </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="9"/> + <integer value="1"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -58,7 +58,7 @@ <object class="IBUISegmentedControl" id="88728219"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">289</int> - <string key="NSFrame">{{725, 166}, {277, 30}}</string> + <string key="NSFrame">{{724, 166}, {280, 30}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBIPadFramework</string> @@ -101,8 +101,8 @@ <reference ref="4"/> </object> <object class="NSColor" key="IBTintColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAAA</bytes> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> <object class="IBUISlider" id="938256702"> @@ -566,6 +566,7 @@ <string>57.IBPluginDependency</string> <string>66.IBPluginDependency</string> <string>7.IBPluginDependency</string> + <string>7.IBViewBoundsToFrameTransform</string> <string>70.IBPluginDependency</string> <string>72.IBPluginDependency</string> <string>75.IBPluginDependency</string> @@ -585,6 +586,9 @@ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABENUAAw0IAAA</bytes> + </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/MapConfigViewController-iPhone.xib --- a/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPhone.xib Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPhone.xib Thu Aug 04 17:44:55 2011 +0200 @@ -2,9 +2,9 @@ <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1056</int> - <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.SystemVersion">10K540</string> <string key="IBDocument.InterfaceBuilderVersion">823</string> - <string key="IBDocument.AppKitVersion">1038.35</string> + <string key="IBDocument.AppKitVersion">1038.36</string> <string key="IBDocument.HIToolboxVersion">461.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -57,7 +57,7 @@ <object class="IBUISegmentedControl" id="88728219"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{13, 166}, {256, 30}}</string> + <string key="NSFrame">{{9, 14}, {270, 30}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> @@ -100,14 +100,14 @@ <reference ref="4"/> </object> <object class="NSColor" key="IBTintColor"> - <int key="NSColorSpace">2</int> - <bytes key="NSRGB">MC4wMjM1Mjk0MTQwOSAwLjM3NjQ3MDYyNTQgMAA</bytes> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> <object class="IBUISlider" id="938256702"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{98, 240}, {149, 23}}</string> + <string key="NSFrame">{{119, 207}, {149, 23}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> @@ -119,7 +119,7 @@ <object class="IBUIButton" id="326163764"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{13, 20}, {256, 128}}</string> + <string key="NSFrame">{{16, 58}, {256, 128}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> @@ -146,7 +146,7 @@ <object class="IBUILabel" id="634417433"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 221}, {48, 35}}</string> + <string key="NSFrame">{{58, 221}, {48, 35}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> @@ -154,6 +154,11 @@ <bool key="IBUIUserInteractionEnabled">NO</bool> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> <string key="IBUIText">...</string> + <object class="NSFont" key="IBUIFont"> + <string key="NSName">Helvetica-Bold</string> + <double key="NSSize">17</double> + <int key="NSfFlags">16</int> + </object> <object class="NSColor" key="IBUITextColor"> <int key="NSColorSpace">2</int> <bytes key="NSRGB">MC45NDkwMTk2NzA1IDAuNzY4NjI3NTI0NCAwAA</bytes> @@ -166,7 +171,7 @@ <object class="IBUILabel" id="743202682"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{88, 210}, {169, 29}}</string> + <string key="NSFrame">{{109, 237}, {169, 29}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> @@ -210,6 +215,31 @@ <float key="IBUISectionHeaderHeight">10</float> <float key="IBUISectionFooterHeight">10</float> </object> + <object class="IBUILabel" id="32436512"> + <reference key="NSNextResponder" ref="191373211"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{-9, 225}, {92, 27}}</string> + <reference key="NSSuperview" ref="191373211"/> + <bool key="IBUIOpaque">NO</bool> + <bool key="IBUIClipsSubviews">YES</bool> + <int key="IBUIContentMode">7</int> + <bool key="IBUIUserInteractionEnabled">NO</bool> + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> + <string key="IBUIText">Max</string> + <object class="NSFont" key="IBUIFont"> + <string key="NSName">Helvetica-BoldOblique</string> + <double key="NSSize">18</double> + <int key="NSfFlags">16</int> + </object> + <object class="NSColor" key="IBUITextColor"> + <int key="NSColorSpace">2</int> + <bytes key="NSRGB">MC45NDkwMTk2NzA1IDAuNzY4NjI3NTI0NCAwAA</bytes> + </object> + <reference key="IBUIHighlightedColor" ref="437070330"/> + <int key="IBUIBaselineAdjustment">1</int> + <float key="IBUIMinimumFontSize">10</float> + <int key="IBUITextAlignment">1</int> + </object> </object> <string key="NSFrameSize">{480, 276}</string> <reference key="NSSuperview"/> @@ -358,10 +388,11 @@ <reference ref="326163764"/> <reference ref="565214171"/> <reference ref="938256702"/> - <reference ref="88728219"/> + <reference ref="743202682"/> <reference ref="574494641"/> - <reference ref="743202682"/> + <reference ref="88728219"/> <reference ref="634417433"/> + <reference ref="32436512"/> </object> <reference key="parent" ref="0"/> </object> @@ -412,6 +443,11 @@ <reference key="object" ref="574494641"/> <reference key="parent" ref="191373211"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="32436512"/> + <reference key="parent" ref="191373211"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -430,7 +466,10 @@ <string>25.IBViewBoundsToFrameTransform</string> <string>35.IBPluginDependency</string> <string>35.IBViewBoundsToFrameTransform</string> + <string>36.IBPluginDependency</string> + <string>36.IBViewBoundsToFrameTransform</string> <string>7.IBPluginDependency</string> + <string>7.IBViewBoundsToFrameTransform</string> <string>8.IBPluginDependency</string> <string>9.CustomClassName</string> <string>9.IBPluginDependency</string> @@ -440,11 +479,11 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>MapConfigViewController</string> <string>UIResponder</string> - <string>{{507, 233}, {480, 320}}</string> + <string>{{790, 298}, {480, 320}}</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABB6AAAw3kAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABB+AAAw4QAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> @@ -456,9 +495,16 @@ </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw58AAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw4kAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBMAAAw2gAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBUAAAwigAAA</bytes> + </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>MapPreviewButtonView</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -483,7 +529,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">35</int> + <int key="maxID">36</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Barrel Mayhem.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Barrel Mayhem.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Barrel Mayhem.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Clean Slate.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Clean Slate.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Clean Slate.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Default.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Default.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Default.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Fort Mode.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Fort Mode.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Fort Mode.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/King Mode.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/King Mode.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/King Mode.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Minefield.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Minefield.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Minefield.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Pro Mode.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Pro Mode.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Pro Mode.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Shoppa.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Shoppa.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Shoppa.plist Thu Aug 04 17:44:55 2011 +0200 @@ -40,6 +40,7 @@ <false/> <false/> <false/> + <true/> <false/> <false/> <false/> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Thinking with Portals.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Thinking with Portals.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Thinking with Portals.plist Thu Aug 04 17:44:55 2011 +0200 @@ -30,9 +30,10 @@ <false/> <false/> <false/> + <true/> <false/> <true/> - <true/> + <false/> <false/> <false/> <false/> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Timeless.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Timeless.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Timeless.plist Thu Aug 04 17:44:55 2011 +0200 @@ -35,7 +35,7 @@ <true/> <false/> <false/> - <true/> + <false/> <false/> <false/> <false/> @@ -44,6 +44,7 @@ <true/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 project_files/HedgewarsMobile/Resources/Settings/Schemes/Tunnel Hogs.plist --- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Tunnel Hogs.plist Thu Aug 04 17:41:07 2011 +0200 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Tunnel Hogs.plist Thu Aug 04 17:44:55 2011 +0200 @@ -44,6 +44,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/bg.txt --- a/share/hedgewars/Data/Locale/bg.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/bg.txt Thu Aug 04 17:44:55 2011 +0200 @@ -12,7 +12,7 @@ 00:09=Пистолет 00:10=Динамит 00:11=Бухалка -00:12=Shoryuken +00:12=Шурикен 00:13=сек 00:14=Парашут 00:15=Въздушна Атака @@ -45,22 +45,22 @@ 01:04=На Пауза 01:05=Наистина ли напускате (Y/Esc)? 01:06=Внезапна смърт! -01:07=%1 Remaining -01:08=Fuel +01:07=%1 остава +01:08=Гориво ; Event messages -; Hog (%1) died -02:00=%1 has kicked the bucket! -02:00=%1 has seen the light! -02:00=%1 never saw that comming! -; Hog (%1) drowned -02:01=%1 plays submarine! -02:01=%1 mimics the Titanic! -02:01=%1 swims like a stone! +; Hog (%1) умря +02:00=%1 гушна букета! +02:00=%1 видя светлината! +02:00=%1 не видя откъде му дойде! +; Таралежа (%1) се удави +02:01=%1 се прави на подводница! +02:01=%1 имитира Титаник! +02:01=%1 плува като камък! ; Match starts -02:02=Let's fight! -02:02=Armed and ready! -; Hog shot an home run (using the bat and another hog) -02:10=Home Run! -02:10=A bird, a plane, ... -02:10=That one is out! +02:02=Бой! +02:02=Зареден и готов! +; Таралежа отбеляза хоумрън (използвайки бухалка и друг таралеж) +02:10=Х!оумрън +02:10=Птица ли е, самолет ли е, ... +02:10=Този е вън от играта! diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/cs.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/cs.lua Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,176 @@ +locale = { + [":("] = ":(", + ["!!!"] = "!!!", + ["..."] = "...", + ["Accuracy Bonus!"] = "Bonus za přesnost!", + ["a Hedgewars mini-game"] = "Hedgewars mini-hra", -- Space_Invasion, The_Specialists + ["Aiming Practice"] = "Trénink přesnosti", --Bazooka, Shotgun, SniperRifle + ["Ammo"] = "Munice", + ["Ammo Depleted!"] = "Munice vyčerpána!", + ["Ammo Maniac!"] = "Muniční maniak!", + ["Available points remaining: "] = "Zbývá bodů:", + ["Bat balls at your enemies and|push them into the sea!"] = "Odpal míčky na své nepřátele|a odstrč je do vody!", + ["Bat your opponents through the|baskets and out of the map!"] = "Odpal protivníky skrz|koše a pryč z mapy!", + ["Bazooka Training"] = "Trénink s bazukou", + ["Best laps per team: "] = "Nejlepší kola dle týmů:", + ["Best Team Times: "] = "Nejlepší týmový čas:", + ["Bloody Rookies"] = "Zatravení zelenáči", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree + ["Boom!"] = "Bum!", + ["BOOM!"] = "BUM!", + ["Boss defeated!"] = "Velitel poražen!", + ["Boss Slayer!"] = "Velitel zabit!", + ["CAPTURE THE FLAG"] = "ZAJMI VLAJKU", + ["Careless"] = "Neopatrný", + ["Clumsy"] = "Nešikovný", + ["Codename: Teamwork"] = "Krycí jméno: Týmová práce", + ["Complete the track as fast as you can!"] = "Dokonči trasu tak rychle, jak můžeš!", + ["Congratulations!"] = "Gratuluji!", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratuluji! Eliminoval jsi všechny cíle|během stanoveného limitu", --Bazooka, Shotgun, SniperRifle + ["Control pillars to score points."] = "Obsaď všechny sloupy, abys dostal body.", + ["Cybernetic Empire"] = "Kybernetická říše", + ["DAMMIT, ROOKIE!"] = "ZATRACENĚ, ZELENÁČI!", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "ZATRACENĚ, ZELENÁČI! VYPADNI Z MOJI HLAVY!", + ["Dangerous Ducklings"] = "Nebezpečná káčátka", + ["Deadweight"] = "Mrtvá váha", + ["Depleted Kamikaze!"] = "Vyčerpaný sebevrah!", + ["Destroy invaders to score points."] = "Znič nájezdníky k získání bodů.", + ["Drone Hunter!"] = "Lovec trubců!", + ["Drowner"] = "Utopenec", + ["Each turn you get 1-3 random weapons"] = "Každý tah dostaneš 1-3 náhodné zbraně", + ["Each turn you get one random weapon"] = "Každý tah dostaneš jednu náhodnou zbraň", + ["Eliminate all enemies"] = "Znič všechny nepřátele", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Znič všechny cíle, než ti vyprší čas.|Na tuto misi máš neomezeně munice.", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "Odstraň Otravu, než vyprší čas.", + ["Eliminate the Blue Team"] = "Znič modrý tým", + ["Eliminate the enemy specialists."] = "Zabij nepřátelské specialisty", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Znič Jednotku 3378 |- Slabý odpor musí přežít", + ["Enjoy the swim..."] = "Užij si plavání...", + ["[Enter]"] = "[Enter]", + ["Fastest lap: "] = "Nejrychlejší kolo: ", + ["Feeble Resistance"] = "Slabý odpor", + ["Fire"] = "Oheň", + ["Flag captured!"] = "Vlajka zabrána!", + ["Flag respawned!"] = "Vlajka obnovena!", + ["Flag returned!"] = "Vlajka navrácena!", + ["Flags, and their home base will be placed where each team ends their first turn."] = "Vlajky a domovské základny budou umístěny tam, kde každý tým skončí svůj první tah.", + ["GAME BEGUN!!!"] = "HRA ZAČALA!!!", + ["Game Modifiers: "] = "Herní modifikátory: ", + ["GAME OVER!"] = "KONEC HRY!", + ["Game Started!"] = "Hra začala!", + ["Get on over there and take him out!"] = "Běž tamhle a dostaň ho!", + ["Goal"] = "Cíl", + ["GO! GO! GO!"] = "Běž! Běž! Běž!", + ["Good birdy......"] = "Hodný ptáček......", + ["Good luck out there!"] = "Hodně štěstí tam venku!", + ["GOTCHA!"] = "Mám tě!", + ["Hahahaha!"] = "Hahahaha!", + ["Haha, now THAT would be something!"] = "Haha, tak TOHLE bude něco!", + ["Hapless Hogs"] = "Nešťastný ježek", + [" Hapless Hogs left!"] = "Nešťastný ježek odešel!", + ["Heavy"] = "Těžký", + ["Hedgewars-Basketball"] = "Hedgewars-Basketbal", + ["Hedgewars-Knockball"] = "Hedgewars=Vybíjená", + ["Heh, it's not that bad."] = "Heh, to není tak špatné.", + ["Hit Combo!"] = "Opakovaný zásah!", + ["Hmmm..."] = "Hmmm...", + ["Hooray!"] = "Hurá!", + ["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "Instruktor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["invaders destroyed"] = "nájezdník zničen", + ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "To je dobře, že NÁHLÁ SMRT je 99 tahů vzdálená...", + ["Jumping is disabled"] = "Skákání je vypnuto", + ["Kamikaze Expert!"] = "Expert na sebevraždy!", + ["KILLS"] = "ÚLOVKY", + ["[Left Shift]"] = "[Levý shift]", + ["Listen up, maggot!!"] = "Poslouchej, bídný červe!!", + ["|- Mines Time:"] = "|- Časovač min:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION FAILED"] = "MISE NEÚSPĚŠNÁ", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESS"] = "MISE ÚSPĚŠNÁ", + ["MISSION SUCCESSFUL"] = "MISE ÚSPĚŠNÁ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Movement: [Up], [Down], [Left], [Right]"] = "Pohyb: [nahoru], [dolu], [vlevo], [vpravo]", + ["Multi-shot!"] = "Vícenásobná rána!", + ["Nameless Heroes"] = "Bezejmenní hrdinové", + ["NEW CLAN RECORD: "] = "NOVÝ KLANOVÝ REKORD: ", + ["NEW fastest lap: "] = "NOVÉ nejrychlejší kolo: ", + ["NEW RACE RECORD: "] = "NOVÝ TRAŤOVÝ REKORD: ", + ["NOT ENOUGH WAYPOINTS"] = "NEDOSTATEK NAVIGAČNÍCH BODŮ", + ["Not So Friendly Match"] = "Ne moc přátelský zápas", -- Basketball, Knockball + ["Oh no! Just try again!"] = "Ale ne! Prostě to zkus znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Ale ne! Čas vypršel! Zkus to znova!", --Bazooka, Shotgun, SniperRifle + ["Operation Diver"] = "Operace potápěč", + ["Opposing Team: "] = "Protivníkův tým: ", + ["Pathetic Hog #%d"] = "Žalostný ježek #%d", + ["Per-Hog Ammo"] = "Individuální munice", + ["Place more waypoints using [ENTER]"] = "Umísti více navigačních bodů pomocí klávesy [enter]", + ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Otrava", + ["Power Remaining"] = "Zbývající energie", + ["Press [Precise] to skip intro"] = "Stiskni [přesnost] pro přeskočení", + ["Race complexity limit reached."] = "Dosažen limit složitosti závodu.", + [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Dones nepřátelskou vlajku do své základny k získání bodů | - První tým se třemi ukořistěními vítězí | - Můžeš bodovat, pokud je tvá vlajka v základně | - Ježci pustí vlajku, pokud jsou zabiti, nebo utopeni | - Upuštěná vlajka může být navrácena, nebo opět zajmuta | - Ježci jsou po smrti oživeni", + ["Round Limit"] = "Limit kol", + ["Rounds Complete"] = "Dokončených kol", + ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLA HRY [Stiskni ESC pro prohlédnutí]", + ["s|"] = "s|", + ["Save as many hapless hogs as possible!"] = "Zachraň tolik nešťastných ježků, kolik jen můžeš!", + ["SCORE"] = "SKÓRE", + ["sec"] = "vt.", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["See ya!"] = "Uvidíme se!", + ["s"] = "s", -- GaudyRacer, Space_Invasion + ["Shield boosted! +30 power"] = "Štít posílen! +30 energie", + ["Shield Depleted"] = "Štít vyčerpán", + ["Shield is fully recharged!"] = "Štít je plně dobit", + ["Shield Master!"] = "Štítový odborník!", + ["Shield Miser!"] = "Štítový škrt!", + ["Shield OFF:"] = "Štít VYPNUT:", + ["Shield ON:"] = "Štít ZAPNUT:", + ["Shield Seeker!"] = "Hledač štítů!", + ["Shotgun Team"] = "Brokovnicový tým", + ["Shotgun Training"] = "Trénink s brokovnicí", + ["Shots Left: "] = "Zbývá střel: ", -- GaudyRacer, Tumbler + ["Silly"] = "Hloupý", + ["Sinky"] = "Propadlý", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s je venku a tým %d|má penaltu!| |Skóre:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s je venku a tým %d|skóruje!| |Skóre:", -- Basketball, Knockball + ["Sniper Training"] = "Odstřelovací trénink", + ["Sniperz"] = "Snajpři", + ["Sponge"] = "Mycí houba", + ["Spooky Tree"] = "Strašidelný strom", + ["STATUS UPDATE"] = "AKTUALIZACE STAVU", -- GaudyRacer, Space_Invasion + ["Switched to "] = "Přepnut na ", + ["Team %d: "] = "Tým %d: ", + ["Team Scores"] = "Týmové skóre", -- Control, Space_Invasion + ["That Sinking Feeling"] = "Potopené pocity", + ["That was pointless."] = "To bylo bezúčelné.", + ["The enemy is hiding out on yonder ducky!"] = "Nepřítel se skrývá na tamté kachničce!", + ["The flag will respawn next round."] = "Vlajka se obnoví příští kolo.", + ["The Nameless One"] = "Bezejmenný", + ["THE SPECIALISTS"] = "SPECIALISTÉ", + ["This rain is really something..."] = "Tenhle déšť je opravdu něco...", + ["TIME: "] = "ČAS: ", + ["Timed Kamikaze!"] = "Časovaná sebevražda!", + ["Time Extended!"] = "Čas prodloužen!", + ["Time Left: "] = "Zbývá času: ", + ["Toggle Shield"] = "Přepnout štít", + ["Toxic Team"] = "Jedovatý tým", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TRACK COMPLETED"] = "TRASA KOMPLETNÍ", + ["Track Time: "] = "Čas na trati: ", + ["TrophyRace"] = "Závod o trofej", + ["T_T"] = "T_T", + ["Turn Time"] = "Čas kola", + ["Unit 3378"] = "Jednotka 3378", + ["Unlimited Attacks"] = "Neomezeně útoků", + ["User Challenge"] = "Výzva", + ["Use your rope to get from start to finish as fast as you can!"] = "Použij lano a dostaň se ze startu do cíle, jak nejrychleji umíš!", + ["v.06"] = "v.06", + ["Victory for the "] = "Vítězství pro ", -- CTF_Blizzard, Capture_the_Flag + ["Waypoint placed."] = "Navigační bod umístěn.", + ["Weapons Reset"] = "Zbraně obnoveny", + ["WINNING TIME: "] = "VÍTĚZNÝ ČAS: ", + ["You'd almost swear the water was rising!"] = "Přísahal bys, že voda stoupá!", + ["You have SCORED!!"] = "SKÓROVAL jsi!!", + ["You saved"] = "Uložil jsi", + ["You've failed. Try again."] = "Zklamal jsi. Zkus to znovu.", + ["You've reached the goal!| |Time: "] = "Dosáhl jsi cíle!| |Čas: ", + ["'Zooka Team"] = "Bazukáři", + } diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/cs.txt --- a/share/hedgewars/Data/Locale/cs.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/cs.txt Thu Aug 04 17:44:55 2011 +0200 @@ -1,46 +1,57 @@ ; Czech locale 00:00=Granát -00:01=Tříštivý Granát +00:01=Tříštivý granát 00:02=Bazuka -00:03=UFO +00:03=Naváděná včela 00:04=Brokovnice 00:05=Sbíječka 00:06=Přeskočit 00:07=Lano 00:08=Mina -00:09=DEagle +00:09=Pistole Desert Eagle 00:10=Dynamit 00:11=Basebalová pálka -00:12=Shoryuken -00:13=sec +00:12=Ohnivý úder +00:13=vt. 00:14=Padák -00:15=Nálet -00:16=Minový nálet -00:17=Blow Torch +00:15=Vzdušný útok +00:16=Minový útok +00:17=Svářečka 00:18=Výstavba 00:19=Teleportace -00:20=Vyměnit Ježka -00:21=Mortar +00:20=Vyměnit ježka +00:21=Minomet 00:22=Švihnutí bičem -00:23=Kamikaze +00:23=Kamikadze 00:24=Dort 00:25=Omámení 00:26=Bomba z vodního melounu 00:27=Ďábelský ruční granát 00:28=Vrtáková raketa -00:29=Ballgun +00:29=Kuličkomet 00:30=Napalm 00:31=RC Letadlo -00:32=Low Gravity -00:33=Extra Damage -00:34=Invulnerable -00:35=Extra Time -00:36=Laser Sight -00:37=Vampirism -00:38=Sniper Rifle -00:39=Flying Saucer -00:40=Molotov Cocktail +00:32=Nízká gravitace +00:33=Extra zranění +00:34=Nesmrtelnost +00:35=Extra čas +00:36=Laserové zaměřování +00:37=Vampyrismus +00:38=Odsřelovačská puška +00:39=Létající talíř +00:40=Molotov koktejl +00:41=Ptáček +00:42=Přenosný vytvářeč portálů +00:43=Pianový útok +00:44=Olomoucké tvarůžky +00:45=Sinová puška (beta) +00:46=Plamenomet +00:47=Přísavná mina +00:48=Kladivo +00:49=Oživovač +00:50=Vrtákový útok +00:51=Hrouda bláta 01:00=Do boje! 01:01=Kolo nerozhodně @@ -49,22 +60,453 @@ 01:04=Pauza 01:05=Opravdu ukončit (Y/Esc)? 01:06=Náhlá smrt! -01:07=%1 Remaining -01:08=Fuel +01:07=%1 zbývá +01:08=Palivo +01:09=Synchronizuji... +01:10=Použití tohoto nástroje neukončí tvůj tah! +01:11=Tato zbraň nebo nástroj není dosud povolena! +01:12=Poslední kolo před Náhlou smrtí! +01:13=%1 kol do Náhlé smrti! +01:14=Připrav se, %1! ; Event messages ; Hog (%1) died -02:00=%1 has kicked the bucket! -02:00=%1 has seen the light! -02:00=%1 never saw that comming! +02:00=%1 natáhl bačkory! +02:00=%1 viděl světlo na konci tunelu! +02:00=%1 to neviděl přicházet! +02:00=%1 mává na rozloučenou! +02:00=%1 odešel na lepší místo! +02:00=%1 potkal svého tvůrce! +02:00=%1 už nemůže čekat! +02:00=%1 splnil svou povinnost! +02:00=%1 provedl obrovskou oběť! +02:00=%1 je na smrtelné posteli! +02:00=%1 opadal jak listí ze stromů! +02:00=%1 přišel o svůj čas! +02:00=%1 říká mír s vámi! +02:00=%1 nebude nikdy zapomenut! +02:00=%1 má aneurisma! +02:00=%1 po sobě zanechal ženu a děti +02:00=%1 si naposledy vystřelil z bazuky +02:00=%1 odhodil svůj poslední granát +02:00=%1 dopekl svůj poslední dort +02:00=%1 se naposledy zhoupl na laně +02:00=%1 zavolal svou poslední leteckou podporu +02:00=%1 si naposledy pohladil brokovnici +02:00=%1 hodil poslední meloun +02:00=%1 naposledy vytáhl svou pistoli +02:00=%1 schytal příliš mnoho ran +02:00=%1 by opravdu využil bednu se zdravím +02:00=%1 odešel hrát lepší hru +02:00=%1 vztekle opustil život +02:00=%1 zklamal +02:00=Ubohý %1... +02:00=%1 preferuje wormux +02:00=%1 blokoval rány svou tváří +02:00=%1 je hrdina mezi li...ehm...ježky +02:00=%1 našel své místo ve Valhalle +02:00=%1 opustil budovu +02:00=%1 zvolil stejnou cestu jako dinosauři +02:00=%1 dovedl ježky o krok blíže k vymření +02:00=%1 přinesl slzu do mého oka +02:00=%1 je ex-ježek +02:00=%1 hnojí kytičky +02:00=%1 přestal existovat +02:00=Řekněte sbohem %1 +02:00=Pro %1 již není naděje +02:00=%1 stojí za poslední oponou +02:00=Pokud můžeš, zapal si, %1 +02:00=%1 trpí masivní spontánní poruchou existence +02:00=%1 odešel +02:00=%1 je tuhý +02:00=%1 už není +02:00=%1 vypršel +02:00=Odpočívej v pokoji, %1 +02:00=%1 se přidal k zástupům neviditelných +02:00=Sbohem %1, sotva jsme tě poznali! +02:00=%1 je náchylný k zastřelení +02:00=%1 by využil život navíc +02:00=Je v domě doktor? + ; Hog (%1) drowned -02:01=%1 plays submarine! -02:01=%1 mimics the Titanic! -02:01=%1 swims like a stone! -; Match starts -02:02=Let's fight! -02:02=Armed and ready! +02:01=%1 si hraje na ponorku! +02:01=%1 napodobuje Titanik! +02:01=%1 plave jako kámen! +02:01=%1 se vznáší jako cihla! +02:01=%1 našel konec v hlubinách +02:01=Glo glo glo glo +02:01=%1 žbluňkl +02:01=%1 si zapomněl rukávky +02:01=%1 si měl nejprve zaplatit plavecký kurz +02:01=%1 zapomněl doma surf +02:01=%1 je umytý +02:01=%1 je rozmočený ježek +02:01=%1 si zapomněl přinést záchrannou vestu +02:01=%1 udělal žbluňky žbluňk +02:01=%1 spí dnes s rybami +02:01=%1 si myslí, že podvodní fyzika je v této hře na nic +02:01=%1 vypadá žíznivě +02:01=Moře si vzalo %1 +02:01=%1 je ztracen v moři +02:01=%1 si měl přinést podvodní výstroj +02:01=%1 má pohřeb do moře +02:01=%1 má pocit, jako by se potápěl +02:01=%1 trénuje znak +02:01=%1 jde hledat Titanik +02:01=%1 není Ježíš +02:01=%1 hledá Nema +02:01=%1 objevil prasklinu +02:01=Budeš se divit, kolik je tam dole ježků! +02:01=%1 zvedl o kousek hladinu oceánů +02:01=%1 nebude v námořnictvu +02:01=%1 zkouší své ztělesnění mrtvé ryby +02:01=Alespoň tě nespláchli do záchoda, %1 +02:01=Sonic neuměl plavat a ani ty ne, %1 +02:01=%1 chce hrát delfína Ecca +02:01=%1 odešel navštívit akvárium +02:01=%1 našel ztracené město Atlantidu +02:01=%1 míří na hlavní roli v Bioshocku 3 +02:01=Na tvém stylu čubička by ještě chtělo zapracovat, %1 +02:01=%1 si neměl vozit vodní lyže +02:01=%1 nemá rád vodní sporty +02:01=%1 navždy vypouští bubliny +02:01=%1 nemá raft +02:01=%1 si myslí, že slaná voda je dobrá na pleť +02:01=%1 má v ranách slanou vodu +02:01=%1 šel po prkně +02:01=%1 si dává koupel +02:01=%1 je moc moc moc mokrý +02:01=%1 si namočil bodliny +02:01=%1 našel truhlu Mrtvého muže + +; Round starts +02:02=Do boje! +02:02=Nabito a odjištěno! +02:02=Připrav se na rachot! +02:02=Jdeme na to! +02:02=Ať párty začne +02:02=Poslední stojící ježek vyhrává +02:02=Jdeme! +02:02=Válíme! +02:02=Improvizace! +02:02=Na začátku... +02:02=Tohle je začátek něčeho většího +02:02=Vítej v Hedgewars +02:02=Vítej v první linii +02:02=Rozdrť své nepřátele! +02:02=Nechť vyhraje ten lepší ježek +02:02=Vítězství nebo smrt +02:02=Kořist patří vítězům +02:02=Pro prohru zde není místo +02:02=Křič blázne! Vypusť válečné ježky! +02:02=Hedgewars vám přináší Hedgewars.org +02:02=Hodně štěstí, dobrou zábavu +02:02=Buď rád, že proti tobě nehraje Tiyuri +02:02=Buď rád, že proti tobě nehraje unC0Rr +02:02=Buď rád, že proti tobě nehraje Nemo +02:02=Buď rád, že proti tobě nehraje Smaxx +02:02=Buď rád, že proti tobě nehraje Jessor +02:02=Vezmi si vše! +02:02=Poražený bude dělat úklid! +02:02=Nechť bitva tisíciletí započne +02:02=Nechť bitva století započne +02:02=Nechť bitva desetiletí započne +02:02=Nechť bitva roku započne +02:02=Nechť bitva měsíce započne +02:02=Nechť bitva týdne započne +02:02=Nechť bitva dne započne +02:02=Nechť bitva hodiny započne +02:02=Snaž se, jak umíš! +02:02=Rozdrť své nepřátele! +02:02=Hodně štěstí +02:02=Bav se +02:02=Bojuj dobře +02:02=Bojuj špinavě +02:02=Vyhraj se ctí +02:02=Nevzdávej to +02:02=Nikdy se nevzdávej +02:02=Znič je! +02:02=Nechť zabíjení započne! +02:02=Doufám, že jsi připraven na zápas! +02:02=Běž běž běž! +02:02=Ježci, kupředu! +02:02=Nandej jim co proto! +02:02=Neměj strach! +02:02=Buď statečný a dobývej + +; Round ends (win; unused atm) +02:03=... + +; Round ends (draw; unused atm) +02:04=... + +; New health crate +02:05=Přichází pomoc! +02:05=Zdravotník! +02:05=První pomoc z nebes! +02:05=Zdravotní balíček pro tebe +02:05=Dobré zdraví... v podobě krabice! +02:05=Doktor volá +02:05=Čerstvé náplasti! +02:05=Po tomhle se ti udělá lépe +02:05=Flakónek zdraví! Hups, jiná hra +02:05=Vem si mne! +02:05=Zvedni to +02:05=Zdravá svačinka +02:05=Lék na bolest +02:05=Správné dávkování: tolik, kolik jen najdeš! +02:05=Urgentní dodávka +02:05=Zásoby! + +; New ammo crate +02:06=Víc zbraní! +02:06=Posily! +02:06=Nabít a odjistit! +02:06=Jsem zvědavý, jaká zbraň je uvnitř? +02:06=Zásoby! +02:06=Co může být uvnitř? +02:06=Vánoce přišli dřív v Hedgewars +02:06=Dárek! +02:06=Speciální donáška! +02:06=Bylo to peklo, dostat tohle přes celnici +02:06=Ničící hračky z nebe +02:06=Varování! Nebezpečný obsah +02:06=Zvedni to, nebo vyhoď do vzduchu! Volba je na tobě +02:06=Dárečky! +02:06=Mmmmm munice +02:06=Krabice ničivé síly +02:06=Letecká pošta! +02:06=Cokoliv je uvnitř té krabice, není to pizza +02:06=Vem to! +02:06=Je tu schazování zbraní +02:06=Nenech nepřítele to vzít! +02:06=Lesklé nové hračky! +02:06=Záhadná krabice! + +; New utility crate +02:07=Čas na nářadí! +02:07=Tohle by se mohlo hodit... +02:07=Nářadí! +02:07=Využij tuhle bednu +02:07=Pozor tam dole +02:07=Víc nástrojů! +02:07=Nástroje pro všechny! +02:07=Tohle bude dobré! +02:07=Využij to s rozumem +02:07=Ou, tahle bedna je těžká +02:07=Možná bys mohl potřebovat tohle + +; Hog (%1) skips his turn +02:08=%1 je nudný... +02:08=%1 se nemusel obtěžovat +02:08=%1 je líný ježek +02:08=%1 je bez nápadu +02:08=%1 to vzdal +02:08=Kdo zaváhá má smůlu, %1 +02:08=%1 nestydatě přeskakuje +02:08=%1 je opravdu líný +02:08=%1 potřebuje trochu motivovat +02:08=%1 je pacifista +02:08=%1 potřebuje oddych +02:08=%1 odpočívá +02:08=%1 potřebuje vychladnout +02:08=%1 nemá víru ve své schopnosti +02:08=%1 se rozhodl nic nedělat +02:08=%1 nechává nepřátele zničit se navzájem +02:08=%1 by byl na párty neschopný +02:08=%1 se schovává +02:08=%1 se rozhodl nevyužít tuto příležitost +02:08=%1 se rozhodl, že nejlepší věc, kterou může udělat je... nic +02:08=%1 je slaboch +02:08=Kvo kvo kvo, %1 je slepice +02:08=%1 vypadá jako strašpytel +02:08=%1 je zbabělec! +02:08=%1 čeká na náhlou smrt +02:08=%1 není bojovný typ +02:08=%1 pátrá po smyslu života +02:08=%1 stejně nikdy dobře nestřílel +02:08=%1 se v prvé řadě nechtěl dostat do armády +02:08=Přestaň plýtvat našim časem, %1 +02:08=Zklamal jsi mne, %1 +02:08=No tak, umíš víc %1 +02:08=%1 nemá vůli +02:08=%1 má evidentně něco lepšího na práci +02:08=%1 je slušně vystrašený +02:08=%1 usnul + +; Hog (%1) hurts himself only +02:09=%1 by měl trénovat míření! +02:09=%1 se asi nenávidí +02:09=%1 je na špatné straně! +02:09=%1 vypadá jako emo +02:09=%1 držel svou zbraň obráceně +02:09=%1 je trochu sadista +02:09=%1 je masochista +02:09=%1 nemá pud sebezáchovy +02:09=%1 to zkonil +02:09=%1 to pokazil +02:09=To byla špatná rána, %1 +02:09=%1 je s nebezpečnými zbraněmi trochu nezodpovědný +02:09=%1 by měl zvážit, zda nezměnit povolání +02:09=Nejhorší. Střela. V historii! +02:09=Ne ne ne %1, máš střílet na NEPŘÍTELE! +02:09=%1 by měl ničit jen nepřátele +02:09=%1 udělal krůček k sebevraždě +02:09=%1 pomáhá nepříteli +02:09=To bylo hloupé %1 +02:09=%1 žije heslem "Bez bolesti to nejde" +02:09=%1 je zmatený +02:09=%1 se ve svém pomatení poranil +02:09=%1 se ztrapnil +02:09=%1 je nešika! +02:09=%1 je nemotorný +02:09=%1 ukázal nepříteli, čeho je schopen +02:09=%1 nemůže být pořád perfektní +02:09=Neboj %1, nikdo není dokonalý +02:09=%1 to neudělal záměrně +02:09=Já to nikomu neřeknu, %1 +02:09=Jak trapné! +02:09=Jsem si jistý, že to nikdo neviděl %1 +02:09=%1 by si měl přečíst polní příručku +02:09=%1 měl určitě porouchanou zbraň + ; Hog shot an home run (using the bat and another hog) 02:10=Home Run! -02:10=A bird, a plane, ... -02:10=That one is out! +02:10=Je to pták, je to letadlo, ... +02:10=Tenhle je pryč! + +; Hog (%1) has to leave (team is gone) +02:11=%1 musí jít spát! +02:11=%1 je příliš zaneprázdněn na hraní +02:11=Transportuj ho nahoru, Scotty! +02:11=%1 musel jít + +; Weapon Categories +03:00=Časovaný granát +03:01=Časovaný granát +03:02=Balistická zbraň +03:03=Naváděná zbraň +03:04=Puška (víc ran) +03:05=Kopací nástroj +03:06=Akce +03:07=Transportní nástroj +03:08=Bomba reagující na blízkost +03:09=Puška (více ran) +03:10=BUM! +03:11=Bonk! +03:12=Bojové umění +03:13=NEPOUŽITO +03:14=Transportní nástroj +03:15=Letecký útok +03:16=Letecký útok +03:17=Kopací nástroj +03:18=Nástroj +03:19=Transportní nástroj +03:20=Akce +03:21=Balistická zbraň +03:22=Říkej mne Indiano! +03:23=(Opravdu) Bojové umění +03:24=Koláč NENÍ lež! +03:25=Převlek +03:26=Šťavnatý granát +03:27=Vznětlivý granát +03:28=Balistická zbraň +03:29=Balistická zbraň +03:30=Letecký útok +03:31=Dálkově odpalovaná bomba +03:32=Dočasný efekt +03:33=Dočasný efekt +03:34=Dočasný efekt +03:35=Dočasný efekt +03:36=Dočasný efekt +03:37=Dočasný efekt +03:38=Puška (více ran) +03:39=Transportní nástroj +03:40=Zápalný granát +03:41=Velký fanda Vřískotu +03:42=Zde píši poznámku... +; the misspelled "Beethoven" is intentional (-> to beat) - cannot be translated (poor me) +03:43=Osudová symfonie +03:44=Spotřebovat do 1923 +03:45=Síla vědy +03:46=Horké horké horké! +03:47=Strč je na užitečné místo! +03:48=Čas na kladivo! +03:49=Dělá to, co myslíš +03:50=Krtkův fanda + +; Weapon Descriptions (use | as line breaks) +04:00=Zaútoč na nepřítele pomocí obyčejného granátu.|Exploduje jakmile časovač dojde k nule.|1-5: Nastavuje časovač|Útok: Drž pro hození větší silou +04:01=Zaútoč na nepřítele pomocí tříštivého granátu.|Jakmile dojde časovač k nule, roztříští se do|několika střepin.|1-5: Nastavuje časovač|Útok: Drž pro hození větší silou +04:02=Zaútoč na nepřítele pomocí balistického projektilu,|který může být ovlivněn větrem.|Útok: Drž pro vystřelení větší silou +04:03=Vypusť explozivní včelu, která se zaměří na zvolený|cíl. Nestřílej plnou silou, abys vylepšil přesnost.|Kurzor: Zvol cíl|Útok: Drž pro vystřelení větší silou +04:04=Zaútoč na nepřítele pomocí brokovnice s dvěma ranami.|Díky jejímu rozptylu nepotřebuješ přímý zásah, abys|zranil protivníka.|Útok: Výstřel (vícekrát) +04:05=Zakopej se! Použij sbíječku k vykopání díry|pod zem a k dosaženích jiných míst.|Útok: Začni nebo přestaň kopat +04:06=Znuděn? Nechce se ti útočit? Šetříš municí?|Žádný problém! Prostě přeskoč tah, zbabělče!|Útok: Přeskoč tah bez boje +04:07=Překonej velké vzdálenosti pomocí přesně načasovaných|střel lanem. Využij setrvačnosti k postrčení ostatních|ježků nebo na ně pouštěj granáty a podobné zbraně.|Útok: Vystřel nebo pusť lano|Dlouhý skok: Pusť granát nebo podobnou zbraň +04:08=Udrž si nepřátele od těla položením miny v úzkých průlezech|nebo třeba přimo pod jejich nohy. Ujisti se, že máš kam utéct,|ať ji neaktivuješ sám!|Útok: Polož minu k nohám +04:09=Nejsi si jistý mířením? Použij Desert Eagle|a využij jeho čtyř střel.|Útok: Výstřel (vícekrát) +04:10=Hrubá sílá je vždycky možnost. Polož tuto klasickou|výbušninu k nepříteli a utíkej do bezpečí.|Útok: Polož dynamit k nohám +04:11=Zbav se nepřátelských ježků tak, že je odpálíš na jinou|stranu mapy, nebo třeba do vody. Nebo co takhle odpálení|nějakých min ke svým přátelům?|Útok: Odpal všechno před sebou +04:12=Dostaň se blízko a ukaž sílu těchto téměř smrtelných|bojových umění.|Útok: Proveď Ohnivý úder +04:13=NEPOUŽITO +04:14=Bojíš se výšek? Raději si vezmi padák. Rozvine se,|jakmile padáš příliš dlouho a ochrání tvého ježka|před zraněním z pádu.|Útok: Otevři padák|Dlouhý skok: Pusť granát nebo podobnou zbraň +04:15=Zavolej si letadlo a nech ho provést bombový nálet|na nepřátele.|Vlevo/Vpravo: Vyber směr útoku|Kursor: Vyber cílové místo +04:16=Zavolej letadlo a nech ho shodit pár min|do cílové oblasti.|Vlevo/Vpravo: Vyber směr útoku|Kursor: Vyber cílové místo +04:17=Potřebuješ krytí? Vezmi svářečku, vytvoř si tunel|a krytí je na světě.|Útok: Začni nebo přestaň kopat +04:18=Potřebuješ další ochranu nebo přejít skrz neprůchodnou|oblast? Umísti pár traverz, jak potřebuješ.|Vlevo/Vpravo: Vyber traverzu|Kursor: Umísti traverzu na platné místo +04:19=Použita v pravé situaci dokáže být teleportace silnější|než jakákoliv zbraň. Umožní ti zachránit ježka z nebezpečné|situace během vteřiny.|Kursor: Vyber cílové místo +04:20=Umožní ti odehrát tah s jiným ježkem.|Útok: Aktivuj výměnu ježků +04:21=Vystřel granátu podobný projektil, který po dopadu|uvolní ještě několik střepin.|Útok: Vystřel plnou silou +04:22=Nejen pro Indianu Jonese! Bič je zbraň použitelná|v každé situaci. Především, když chceš někoho shodit|z útesu.|Útok: Udeř vše před sebou +04:23=Pokud nemáš co ztratit, mohlo by se ti tohle hodit.|Obětuj svého ježka a vypusť ho zranit vše, co mu bude|stát v cestě. Jeho život bude ukončen krásným výbuchem.|Útok: Vypusť smrtelný a devastující útok +04:24=Veselé narozeniny! Vypusť tento dort a nech ho dojít|hned vedle svých nepřátel a začni opravdu výbušnou párty.|Dort dokáže překonat téměř veškerý terén, ale může tak|vybuchnout dříve.|Útok: Odešli dort nebo ho zastav a nech vybouchnout +04:25=Použij tento převlek, abys nalákal nepřítele ke skoku|za tebou (a do nějaké mezery nebo propasti).|Útok: Použij převlek a zkus navábit jiného ježka +04:26=Hoď tento šťavnatý meloun na své nepřátele. Jakmile časovač|sepne, rozdělí se na několik výbušných kousků.|1-5: Nastav časovač melounu|Útok: Drž pro hození větší silou +04:27=Nechť ohně pekelné stráví tvé odpůrce díky této|pekelné trhavině. Nedostaň se moc blízko k explozi,|jelikož menší oheň může vydržet déle.|Útok: Drž pro hození větší silou +04:28=Krátce po vypuštění této rakety začne vrtat|skrz pevný terén a exploduje, jakmile ji|sepne časovač, nebo po vynoření na povrch.|Útok: Drž pro hození větší silou +04:29=Tohle není nic pro malé děti! Kuličkomet vystřelí spoustu|malých barevných kuliček naplněných výbušninou.|Útok: Vystřel plnou silou|Nahoru/Dolu: Pokračuj v míření +04:30=Zavolej si leteckou podporu a nech ji vypustit napalm.|Se správným mířením dokáže tenhle útok vymazat obrovské|území včetně nešťastných ježků, kteří tam stojí.|Vlevo/Vpravo: Vyber směr útoku|Kursor: Vyber cílové místo +04:31=Dálkově ovládané letadýlko je ideální zbraň na sbírání beden,|nebo útočení na vzdálené ježky. Buď ho naveď mezi nepřátele,|nebo nejprve shoď několik bomb.|Útok: Vypusť letadlo nebo shoď bombu|Dlouhý skok: Nech valkýru vyjet do boje|Vlevo/Vpravo: Řiď letadlo +04:32=Nízká gravitace je mnohem efektivnější než jakákoliv|dieta! Skákej výš a do větších vzdáleností, nebo nech|nepřátele doletět ještě o kus dál.|Útok: Aktivace +04:33=Občas jen potřebuješ tuhle pomůcku ke zvýšení|poškození, které způsobíš.|Útok: Aktivace +04:34=Jsem nedotknutelný!|Útok: Aktivace +04:35=Občas ten čas strašně letí. Vezmi si nějaké vteřiny|navíc na dokončení útoku.|Útok: Aktivace +04:36=Ano, občas jen nemíříš tak dobře. Využij pomoc|moderní technologie.|Útok: Aktivace +04:37=Neboj se denního světla. Tohle bude trvat jen jeden tah, ale|umožní ti to uzdravit se poškozením, které způsobíš ostatním.|Útok: Aktivace +04:38=Odstřelovací puška může být nejničivější zbraní|ve tvém arzenálu, ale na malé vzdálenosti je|značně neefektivní. Poškození, které způsobí|je zvyšuje se vzdáleností od cíle.|Útok: Výstřel (dvakrát) +04:39=Odleť do jiných částí mapy pomocí létajícího talíře.|Tento těžce ovladatelný nástroj ti umožní dostat se|téměř na jakékoliv místo na bojišti.|Útok: Aktivace|Nahoru/Vlevo/Vpravo: Zažehni trysku v daném směru|Dlouhý skok: Pusť granát nebo podobnou zbraň +04:40=Zapal nějakou zem pomocí této lahve naplněné|(už za chvíli) hořící kapalinou.|Útok: Drž pro hození větší silou +; TODO - not very good translation of Birdy (the evidence of nature) +04:41=Známka přírody dokáže být ještě mocnější než létající talíř.|Ptáček může nést tvého ježka a shazovat vejce na nepřátele!|Útok: Aktivace a shazování vajec|Nahoru/Vlevo/Vpravo: Mávnutí křídly v daném směru +04:42=Toto zařízení je schopno v okamžiku přemístit|tebe, tvé nepřátele, nebo tvoji palebnou sílu|mezi dvěma body v krajině. Využij to rozumně|a tvé tažení bude... VELKÝ ÚSPĚCH!|Útok: Vystřel portál|Výměna: Změň barvu portálu +04:43=Udělej ze svého prvního hudebního vystoupení explozivně|úspěšný koncert! Shoď piano z nebes, ale pozor...|někdo na něj musí hrát a to tě může stát život!|Kursor: Vyber cílové místo|F1-F9: Hraj na piano +04:44=Tohle není jen tak ledajaký sýr, to je biologická zbraň!|Najednou nenapáchá příliš škod, ale jakmile časovač dojde|k nule zapáchá tak silně, že otráví každého, kdo si jen|přičichne!|1-5: Nastav časovač|Útok: Drž pro hození větší silou +04:45=Všechny ty hodiny fyziky se konečně vyplatí.|Vypusť ničivou sinovou vlnu na své protivníky.|Dej pozor, tahle zbraň docela kope.|(Tato zbraň není dokončena)|Útok: Výstřel +04:46=Pokryj své protivníky prskajícím tekutým ohněm.|Zahřeje u srdce!|Útok: Aktivace|Nahoru/Dolu: Pokračuj v míření|Vlevo/Vpravo: Změň sílu plivání +04:47=Zdvojnásob zábavu pomocí dvou ostnatých, zákeřných, lepkavých|min. Vytvoř řetězovou reakci nebo se braň (nebo oboje!)|Útok: Drž pro hození větší silou (dvakrát) +04:48=Proč by se měli týrat jen krtci? Mlácení ježků může|být stejná zábava! Jedna dobrá rána tímhle kladivem|uštědří poškození za jednu třetinu ježkova zdraví a|zarazí ho pod zem.|Útok: Aktivace +04:49=Vzkřis své přátele! Ale měj se na pozoru, protože|tohle vzkřísí i tvé protivníky.|Útok: Drž stisknuto pro pomalé oživování|Nahoru: Zrychlí oživování + +; Game goal strings +05:00=Herní módy +05:01=Platí následující pravidla +05:02=Pevnosti: Braň svou pevnost; znič nepřátele! +05:03=Nízká gravitace: Koukej, kam šlapeš +05:04=Nesmrtelnost: Ježci jsou (skoro) nesmrtelní +05:05=Vampyrismus: Ježci budou oživeni poškozením, které způsobí +05:06=Karma: Ježci trpí stejně jako jejich oběť +05:07=Chraň krále: Nenech svého krále zemřít.|Umísti krále: Umísti chráněný bod pro svého krále +05:08=Umísti ježky: Umísti ježky před začátkem hry +05:09=Dělostřelectvo: Ježci nemohou změnit polohu chůzí +05:10=Nezničitelný terén: Většina zbraní neničí terén +05:11=Sdílená munice: Všechny týmy stejné barvy sdílí munici +05:12=Časovač min: Miny vybuchnou za %1 vt. +05:13=Časovač min: Miny vybuchnou okamžitě +05:14=Časovač min: Miny vybuchnou za 0 - 5 vteřin +05:15=Změna poškození: Všechny zbraně způsobují %1% poškození +05:16=Zdraví všech ježků je obnoveno na konci každého tahu +05:17=Počítačem ovládaní ježci jsou oživeni po smrti +05:18=Neomezeně útoků +05:19=Zbraně jsou obnoveny na konci tahu +05:20=Zbraně nejsou sdíleny mezi ježky diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/fr.lua diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/fr.txt --- a/share/hedgewars/Data/Locale/fr.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/fr.txt Thu Aug 04 17:44:55 2011 +0200 @@ -1,7 +1,7 @@ ; French locale 00:00=Grenade -00:01=Grenade à fragments +00:01=Grenade à fragmentation 00:02=Bazooka 00:03=Abeille Missile 00:04=Fusil @@ -111,6 +111,8 @@ 02:00=Adieu %1, nous tenions beaucoup a toi ! 02:00=%1 avait une faible tolérance aux coups à balles 02:00=%1 aurait dû utiliser une vie supplémentaire +02:00=%1 rejoint ses ancêtres +02:00=%1 sera muet comme une tombe ; Hog (%1) drowned 02:01=%1 joue au sous-marin ! 02:01=%1 imite le Titanic ! @@ -157,6 +159,9 @@ 02:01=%1 prend un bain 02:01=%1 est tout mouillé 02:01=%1 trouve que l'eau est un peu trop froide +02:01=%1 flotte comme une enclume +02:01=%1 a oublié son masque et ses palmes +02:01=%1 a vu une sirène ! ; Match starts 02:02=Aux armes ! 02:02=Prêts à combattre ! @@ -177,6 +182,7 @@ 02:02=Sois heureux, tu n'est pas contre Nemo ! 02:02=Sois heureux, tu n'est pas contre Smaxx ! 02:02=Sois heureux, tu n'est pas contre Jessor ! +02:02=Rien à perdre, tout à gagner ! 02:02=Donnez tout ce que vous avez ! 02:02=Les perdants font le ménage ! 02:02=Que la bataille du millénaire commence ! @@ -200,7 +206,10 @@ 02:02=Hérissons, en avant ! 02:02=N'ayez pas peur ! 02:02=Soyez braves ! +02:02=3,2,1... Massacrez ! +02:02=Ave Caesar, Morituri te salutant ! 02:02=Combattez jusqu'à la fin ! +02:02=Que la force soit avec vous ! ; Round ends (win; unused atm) 02:03=... ; Round ends (draw; unused atm) @@ -220,6 +229,9 @@ 02:05=Meilleur dosage: autant que vous pouvez ! 02:05=Livraison urgente 02:05=Ravitaillements ! +02:05=Voilà la Croix Rouge ! +02:05=Médecin Sans Frontière à votre service ! +02:05=Hausse de l'espérance de vie en vue ; New ammo crate 02:06=Plus d'armes ! 02:06=Du renfort ! @@ -241,6 +253,9 @@ 02:06=Ne laisse pas l'ennemi prendre ça ! 02:06=Des nouveaux jouets flambant neufs ! 02:06=Une boîte mystérieuse ! +02:06=L'espoir fait vivre +02:06=Surement quelquechose d'utile +02:06=Que la chance soit avec vous ! ; New utility crate 02:07=Boite à outils ! 02:07=Ça peut être pratique... @@ -250,6 +265,10 @@ 02:07=Ça devrait être bien ! 02:07=Utilisez-le avec précaution 02:07=Vous devriez avoir besoin de ça +02:07=C'est toujours bon à prendre +02:07=Elle s'est peut être blessée en tombant, vous devriez aller la voir +02:07=Bob le bricoleur sait être généreux +02:07=Le moment donné par le hasard vaut mieux que le moment choisi ; Hog (%1) skips his turn 02:08=%1 est une lopette... 02:08=%1 est trooooop rasant... @@ -285,6 +304,12 @@ 02:08=%1 a apparemment mieux a faire 02:08=%1 est mort de peur 02:08=%1 s'est endormi +02:08=%1 est timide +02:08=%1 ne voulait pas quitter sa maman +02:08=%1 a peur de se blesser +02:08=Les gens heureux n'ont pas besoin de se presser selon %1 +02:08=Ne crains pas d'avancer lentement, crains seulement de t'arrêter %1 +02:08=Patience ! Avec le temps, l'herbe devient du lait ; Hog (%1) hurts himself only 02:09=%1 devrait apprendre à viser ! 02:09=%1 s'en veut @@ -315,12 +340,17 @@ 02:09=Je suis sûr que personne n'a vu cela %1 02:09=%1 a besoin de réviser son manuel de terrain 02:09=L'arme de %1 fonctionne clairement mal -02:00=%1 aurait dû dire NON à la drogue +02:09=%1 aurait dû dire NON à la drogue +02:09=%1 se cache +02:09=%1 ne peut pas échapper à son destin +02:09=%1 a pris son arme dans le mauvais sens +02:09=%1 est surement daltonien ; Hog shot an home run (using the bat and another hog) 02:10=Home Run ! 02:10=C'est un oiseau ! C'est un avion ! ... 02:10=Hors du parc ! - +02:10=Coup gagnant ! +02:10=I believe I can FLY ! I believe I can... *boum* ; Weapon Categories 03:00=Grenade à retardement 03:01=Grenade à retardement @@ -368,54 +398,54 @@ ; Weapon Descriptions (use | as line breaks) 04:00=Attaquez vos ennemis en utilisant une simple grenade.|Elle explosera une fois que le compte à rebours atteindra zéro.|1-5: Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force 04:01=Attaquez vos ennemis en utilisant une bombe à retardement.|Elle se désintégrera en de multiples petites bombes |quand le compte à rebours atteindra zéro|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force -04:02=Attaquez vos ennemis en utilisant un missile balistique|qui pourrait subir l'influence du vent.|Attaque : maintenez pour tirer avec plus de force +04:02=Attaquez vos ennemis en utilisant un missile balistique|subissant l'influence du vent.|Attaque : maintenez pour tirer avec plus de force 04:03=Lancez une bombe téléguidée qui se verrouillera|sur la cible choisie. Ne tirez pas à pleine puissance|pour une meilleure précision.|Curseur : choix de la cible|Attaque : maintenez pour tirer avec plus de force -04:04=Attaquez votre ennemi en utilisant un pistolet à deux coups.|Grâce à son pouvoir de dispersion vous n'avez pas besoin de frapper directement sur la cible|pour toucher votre ennemi.|Attaque : tirez (coups multiples) +04:04=Attaquez votre ennemi en utilisant un fusil à deux coups.|Grâce à son pouvoir de dispersion vous n'avez pas besoin de frapper directement sur la cible|pour toucher votre ennemi.|Attaque : tirez (coups multiples) 04:05=Descendez sous terre ! Utilisez le marteau-piqueur pour creuser un trou|dans le sol et atteindre d'autres zones.|Attaque : commencez/achevez de creuser 04:06=Vous en avez marre ? Pas moyen d'attaquer ? Vous économisez vos munitions ?|Pas de problèmes ! Passez simplement votre tour, espèce de lâche !|Attaque : Passez votre tour sans combattre -04:07=Franchissez les grandes distances en utilisant par intervalles la |corde ninja. Utilisez votre élan pour vous lancer contre les autres hérissons|ou balancez des grenades ou autres armes offensives sur eux.|Attaque : Tirer ou lâchez la corde ninja|Saut longue distance : jetez des grenades ou des armes similaires -04:08=Maintenez vos ennemis à distance en laissant une mine|dans les passages étroits ou juste sous leurs pieds. Assurez-vous|que vous pouvez vous sauver avant de déclencher la grenade !|Attaque : lâchez la grenade à votre pied -04:09=Vous n'êtes pas sûr de ce que vous voulez ? Utilisez l'Aigle| du Désert pour attaquer en utilisant vos quatre coups.|Attaque : tirez (coups multiples) -04:10=La force brute est toujours une possibilité. Lancez cet explosif|classique sur vos ennemis et retirez-vous.|Attaque : Lâchez la dynamite à vos pieds -04:11=Débarrassez-vous des hérissons ennemis en leur donnant des coups pour les chasser |au-delà de la frontière ou en les jetant à l'eau. Ou bien préférez-vous|envoyer quelques mines sur vos ennemis ?|Attaque : donnez des coups sur tout ce qui bouge devant vous. +04:07=Franchissez les grandes distances en utilisant par intervalles la |corde ninja. Utilisez votre élan pour vous lancer contre les autres hérissons,|balancez leurs des grenades ou d'autres armes explosives.|Attaque : Tirer ou lâchez la corde ninja|Saut longue distance : jetez des grenades ou des armes similaires +04:08=Maintenez vos ennemis à distance en laissant une mine|dans les passages étroits ou juste sous leurs pieds. Assurez-vous|que vous pouvez vous sauver avant son déclenchement !|Attaque : lâchez la mine à vos pieds +04:09=Vous n'êtes pas sûr de ce que vous voulez ? Utilisez l'Aigle| du Désert pour attaquer en utilisant vos quatre coups. Poussez dans l'eau vos ennemis ou transpercez leur défense|Attaque : tirez (coups multiples) +04:10=La force brute est toujours une possibilité. Lancez cet explosif|classique sur vos ennemis et prenez le temps de vous retirer.|Attaque : Lâchez la dynamite à vos pieds +04:11=Débarrassez-vous des hérissons ennemis en leur donnant des coups pour les chasser |vers d'autres horizons ou en les jetant à l'eau. Ou bien préférez-vous|envoyer quelques tonneaux ou mines sur vos ennemis ?|Attaque : frappez un bon coup sur tout ce qui bouge. 04:12=Allez au combat rapproché corps à corps pour utiliser toute la force presque mortelle de ces arts martiaux.|Attaque : lancez un coup de poing fulgurant 04:13=non-utilisé 04:14=Vous avez le vertige ? Prenez donc un parachute.|Il se déploiera lorsque|vous serez tombé trop loin|et épargnera le choc de la chute à votre hérisson.|Attaque: Dépliez le parachute -04:15=Appelez un avion pour attaquer vos ennemis|en utilisant le bombardement.|Gauche/Droite : Déterminez la direction de l'attaque|Curseur : Choisissez la zone cible +04:15=Appelez le 3615 BOMBE pour commander une frappe aérienne dévastatrice sur vos ennemis.|Gauche/Droite : Déterminez la direction de l'attaque|Curseur : Choisissez la zone cible 04:16=Appelez un avion qui enverra plusieurs mines|sur la zone cible.|Gauche/Droite : Détermine la direction de l'attaque|Curseur : Sélectionnez la zone cible -04:17=vous avez besoin d'un abri ? Utilisez la lampe-torche pour creuser|un tunnel dans le sol pour vous garantir |un bon abri.|Attaque : Commencez/cessez de creuser. -04:18=Vous avez besoin de vous protéger davantage ou de franchir un |obstacle infranchissable ? Placez quelques poutrelles|où vous voulez .|Gauche/Droite : Choisissez la poutrelle à placer|Curseur : Placez la poutrelle dans la bonne position +04:17=vous avez besoin d'un abri ? de pousser quelques ennemis dans l'eau ? Utilisez le chalumeau| pour creuser un tunnel dans le sol, vous protéger ou faire de nouvelles victimes.|Attaque : Commencez/cessez de creuser. +04:18=Vous avez besoin de vous protéger davantage ou de passer un |obstacle infranchissable ? Placez quelques poutrelles|où vous voulez .|Gauche/Droite : Choisissez la poutrelle à placer|Curseur : Placez la poutrelle dans la bonne position 04:19=La téléportation utilisée au bon moment|peut être bien plus efficace|que la plupart des autres armes|car elle vous permet de sauver des hérissons de situations dangereuses|en quelques secondes.|Curseur : Choisissez la zone cible 04:20=Vous permet de jouer la partie en cours avec|un hérisson différent.|Attaque : Activez le changement de hérisson -04:21=Tirez une grenade balistique qui va|envoyer de multiples bombes au point d'impact.|Attaque : Tirez à pleine puissance -04:22=Ce n'est pas réservé à Indiana Jones! Le fouet est une|arme bien utile dans plusieurs situations. Particulièrement|quand vous devez hisser quelqu'un en haut d'une falaise.|Attaque : Frappez tout ce qui bouge devant vous -04:23=Si vous n'avez rien à perdre, voilà qui peut être |bien pratique. Sacrifiez votre hérisson en le lançant dans une direction| particulière et en heurtant tout sur son passage|avant d'exploser finalement.|Attaque : Lancer l'attaque mortelle et dévastatrice +04:21=Tirez un missile balistique qui va|envoyer de multiples bombes au point d'impact.|Attaque : Tirez à pleine puissance +04:22=Ce n'est pas réservé à Indiana Jones ! Le fouet est une|arme bien utile dans plusieurs situations. Particulièrement|quand vous devez hisser quelqu'un en haut d'une falaise.|Attaque : Frappez tout ce qui bouge devant vous +04:23=Si vous n'avez rien à perdre, voilà qui peut être |bien pratique. Sacrifiez votre hérisson en le lançant dans une direction| particulière. Il heurtera tout sur son passage avant |d'exploser finalement.|Attaque : Lancer l'attaque mortelle et dévastatrice 04:24=Joyeux anniversaire ! Lancez ce gâteau, faites-le atterrir|tout près de vos ennemis et offrez-leur une fête explosive.|Le gâteau peut franchir presque tous les environnements mais|il se peut qu'il explose à mi-chemin.|Attaque : Lancez le gâteau ou bien faites-le s'arrêter et exploser -04:25=Utilisez le déguisement pour amener vos ennemis à sauter vers|votre hérisson (et donc vers un piège ou un trou).|Attaque : Utilisez le déguisement et tentez de séduire un autre hérisson -04:26=Envoyez cette pastèque explosive à la tête de vos ennemis. Lorsque|le compte à rebours s'achève, elle se désintègrera en de multiples fragments explosifs|1-5 : Lancer le compte à rebours|Attaque : Maintenez pour tirer avec plus de puissance -04:27=Faites tomber un déluge de feu sur vos adversaires en utilisant|cet explosif dévastateur.|Ne vous tenez pas trop prêt|de l'impact car les petits feux peuvent durer longtemps|Attaque : Maintenez pour tirer avec plus de puissance -04:28=Peu après le lancement de ce missile, il va se mettre|à creuser le sol le plus résistant et va exploser|une fois son détonateur amorcé, sinon il refait surface.|Attaque : Maintenez pour tirer avec plus de puissance +04:25=Arme de séduction massive ! Utilisez le déguisement pour amener vos ennemis| à sauter vers votre hérisson (et donc vers un piège ou un trou).|Attaque : Utilisez le déguisement et tentez de séduire un autre hérisson +04:26=Envoyez cette pastèque explosive à la tête de vos ennemis. Une fois le compte-à-rebours achevé, elle se désintégrera en de multiples fragments explosifs|1-5 : Lancer le compte à rebours|Attaque : Maintenez pour tirer avec plus de puissance +04:27=Faites tomber un déluge de feu sur vos adversaires en utilisant|cet explosif dévastateur.|Ne vous tenez pas trop prêt|de l'impact car les flammes peuvent durer longtemps|Attaque : Maintenez pour tirer avec plus de puissance +04:28=Peu après le lancement de ce missile, il va se mettre|à creuser le sol le plus résistant et explosera|une fois son détonateur amorcé ou une fois atteint l'air libre.|Attaque : Maintenez pour tirer avec plus de puissance 04:29=Ce n'est pas un jouet pour les enfants ! La mitrailleuse envoie|des centaines de petites balles colorées explosives.|Attaque : Tirez à pleine puissance|Haut/Bas : Continuez à tirer 04:30=Appelez un avion pour larguer une puissante giclée de napalm.|En la menant correctement cette attaque peut éradiquer|des zones entières du paysage, et notamment les hérissons qui auraient la malchance de se trouver là.|Gauche/Droite: Déterminez la direction de l'attaque|Curseur : Choisissez la zone cible -04:31=L'avion télécommandé est l'arme idéale pour récolter des coupes ou|attaquer des hérissons très éloignés. Vous pouvez soit le lancer au milieu de vos adversaires|bombarder auparavant.|Attaque : Lancez l'avion ou larguez des bombes|Saut longue distance : laissez les valkyries entrer dans la danse guerrière|Haut/Bas : Pilotez l'avion -04:32=La fable gravité est plus efficace que n'importe quel régime ! Sautez|plus haut et franchissez de plus grandes distances ou bien faites voler vos ennemis |voltiger encore plus loin.|Attaque : Activez +04:31=L'avion télécommandé est l'arme idéale pour récolter des boites ou|attaquer des hérissons très éloignés. Une fois vos ennemis bombardés, vous pourrez lancer votre avion sur l'ennemi dans une explosion incendiaire.|Attaque : Lancez l'avion ou larguez des bombes|Saut longue distance : laissez les valkyries entrer dans la danse guerrière|Haut/Bas : Pilotez l'avion +04:32=La fable gravité est plus efficace que n'importe quel régime ! Sautez|plus haut et franchissez de plus grandes distances ou bien faites voltiger vos ennemis |encore plus loin.|Attaque : Activez 04:33=Parfois vous avez besoin d'un petit coup de pouce supplémentaire|pour gérer les dégâts.|Attaque : Activez 04:34=Personne ne peut me toucher !|Attaque : Activez 04:35=Parfois le temps passe trop vite. Grappillez quelques secondes de plus pour terminer votre attaque|Attaque : Activez -04:36=Eh bien, parfois vous ratez complètement la cible. Demandez plutôt l'aide|de la technologie actuelle la meilleure.|Attaque : Activez -04:37=Ne craignez pas la lumière du jour. Elle ne durera qu'une manche|mais vous permettra de repérer les dégâts que vous avez faits aux|autres hérissons.|Attaque : Activez -04:38= Le fusil à lunettes peut être une de armes les plus dévastatrices|de tout votre arsenal, toutefois il est totalement inefficace|en combat rapproché. Les dommages qu'il cause augmentent suivant|la distance de la cible.|Attaque : Tirez (deux fois) -04:39=Volez vers d'autres secteurs de la carte en utilisant une soucoupe|volante. Ce moyen de transport pas facile à dompter est capable de vous|emporter vers presque tous les lieux du champ de bataille|Attaque : Activer|Haut/Gauche/Droite : appliquez la force dans une direction +04:36=Eh bien, parfois vous ratez complètement la cible. Demandez plutôt de l'aide|à la technologie de pointe actuelle pour bien viser.|Attaque : Activez +04:37=Ne craignez pas la lumière du jour. Rafraichissez vous |d'un peu de sang en récupérant des points de vie sur les dégats faits aux ennemis.|Attaque : Activez +04:38= Le fusil à lunette peut être une des armes les plus dévastatrices|de tout votre arsenal, toutefois il est totalement inefficace|en combat rapproché. Les dommages qu'il cause augmentent suivant|la distance de la cible.|Attaque : Tirez (deux fois) +04:39=Volez vers d'autres secteurs de la carte en utilisant une soucoupe|volante. Ce moyen de transport, pas facile à dompter, vous|emportera vers presque tous les horizons du champ de bataille|Attaque : Activer|Haut/Gauche/Droite : Prenez de l'altitude et controllez votre direction 04:40=Mettez le feu à un territoire en utilisant cette bouteille remplie|de liquide inflammable.|Attaque : maintenez pour tirer avec plus de force -04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer des œufs sur vos ennemis !|Attaque : Activez et larguez des œufs|Haut/Gauche/Droite: voltigez vers une direction. -04:42=Ce fusil à portails est capable de vous transporter instantanément,| ainsi que vos ennemis ou des armes entre deux points du terrain. |Utilisez-le intelligemment et votre campagne sera un ... GRAND SUCCÈS !|Attaque : Crée un portail|Modificateur : Change la couleur du portail -04:43=Faites de vos débuts musicaux un succès explosif !| Lâchez un piano depuis les cieux, mais attention ... quelqu'un doit|jouer dessus, et cela pourrait lui coûter sa vie !|Curseur : Choix de la cible|F1-F9 : Jouer du piano -04:44=Ce n'est pas juste un fromage, c'est une arme biologique !|Il ne provoquera de gros dommages une fois que le compteur|atteindra zéro mais il empoisonnera tous les malchanceux touchés par l'odeur !|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force -04:45=Tous ces cours de physique ont finalement payé,|lancez une onde Sinus dévastatrice à vos ennemis.|Attention au recul ! (cette arme est incomplète)|Attaque : Activez -04:46=Recouvrez vos ennemis de sifflantes flammes liquides.|Hauts les cœurs !|Attaque : Activez|Haut/Bas : Continuez à viser|Droite/Gauche : Changer la puissance de tir -04:47=Doublez le fun avec deux mines, piquantes, furtives et collantes.|Provoquez une réaction en chaine ou défendez-vous ! (ou les deux)|Attaque : maintenez pour tirer avec plus de force (deux fois) -04:48=Pourquoi les taupes auraient tous le fun ?|Un bon coup de ce marteau enlèvera un tiers de la santé du hérisson et l'enverra dans le sol|Attaque : Activez -04:49=Ressuscite vos amis !Mais méfiez-vous, cela ressuscite également vos ennemis.|Attaque : Maintenez attaque pressée pour ressusciter lentement|Haut : Accélérer la résurrection +04:41=Une arme naturelle qui peut suffire à remplacer la soucoupe volante. |Cet oiseau a du manger un vieux fromage pourri (du Limburger vous dites ?) car ses oeufs ont comme quelquechose de ... toxique. Le piaf peut donc transporter votre hérisson et|balancer des œufs sur vos ennemis !|Attaque : Activez et larguez des œufs|Haut/Gauche/Droite: voltigez vers une direction. +04:42=Ce fusil à portails est capable de transporter instantanément hérissons,|tonneaux ou mines entre deux points du terrain. |Utilisez-le intelligemment et votre campagne sera un ... GRAND SUCCÈS !|Attaque : Crée un portail|Modificateur : Change la couleur du portail +04:43=Faites de vos débuts musicaux un succès explosif !| Lâchez un piano depuis les cieux, mais attention ... si quelqu'un doit|jouer dessus, cela pourrait lui coûter la vie !|Curseur : Choix de la cible|F1-F9 : Jouer du piano +04:44=Ce n'est pas juste un fromage, c'est une arme bactériologique !|Si il ne provoque que de faibles dommages, sa puissance se trouve dans sa durée. Il empoisonnera tous les malchanceux touchés par l'odeur et réduira leur vie à l'agonie !|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force +04:45=Tous ces cours de physique ont finalement payé,|lancez une onde Sinus dévastatrice sur vos ennemis.|Attention au recul ! (cette arme est incomplète)|Attaque : Activez +04:46=Aspergez vos ennemis de flammes liquides ou creusez vous un passage dans le sol.|Hardi !|Attaque : Activez|Haut/Bas : Continuez à viser|Droite/Gauche : Changer la puissance de tir +04:47=Doublez le fun avec deux mines, piquantes, furtives et collantes.|Provoquez une réaction en chaine dévastatrice et/ou défendez-vous ! |Attaque : maintenez pour tirer avec plus de force (deux fois) +04:48=Outre une bonne bosse, un bon coup de ce marteau enlèvera un tiers de la santé |du hérisson ennemi et l'enfoncera dans le sol ou dans l'eau comme un vulgaire asticot !|Attaque : Activez +04:49=Ressuscite vos amis oubliés six pieds sous terre ! Mais méfiez-vous, ressuscite également vos ennemis. |Attaque : Maintenez attaque pressée pour ressusciter lentement|Haut : Accélérer la résurrection ; Game goal strings 05:00=Modes de jeu @@ -423,8 +453,8 @@ 05:02=Forts : Défendez votre forteresse ; exterminez vos ennemis ! 05:03=Faible gravité : Attention à vos mouvements 05:04=Invulnérabilité : Les hérissons sont (presque) invulnérables -05:05=Vampirisme : Les hérissons seront guéris de leurs blessures -05:06=Karma: Les hérissons seront victimes de leurs blessures +05:05=Vampirisme : Les hérissons récupèrent des points de vie par les dégats qu'ils infligent +05:06=Karma: Les hérissons sont victimes des blessures qu'ils infligent 05:07=Protégez le roi : Ne laissez pas mourir le roi !|Placez le roi : Choisissez un point de départ sécurisé pour le roi 05:08=Placez les hérissons : Placez vos hérissons avant le début de la partie 05:09=Artillerie : Les hérissons ne peuvent pas se déplacer pour changer de place @@ -432,6 +462,6 @@ 05:11=Munitions partagées : Toutes les équipes de la même couleur partagent leurs munitions 05:12=Mines à retardement : Les mines exploseront après %1 seconde(s) 05:13=Mines à retardement : Les mines explosent immédiatement -05:14=Mines à retardement : Les mines exploseront dans un délai entre 0 et 3 secondes +05:14=Mines à retardement : Les mines exploseront dans un délai compris entre 0 et 3 secondes 05:15=Modificateur de dégâts : Toutes les armes feront %1% de dégâts diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/hedgewars_bg.ts --- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Thu Aug 04 17:44:55 2011 +0200 @@ -5,18 +5,18 @@ <name>AmmoSchemeModel</name> <message> <source>new</source> - <translation type="unfinished">Нов отбор</translation> + <translation>Нов</translation> </message> <message> <source>copy of</source> - <translation type="unfinished"></translation> + <translation>копие на</translation> </message> </context> <context> <name>FreqSpinBox</name> <message> <source>Never</source> - <translation type="unfinished"></translation> + <translation>Никога</translation> </message> <message numerus="yes"> <source>Every %1 turn</source> @@ -30,11 +30,11 @@ <name>GameCFGWidget</name> <message> <source>Edit schemes</source> - <translation type="unfinished"></translation> + <translation>Редактиране на схемите</translation> </message> <message> <source>Edit weapons</source> - <translation type="unfinished"></translation> + <translation>Редактиране на оръжията</translation> </message> <message> <source>Error</source> @@ -46,26 +46,26 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> - <translation type="unfinished"></translation> + <translation>Когато тази настройка е включена, при избирането на игрова схема автоматично ще се избере оръжие</translation> </message> </context> <context> <name>HWChatWidget</name> <message> <source>%1 *** %2 has been removed from your ignore list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 беше премахнат от списъка с игнорирани</translation> </message> <message> <source>%1 *** %2 has been added to your ignore list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 беше добавен към списъка с игнорирани</translation> </message> <message> <source>%1 *** %2 has been removed from your friends list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 беше премахнат от списъка с приятели</translation> </message> <message> <source>%1 *** %2 has been added to your friends list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 беше добавен към списъка с приятели</translation> </message> </context> <context> @@ -96,17 +96,17 @@ </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>Файл с демо на Hedgewars</translation> </message> <message> <source>Hedgewars Save File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Файл със запазена игра на Hedgewars</translation> </message> </context> <context> @@ -160,31 +160,31 @@ </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Тип</translation> </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>Large tunnels</source> - <translation type="unfinished"></translation> + <translation>Големи тунели</translation> </message> <message> <source>Small floating islands</source> - <translation type="unfinished"></translation> + <translation>Малки плаващи острови</translation> </message> <message> <source>Medium floating islands</source> - <translation type="unfinished"></translation> + <translation>Средни плаващи острови</translation> </message> <message> <source>Large floating islands</source> - <translation type="unfinished"></translation> + <translation>Големи плаващи острови</translation> </message> <message> <source>Seed</source> @@ -222,11 +222,11 @@ </message> <message> <source>You got kicked</source> - <translation type="unfinished"></translation> + <translation>Вие бяхте изхвърлен</translation> </message> <message> <source>Password</source> - <translation type="unfinished"></translation> + <translation>Парола</translation> </message> <message> <source>Quit reason: </source> @@ -238,26 +238,29 @@ </message> <message> <source>%1 *** %2 has joined the room</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 се присъедини към стаята</translation> </message> <message> <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 се присъедини</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 напусна (%3)</translation> </message> <message> <source>%1 *** %2 has left</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 напусна</translation> </message> <message> <source>Your nickname %1 is registered on Hedgewars.org Please provide your password below or pick another nickname in game config:</source> - <translation type="unfinished"></translation> + <translation>Прякорът ви %1 е +регистриран на Hedgewars.org +Моля въдете паролата си по-долу +или изберете друг прякор в настройките на играта:</translation> </message> </context> <context> @@ -271,69 +274,69 @@ <name>PageAdmin</name> <message> <source>Clear Accounts Cache</source> - <translation type="unfinished"></translation> + <translation>Изчистване на кеша на профилите</translation> </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> </context> <context> <name>PageConnecting</name> <message> <source>Connecting...</source> - <translation type="unfinished"></translation> + <translation>Свързване...</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>Drawn Maps (*.hwmap);;All files (*.*)</source> - <translation type="unfinished"></translation> + <translation>Начертани карти (*.hwmap);;Всички файлове (*.*)</translation> </message> <message> <source>Save drawn map</source> - <translation type="unfinished"></translation> + <translation>Запазване на начертана карта</translation> </message> </context> <context> @@ -355,19 +358,19 @@ </message> <message> <source>Details</source> - <translation type="unfinished"></translation> + <translation>Подробности</translation> </message> <message> <source>Health graph</source> - <translation type="unfinished"></translation> + <translation>Графика на здрането</translation> </message> <message> <source>Ranking</source> - <translation type="unfinished"></translation> + <translation>Класиране</translation> </message> <message> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> - <translation type="unfinished"></translation> + <translation>Наградата за най-добър изстрел беше спечелена от <b>%1</b> с <b>%2</b> pts.</translation> </message> <message numerus="yes"> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> @@ -380,7 +383,6 @@ <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message numerus="yes"> @@ -392,8 +394,7 @@ </message> <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> + <translation> <numerusform></numerusform> </translation> </message> @@ -401,14 +402,12 @@ <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></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></numerusform> </translation> </message> </context> @@ -690,18 +689,18 @@ <name>PageNetGame</name> <message> <source>Control</source> - <translation type="unfinished"></translation> + <translation>Контрол</translation> </message> </context> <context> <name>PageNetType</name> <message> <source>LAN game</source> - <translation type="unfinished"></translation> + <translation>Игра по локална мрежа</translation> </message> <message> <source>Official server</source> - <translation type="unfinished"></translation> + <translation>Официален сървър</translation> </message> </context> <context> @@ -716,35 +715,35 @@ </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>Нова схема</translation> </message> <message> <source>Edit scheme</source> - <translation type="unfinished"></translation> + <translation>Редактиране на схема</translation> </message> <message> <source>Delete scheme</source> - <translation type="unfinished"></translation> + <translation>Изтриване на схема</translation> </message> <message> <source>New weapon set</source> - <translation type="unfinished"></translation> + <translation>Нов комплект оръжия</translation> </message> <message> <source>Edit weapon set</source> - <translation type="unfinished"></translation> + <translation>Редактиране на комплекта оръжия</translation> </message> <message> <source>Delete weapon set</source> - <translation type="unfinished"></translation> + <translation>Изтриване на комплекта оръжия</translation> </message> </context> <context> @@ -794,7 +793,7 @@ </message> <message> <source>Admin features</source> - <translation type="unfinished"></translation> + <translation>Административни функционалности</translation> </message> <message> <source>Error</source> @@ -806,37 +805,39 @@ </message> <message> <source>Room Name:</source> - <translation type="unfinished"></translation> + <translation>Име на стаята:</translation> </message> <message> <source>This game is in lobby. You may join and start playing once the game starts.</source> - <translation type="unfinished"></translation> + <translation>Тази игра е в лоби. +След като започне, може да се присъедините и да играете.</translation> </message> <message> <source>This game is in progress. You may join and spectate now but you'll have to wait for the game to end to start playing.</source> - <translation type="unfinished"></translation> + <translation>Играта тече в момента. +Можете да се присъедините и да гледате, но ще трябва да изчакате да свърши, за да започнете да играете.</translation> </message> <message> <source>%1 is the host. He may adjust settings and start the game.</source> - <translation type="unfinished"></translation> + <translation>%1 е домакина. Той може да променя настройките и да започне играта.</translation> </message> <message> <source>Random Map</source> - <translation type="unfinished"></translation> + <translation>Случайна карта</translation> </message> <message> <source>Games may be played on precreated or randomized maps.</source> - <translation type="unfinished"></translation> + <translation>Игрите могат да се играят на предварително създадени или случайно генерирани карти.</translation> </message> <message> <source>The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.</source> - <translation type="unfinished"></translation> + <translation>Игровата схема определя общите настройки и предпочитания, като продължителност на рунда, внезапна смърт или вампиризъм.</translation> </message> <message> <source>The Weapon Scheme defines available weapons and their ammunition count.</source> - <translation type="unfinished"></translation> + <translation>Схемата на оръжията определя наличните оръжия и количеството боеприпаси за тях.</translation> </message> <message numerus="yes"> <source>There are %1 clients connected to this room.</source> @@ -849,7 +850,6 @@ <source>There are %1 teams participating in this room.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -862,36 +862,37 @@ </message> <message> <source>Random Maze</source> - <translation type="unfinished"></translation> + <translation>Случан лабиринт</translation> </message> <message> <source>State:</source> - <translation type="unfinished"></translation> + <translation>Състояние:</translation> </message> <message> <source>Rules:</source> - <translation type="unfinished"></translation> + <translation>Правила:</translation> </message> <message> <source>Weapons:</source> - <translation type="unfinished"></translation> + <translation>Оръжия:</translation> </message> <message> <source>Search:</source> - <translation type="unfinished"></translation> + <translation>Търсене:</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Изчистване</translation> </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Внимание</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> </context> <context> @@ -1021,11 +1022,11 @@ </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> @@ -1040,7 +1041,7 @@ </message> <message> <source>Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT</source> - <translation>Тренировка (упражнете уменията си в редица тренировъчни мисии). РАЗРАБОТВА СЕ</translation> + <translation>Тренировка (упражнете уменията си в редица тренировъчни мисии). В ПРОЦЕС НА РАЗРАБОТКА</translation> </message> <message> <source>Demos (Watch recorded demos)</source> @@ -1052,7 +1053,7 @@ </message> <message> <source>Campaign Mode (...). IN DEVELOPMENT</source> - <translation type="unfinished"></translation> + <translation>Режим кампания (...). В ПРОЦЕС НА РАЗРАБОТКА</translation> </message> </context> <context> @@ -1063,7 +1064,7 @@ </message> <message> <source>Ban</source> - <translation type="unfinished"></translation> + <translation>Забраняване</translation> </message> <message> <source>Start</source> @@ -1083,30 +1084,30 @@ </message> <message> <source>Follow</source> - <translation type="unfinished"></translation> + <translation>Следване</translation> </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> </context> <context> <name>QCheckBox</name> <message> <source>Check for updates at startup</source> - <translation type="unfinished"></translation> + <translation>Проверяване за обновления при стартиране</translation> </message> <message> <source>Enable sound</source> @@ -1130,7 +1131,7 @@ </message> <message> <source>Frontend fullscreen</source> - <translation>Преден пълен екран</translation> + <translation>Пълен екран</translation> </message> <message> <source>Append date and time to record file name</source> @@ -1138,19 +1139,19 @@ </message> <message> <source>Show ammo menu tooltips</source> - <translation type="unfinished"></translation> + <translation>Показване на подсказки за боеприпасите</translation> </message> <message> <source>Enable frontend sounds</source> - <translation type="unfinished"></translation> + <translation>Включване на звуци</translation> </message> <message> <source>Enable frontend music</source> - <translation type="unfinished"></translation> + <translation>Включване на музика</translation> </message> <message> <source>Frontend effects</source> - <translation type="unfinished"></translation> + <translation>Ефекти</translation> </message> </context> <context> @@ -1169,31 +1170,31 @@ </message> <message> <source>(System default)</source> - <translation type="unfinished"></translation> + <translation>(Стандартно за системата)</translation> </message> <message> <source>generated maze...</source> - <translation type="unfinished"></translation> + <translation>генериран лабиринт...</translation> </message> <message> <source>Mission</source> - <translation type="unfinished"></translation> + <translation>Мисия</translation> </message> <message> <source>Community</source> - <translation type="unfinished"></translation> + <translation>Общност</translation> </message> <message> <source>Any</source> - <translation type="unfinished"></translation> + <translation>Без значение</translation> </message> <message> <source>In lobby</source> - <translation type="unfinished"></translation> + <translation>В лоби</translation> </message> <message> <source>In progress</source> - <translation type="unfinished"></translation> + <translation>В прогрес</translation> </message> <message> <source>Default</source> @@ -1201,11 +1202,11 @@ </message> <message> <source>hand drawn map...</source> - <translation type="unfinished"></translation> + <translation>Ръчно нарисувана карта...</translation> </message> <message> <source>Disabled</source> - <translation type="unfinished"></translation> + <translation>Изключено</translation> </message> <message> <source>Red/Cyan</source> @@ -1248,11 +1249,11 @@ <name>QGroupBox</name> <message> <source>Game Modifiers</source> - <translation type="unfinished"></translation> + <translation>Модификатори на играта</translation> </message> <message> <source>Basic Settings</source> - <translation type="unfinished"></translation> + <translation>Основни настройки</translation> </message> <message> <source>Team Members</source> @@ -1288,54 +1289,54 @@ </message> <message> <source>Team Settings</source> - <translation type="unfinished"></translation> + <translation>Настройки на отборите</translation> </message> <message> <source>Misc</source> - <translation type="unfinished"></translation> + <translation>Разни</translation> </message> <message> <source>Schemes and Weapons</source> - <translation type="unfinished"></translation> + <translation>Схеми и оръжия</translation> </message> </context> <context> <name>QLabel</name> <message> <source>Game scheme</source> - <translation type="unfinished">Игрови настройки</translation> + <translation>Игрови схеми</translation> </message> <message> <source>Damage Modifier</source> - <translation type="unfinished"></translation> + <translation>Модификатор на щетите</translation> </message> <message> <source>Turn Time</source> - <translation type="unfinished"></translation> + <translation>Време за ход</translation> </message> <message> <source>Initial Health</source> - <translation type="unfinished"></translation> + <translation>Начално здраве</translation> </message> <message> <source>Sudden Death Timeout</source> - <translation type="unfinished"></translation> + <translation>Изтичане на времето на внезапната смърт</translation> </message> <message> <source>Crate Drops</source> - <translation type="unfinished"></translation> + <translation>Пускане на кашони</translation> </message> <message> <source>Mines Time</source> - <translation type="unfinished"></translation> + <translation>Време на мините</translation> </message> <message> <source>Mines</source> - <translation type="unfinished"></translation> + <translation>Мини</translation> </message> <message> <source>Scheme Name:</source> - <translation type="unfinished"></translation> + <translation>Име на схемата:</translation> </message> <message> <source>Net nick</source> @@ -1407,39 +1408,39 @@ </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>Глас</translation> </message> <message> <source>Locale</source> - <translation type="unfinished"></translation> + <translation>Локал</translation> </message> <message> <source>Restart game to apply</source> - <translation type="unfinished"></translation> + <translation>Рестартирайте играта за да влезе в сила</translation> </message> <message> <source>Explosives</source> - <translation type="unfinished"></translation> + <translation>Експлозиви</translation> </message> <message> <source>Tip: </source> - <translation type="unfinished"></translation> + <translation>Съвет:</translation> </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> @@ -1447,35 +1448,35 @@ </message> <message> <source>Quality</source> - <translation type="unfinished"></translation> + <translation>Качество</translation> </message> <message> <source>% Health Crates</source> - <translation type="unfinished"></translation> + <translation>% кашони със здраве</translation> </message> <message> <source>Health in Crates</source> - <translation type="unfinished"></translation> + <translation>Здраве в кашоните</translation> </message> <message> <source>Sudden Death Water Rise</source> - <translation type="unfinished"></translation> + <translation>Покачване на водата при Внезапна смърт</translation> </message> <message> <source>Sudden Death Health Decrease</source> - <translation type="unfinished"></translation> + <translation>Намаляване на здравето при Внезапна смърт</translation> </message> <message> <source>% Rope Length</source> - <translation type="unfinished"></translation> + <translation>% Дължина на въжето</translation> </message> <message> <source>Gameplay</source> - <translation type="unfinished"></translation> + <translation>Геймплей</translation> </message> <message> <source>Stereo rendering</source> - <translation type="unfinished"></translation> + <translation>Стерео режим</translation> </message> </context> <context> @@ -1532,39 +1533,39 @@ </message> <message> <source>Can not overwrite default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Не моге да се презапише стандартния комплект с оръжия '%1'!</translation> </message> <message> <source>All file associations have been set.</source> - <translation type="unfinished"></translation> + <translation>Всички файлови асоциации са зададени.</translation> </message> <message> <source>File association failed.</source> - <translation type="unfinished"></translation> + <translation>Файловата асоциация се провали.</translation> </message> <message> <source>Teams</source> - <translation type="unfinished">Отбори</translation> + <translation>Отбори</translation> </message> <message> <source>Really delete this team?</source> - <translation type="unfinished"></translation> + <translation>Наистина ли да бъде изтрит този отбор?</translation> </message> <message> <source>Schemes</source> - <translation type="unfinished"></translation> + <translation>Схеми</translation> </message> <message> <source>Can not delete default scheme '%1'!</source> - <translation type="unfinished"></translation> + <translation>Стандартната схема '%1' не може да бъде изтрита!</translation> </message> <message> <source>Really delete this game scheme?</source> - <translation type="unfinished"></translation> + <translation>Наистина ли да бъде изтрите тази игрова схема?</translation> </message> <message> <source>Can not delete default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Не моге да се изтрие стандартния комплект с оръжия '%1'!</translation> </message> </context> <context> @@ -1583,11 +1584,11 @@ </message> <message> <source>Nickname</source> - <translation type="unfinished"></translation> + <translation>Прякор</translation> </message> <message> <source>Please enter your nickname</source> - <translation type="unfinished"></translation> + <translation>Моля въведете прякорът си</translation> </message> </context> <context> @@ -1654,73 +1655,73 @@ </message> <message> <source>Random Team</source> - <translation type="unfinished"></translation> + <translation>Случаен отбор</translation> </message> <message> <source>Associate file extensions</source> - <translation type="unfinished"></translation> + <translation>Асоцииране на файлови разширения</translation> </message> <message> <source>more</source> - <translation type="unfinished"></translation> + <translation>повече</translation> </message> </context> <context> <name>QTableWidget</name> <message> <source>Room Name</source> - <translation type="unfinished"></translation> + <translation>Име на стаята</translation> </message> <message> <source>C</source> - <translation type="unfinished"></translation> + <translation>C</translation> </message> <message> <source>T</source> - <translation type="unfinished"></translation> + <translation>T</translation> </message> <message> <source>Owner</source> - <translation type="unfinished"></translation> + <translation>Притежател</translation> </message> <message> <source>Map</source> - <translation type="unfinished">Карта</translation> + <translation>Карта</translation> </message> <message> <source>Rules</source> - <translation type="unfinished"></translation> + <translation>Правила</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Оръжия</translation> + <translation>Оръжия</translation> </message> </context> <context> <name>SelWeaponWidget</name> <message> <source>Weapon set</source> - <translation type="unfinished"></translation> + <translation>Комплект оръжия</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> - <translation type="unfinished">Нов отбор</translation> + <translation>нов</translation> </message> <message> <source>copy of</source> - <translation type="unfinished"></translation> + <translation>копие на</translation> </message> </context> <context> @@ -1742,95 +1743,95 @@ <name>ToggleButtonWidget</name> <message> <source>Fort Mode</source> - <translation type="unfinished"></translation> + <translation>Режим на фортове</translation> </message> <message> <source>Divide Teams</source> - <translation type="unfinished"></translation> + <translation>Разделяне на отборите</translation> </message> <message> <source>Solid Land</source> - <translation type="unfinished"></translation> + <translation>Твърда земя</translation> </message> <message> <source>Add Border</source> - <translation type="unfinished">Добави гранична ивица</translation> + <translation>Добави гранична ивица</translation> </message> <message> <source>Low Gravity</source> - <translation type="unfinished"></translation> + <translation>Ниска гравитация</translation> </message> <message> <source>Laser Sight</source> - <translation type="unfinished"></translation> + <translation>Лазерен мерник</translation> </message> <message> <source>Invulnerable</source> - <translation type="unfinished"></translation> + <translation>Неуязвимост</translation> </message> <message> <source>Vampirism</source> - <translation type="unfinished"></translation> + <translation>Вампиризъм</translation> </message> <message> <source>Karma</source> - <translation type="unfinished"></translation> + <translation>Карма</translation> </message> <message> <source>Artillery</source> - <translation type="unfinished"></translation> + <translation>Артилерия</translation> </message> <message> <source>Random Order</source> - <translation type="unfinished"></translation> + <translation>Произволен ред</translation> </message> <message> <source>King</source> - <translation type="unfinished"></translation> + <translation>Крал</translation> </message> <message> <source>Place Hedgehogs</source> - <translation type="unfinished"></translation> + <translation>Поставяне на таралежи</translation> </message> <message> <source>Clan Shares Ammo</source> - <translation type="unfinished"></translation> + <translation>Кланът споделя оръжията</translation> </message> <message> <source>Disable Girders</source> - <translation type="unfinished"></translation> + <translation>Изкбючване на греди</translation> </message> <message> <source>Disable Land Objects</source> - <translation type="unfinished"></translation> + <translation>Изключване на обекти по земята</translation> </message> <message> <source>AI Survival Mode</source> - <translation type="unfinished"></translation> + <translation>Режим ИИ оцеляване</translation> </message> <message> <source>Reset Health</source> - <translation type="unfinished"></translation> + <translation>Изчистване на здрането</translation> </message> <message> <source>Unlimited Attacks</source> - <translation type="unfinished"></translation> + <translation>Неограничени атаки</translation> </message> <message> <source>Reset Weapons</source> - <translation type="unfinished"></translation> + <translation>Изчистване на оръжията</translation> </message> <message> <source>Per Hedgehog Ammo</source> - <translation type="unfinished"></translation> + <translation>Боеприпаси за всеки таралеж поотделно</translation> </message> <message> <source>Disable Wind</source> - <translation type="unfinished"></translation> + <translation>Изключване на вятъра</translation> </message> <message> <source>More Wind</source> - <translation type="unfinished"></translation> + <translation>Още вятър</translation> </message> </context> <context> @@ -1975,120 +1976,120 @@ </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">Слот 10</translation> + <translation>Слот 10</translation> </message> </context> <context> <name>binds (categories)</name> <message> <source>Basic controls</source> - <translation type="unfinished"></translation> + <translation>Основни контроли</translation> </message> <message> <source>Weapon controls</source> - <translation type="unfinished"></translation> + <translation>Контроли за оръжията</translation> </message> <message> <source>Camera and cursor controls</source> - <translation type="unfinished"></translation> + <translation>Контроли за камерата и показалеца</translation> </message> <message> <source>Other</source> - <translation type="unfinished">Друго</translation> + <translation>Друго</translation> </message> </context> <context> <name>binds (descriptions)</name> <message> <source>Move your hogs and aim:</source> - <translation type="unfinished"></translation> + <translation>Преместете таралежите си и се прицелете:</translation> </message> <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="unfinished"></translation> + <translation>Преместете камерата към активния таралеж:</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> </context> <context> <name>binds (keys)</name> <message> <source>Axis</source> - <translation type="unfinished"></translation> + <translation>Ос</translation> </message> <message> <source>(Up)</source> @@ -2112,11 +2113,11 @@ </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>Delete</source> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/hedgewars_cs.ts --- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Thu Aug 04 17:44:55 2011 +0200 @@ -5,25 +5,25 @@ <name>AmmoSchemeModel</name> <message> <source>new</source> - <translation type="unfinished">nový</translation> + <translation>nový</translation> </message> <message> <source>copy of</source> - <translation type="unfinished"></translation> + <translation>kopie</translation> </message> </context> <context> <name>FreqSpinBox</name> <message> <source>Never</source> - <translation type="unfinished"></translation> + <translation>Nikdy</translation> </message> <message numerus="yes"> <source>Every %1 turn</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Každý %1 tah</numerusform> + <numerusform>Každé %1 tahy</numerusform> + <numerusform>Každých %1 tahů</numerusform> </translation> </message> </context> @@ -31,7 +31,7 @@ <name>GameCFGWidget</name> <message> <source>Edit weapons</source> - <translation type="unfinished"></translation> + <translation>Editovat zbraně</translation> </message> <message> <source>Error</source> @@ -43,30 +43,30 @@ </message> <message> <source>Edit schemes</source> - <translation type="unfinished"></translation> + <translation>Editovat schémata</translation> </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> - <translation type="unfinished"></translation> + <translation>Pokud je tato volba aktivována, výběr herního schématu vybere automaticky i zbraňové schéma</translation> </message> </context> <context> <name>HWChatWidget</name> <message> <source>%1 *** %2 has been removed from your ignore list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 byl odstraněn ze seznamu ignorovaných</translation> </message> <message> <source>%1 *** %2 has been added to your ignore list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 byl přidán na seznam ignorovaných</translation> </message> <message> <source>%1 *** %2 has been removed from your friends list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 byl odstraněn ze seznamu přátel</translation> </message> <message> <source>%1 *** %2 has been added to your friends list</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 byl přidán na seznam přátel</translation> </message> </context> <context> @@ -97,17 +97,17 @@ </message> <message> <source>DefaultTeam</source> - <translation type="unfinished"></translation> + <translation>VýchozíTeam</translation> </message> <message> <source>Hedgewars Demo File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars Demo Soubor</translation> </message> <message> <source>Hedgewars Save File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars Save Soubor</translation> </message> </context> <context> @@ -133,67 +133,67 @@ </message> <message> <source>Filter</source> - <translation type="unfinished"></translation> + <translation>Filtr</translation> </message> <message> <source>All</source> - <translation type="unfinished"></translation> + <translation>Vše</translation> </message> <message> <source>Small</source> - <translation type="unfinished"></translation> + <translation>Malá</translation> </message> <message> <source>Medium</source> - <translation type="unfinished"></translation> + <translation>Střední</translation> </message> <message> <source>Large</source> - <translation type="unfinished"></translation> + <translation>Velká</translation> </message> <message> <source>Cavern</source> - <translation type="unfinished"></translation> + <translation>Jeskyně</translation> </message> <message> <source>Wacky</source> - <translation type="unfinished"></translation> + <translation>Šílená</translation> </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <source>Small tunnels</source> - <translation type="unfinished"></translation> + <translation>Malé tunely</translation> </message> <message> <source>Medium tunnels</source> - <translation type="unfinished"></translation> + <translation>Střední tunely</translation> </message> <message> <source>Large tunnels</source> - <translation type="unfinished"></translation> + <translation>Velké tunely</translation> </message> <message> <source>Small floating islands</source> - <translation type="unfinished"></translation> + <translation>Malé plovoucí ostrovy</translation> </message> <message> <source>Medium floating islands</source> - <translation type="unfinished"></translation> + <translation>Střední plovoucí ostrovy</translation> </message> <message> <source>Large floating islands</source> - <translation type="unfinished"></translation> + <translation>Velké plovoucí ostrovy</translation> </message> <message> <source>Seed</source> - <translation type="unfinished"></translation> + <translation>Semínko</translation> </message> <message> <source>Set</source> - <translation type="unfinished"></translation> + <translation>Sada</translation> </message> </context> <context> @@ -219,11 +219,11 @@ </message> <message> <source>Connection refused</source> - <translation>Spojení odmítnuto.</translation> + <translation>Spojení odmítnuto</translation> </message> <message> <source>Room destroyed</source> - <translation>Místnost zničena.</translation> + <translation>Místnost zničena</translation> </message> <message> <source>Quit reason: </source> @@ -231,34 +231,37 @@ </message> <message> <source>You got kicked</source> - <translation type="unfinished"></translation> + <translation>Byl jsi vykopnut</translation> </message> <message> <source>Password</source> - <translation type="unfinished"></translation> + <translation>Heslo</translation> </message> <message> <source>%1 *** %2 has joined the room</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 se připojil do místnosti</translation> </message> <message> <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 se připojil</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 odešel (%3)</translation> </message> <message> <source>%1 *** %2 has left</source> - <translation type="unfinished"></translation> + <translation>%1 *** %2 odešel</translation> </message> <message> <source>Your nickname %1 is registered on Hedgewars.org Please provide your password below or pick another nickname in game config:</source> - <translation type="unfinished"></translation> + <translation>Tvoje přezdívka %1 je +registrovaná na Hedgewars.org +Prosím, zadej své heslo +nebo si v konfiguraci vyber jinou přezdívku:</translation> </message> </context> <context> @@ -272,69 +275,69 @@ <name>PageAdmin</name> <message> <source>Clear Accounts Cache</source> - <translation type="unfinished"></translation> + <translation>Vyčistit mezipaměť účtů</translation> </message> <message> <source>Fetch data</source> - <translation type="unfinished"></translation> + <translation>Načíst data</translation> </message> <message> <source>Server message for latest version:</source> - <translation type="unfinished"></translation> + <translation>Zpráva serveru pro nejnovějši verzi:</translation> </message> <message> <source>Server message for previous versions:</source> - <translation type="unfinished"></translation> + <translation>Zpráva serveru pro předchozí verzi:</translation> </message> <message> <source>Latest version protocol number:</source> - <translation type="unfinished"></translation> + <translation>Číslo protokolu nejnovější verze:</translation> </message> <message> <source>MOTD preview:</source> - <translation type="unfinished"></translation> + <translation>Motto dne:</translation> </message> <message> <source>Set data</source> - <translation type="unfinished"></translation> + <translation>Nastavit data</translation> </message> </context> <context> <name>PageConnecting</name> <message> <source>Connecting...</source> - <translation type="unfinished"></translation> + <translation>Připojuji...</translation> </message> </context> <context> <name>PageDrawMap</name> <message> <source>Undo</source> - <translation type="unfinished"></translation> + <translation>Zpět</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Vymazat</translation> </message> <message> <source>Load</source> - <translation type="unfinished">Nahrát</translation> + <translation>Nahrát</translation> </message> <message> <source>Save</source> - <translation type="unfinished"></translation> + <translation>Uložit</translation> </message> <message> <source>Load drawn map</source> - <translation type="unfinished"></translation> + <translation>Nahrát nakreslenou mapu</translation> </message> <message> <source>Drawn Maps (*.hwmap);;All files (*.*)</source> - <translation type="unfinished"></translation> + <translation>Nakreslené mapy (*.hwmap);;Všechny soubory (*.*)</translation> </message> <message> <source>Save drawn map</source> - <translation type="unfinished"></translation> + <translation>Uložit nakreslenou mapu</translation> </message> </context> <context> @@ -356,66 +359,66 @@ </message> <message> <source>Details</source> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> <message> <source>Health graph</source> - <translation type="unfinished"></translation> + <translation>Graf zdraví</translation> </message> <message> <source>Ranking</source> - <translation type="unfinished"></translation> + <translation>Hodnocení</translation> </message> <message> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> - <translation type="unfinished"></translation> + <translation>Cenu za nejlepší zásah vyhrál <b>%1</b> s <b>%2</b> body.</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></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Nejlepší zabiják je <b>%1</b> s <b>%2</b> úlovkem za tah.</numerusform> + <numerusform>Nejlepší zabiják je <b>%1</b> se <b>%2</b> úlovky za tah.</numerusform> + <numerusform>Nejlepší zabiják je <b>%1</b> s <b>%2</b> úlovky za tah.</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></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Celkem <b>%1</b> ježek byl zabit toto kolo.</numerusform> + <numerusform>Celkem <b>%1</b> ježci byli zabiti toto kolo.</numerusform> + <numerusform>Celkem <b>%1</b> ježků bylo zabito toto kolo.</numerusform> </translation> </message> <message numerus="yes"> <source>(%1 kill)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>(%1 úlovek)</numerusform> + <numerusform>(%1 úlovky)</numerusform> + <numerusform>(%1 úlovků)</numerusform> </translation> </message> <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></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> si myslel, že je dobré střílet do vlastních ježků s <b>%2</b> bodem.</numerusform> + <numerusform><b>%1</b> si myslel, že je dobré střílet do vlastních ježků se <b>%2</b> body.</numerusform> + <numerusform><b>%1</b> si myslel, že je dobré střílet do vlastních ježků s <b>%2</b> body.</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></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> zabil <b>%2</b> vlastního ježka.</numerusform> + <numerusform><b>%1</b> zabil <b>%2</b> vlastní ježky.</numerusform> + <numerusform><b>%1</b> zabil <b>%2</b> vlastních ježků.</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></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> byl vystrašený a přeskočil tah <b>%2</b> krát.</numerusform> + <numerusform><b>%1</b> byl vystrašený a přeskočil tah <b>%2</b> krát.</numerusform> + <numerusform><b>%1</b> byl vystrašený a přeskočil tah <b>%2</b> krát.</numerusform> </translation> </message> </context> @@ -432,247 +435,247 @@ <message> <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Jednoduše zvol stejnou barvu jako spoluhráč, abys hrál ve stejném týmu. Každý z vás bude mít kontrolu nad svými vlastními ježky, ale vyhraje nebo prohraje společně.</translation> </message> <message> <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Některé zbraně mohou způsobovat jen malé poškození, ale mohou být devastující v pravé chvíli. Zkus použít pistoli Desert Eagle ke sražení několika nepřátelských ježků do vody.</translation> </message> <message> <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Pokud si nejsi jistý, co dělat a nechceš plýtvat municí, přeskoč tah. Ale nenech uběhnout moc času, protože pak přijde Náhlá smrt!</translation> </message> <message> <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Pokud chceš zabránit ostatním, aby používali tvoji oblíbenou přezdívku na oficiálním serveru, zaregistruj se na http://www.hedgewars.org/.</translation> </message> <message> <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Jsi znuděn standardní hrou? Vyzkoušej některou misi - nabídnou jiný herní zážitek v závislosti na tom, kterou si vybereš.</translation> </message> <message> <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Standardně hra vždycky nahrává poslední odehraný zápas jako ukázku. Vyber si 'Místní hru' a zvol tlačítko 'Ukázky' v pravém spodním rohu k jejich přehrávání a správě.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars je Open Source a Freeware, který jsme vytvořili v našem volném čase. Pokud máš problémy, zeptej se na našem fóru, ale neočekávej prosím nonstop podporu!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars je Open Source a Freeware, který jsme vytvořili v našem volném čase. Pokud se ti líbí, pomož nám malým příspěvkem, nebo se podílej na práci!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars je Open Source a Freeware, který jsme vytvořili v našem volném čase. Sdílej ho se svoji rodinou a přáteli dle libosti!</translation> </message> <message> <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Čas od času se konají oficiální turnaje. Nadcházející události budou publikovány na http://www.hedgewars.org/ s několika denním předstihem.</translation> </message> <message> <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars je k dispozici v mnoha jazycích. Pokud překlad do tvého jazyka vypadá zastaralý nebo chybí, neváhej nás kontaktovat!</translation> </message> <message> <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars může být spuštěno na mnoha různých operačních systémech včetně Microsoft Windows, Mac OS X a Linuxu.</translation> </message> <message> <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vždycky si pamatuj, že můžeš vytvořit vlastní hru na místní síti i internetu. Nejsi odkázán jen na možnost 'Prostá hra'.</translation> </message> <message> <source>While playing you should give yourself a short break at least once an hour.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Během hraní bys měl dělat krátké přestávky alespoň jednou za hodinu.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Pokud tvoje grafická karta nepodporuje hardwarovou akceleraci OpenGL, zkus zapnout nízkou kvalitu pro zlepšení výkonu.</translation> </message> <message> <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Jsme otevřeni návrhům a konstruktivní kritice. Pokud se ti něco nelíbí, nebo máš skvělý nápad, dej nám vědět!</translation> </message> <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Obzvláště při hře online buď slušný a vždy pamatuj na to, že s tebou nebo proti tobě může hrát někdo z nějaké menšiny!</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Speciální herní módy jako třeba 'Vampyrismus' nebo 'Karma' ti dovolují vymýšlet úplně jiné herní taktiky. Vyzkoušej je v nějaké hře!</translation> </message> <message> <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Nikdy bys neměl instalovat Hedgewars na počítači, který ti nepatří (škola, univerzita, práce a jiné). Prosím, zeptej se nejprve zodpovědné osoby!</translation> </message> <message> <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars mohou být perfektní pro krátkou hru během pauzy. Jen se ujisti, že jsi nepřidal příliš mnoho ježků nebo nezvolil velkou mapu. Zmenšit čas nebo zdraví také urychlí hru.</translation> </message> <message> <source>No hedgehogs were harmed in making this game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Žádný ježek nebyl zraněn během vytváření této hry.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars je Open Source a Freeware, který jsme vytvořili v našem volném čase. Pokud ti tuto hru někdo prodal, měl bys chtít vrátit peníze!</translation> </message> <message> <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Připojenim jednoho nebo více gamepadů před začátkem hry ti umožní nastavit je jako ovladač pro tvé týmy.</translation> </message> <message> <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vytvoř si účet na %1, abys zabránil ostatním používat tvoji oblíbenou přezdívku na oficiálním serveru.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Pokud tvoje grafická karta nepodporuje hardwarovou akceleraci OpenGL, zkus aktualizovat ovladače.</translation> </message> <message> <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">K dispozici jsou tři různé druhy skoků. Zmáčkni [Vysoký skok] dvakrát, abys udělal skok do větší výšky a dozadu.</translation> </message> <message> <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Bojíš se pádu z útesu? Stiskni [přesnost], aby ses otočil [vlevo], či [vpravo] bez jakéhokoliv pohybu.</translation> </message> <message> <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Některé zbraně vyžadují speciální strategii, nebo jen spoustu cvičení. Nezavrhuj hned některou zbraň, pokud jednou mineš cíl.</translation> </message> <message> <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Většina zbraní nefunguje, jakmile se ponoří do vody. Naváděná včela nebo dort jsou vyjímka z tohoto pravidla.</translation> </message> <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Olomoucké tvarůžky vybuchují jen málo, ale vítr ovlivňuje oblak smradu, který může nakazit mnoho ježků najednou.</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Útok pianem je nejničivější letecký útok. Na druhé straně ale ztratíš ježka, který tento útok vykoná.</translation> </message> <message> <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Přisavné miny jsou perfektní nástroj na vytváření malých řetězových reakcí, které mohou nepřátelské ježky dostat do divokých situací ... nebo vody.</translation> </message> <message> <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Kladivo je nejefektivnější při použitǐ na mostech a traverzách. Zasažený ježek prostě prorazí skrz zem.</translation> </message> <message> <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Pokud jsi zaseklý za nepřátelským ježkem, použij kladivo, aby ses osvobodil a nemusel riskovat zranění z exploze.</translation> </message> <message> <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Maximální vzdálenost, do které dort dojde, je ovlivněna terénem, kterým musí jít. Použij [útok] k dřívější explozi.</translation> </message> <message> <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Plamenomet je zbraň, ale dá se použít i pro kopání tunelů.</translation> </message> <message> <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Chceš vědět, kdo stojí za touto hrou? Klikni na logo Hedgewars v hlavním menu a podívej se.</translation> </message> <message> <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Líbí se ti Hedgewars? Staň se fanouškem na %1 nebo nás sleduj na %2!</translation> </message> <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Neboj se kreslit vlastní hroby, čepice, vlajky nebo mapy a témata! Ale pamatuj, že je musíš někde sdílet, abys je mohl používat online.</translation> </message> <message> <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Opravdu chceš nosit specifickou čepici? Daruj nám něco a dostaneš exklusivní čepici dle svého výběru!</translation> </message> <message> <source>Keep your video card drivers up to date to avoid issues playing the game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Udržuj ovladače grafické karty aktuální, aby ses vyhnul problémům při hře.</translation> </message> <message> <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Své nastavení Hedgewars najdeš v "Dokumenty\Hedgewars". Vytvoř si zálohu nebo si je přenášej s sebou, ale needituj je ručně.</translation> </message> <message> <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Můžeš si asociovat Hedgewars soubory (uložené hry a nahrávky) tak, abys je mohl ihned spouštět z internetového prohlížeče nebo prúzkumníka souborů.</translation> </message> <message> <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Chceš ušetřit lana? Uvolni ho ve vzduchu a vystřel znovu. Dokud se nedotkneš země, využíváš ho bez plýtvání munice!</translation> </message> <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Konfigurace Hedgewars je k nalezení ve tvém domovském adresáři pod "Library/Application Support/Hedgewars". Vytvoř si zálohu, přenášej ho s sebou, ale neměň ho ručně.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Konfigurace Hedgewars je k nalezení ve tvém domovském adresáři pod ".hedgewars". Vytvoř si zálohu, přenášej ho s sebou, ale neměň ho ručně.</translation> </message> <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Windows verze Hedgewars podporuje Xfire. Přidej si Hedgewars do jeho seznamu her, abys viděl přátele, kteří ho hrají.</translation> </message> <message> <source>The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Naváděná včela může být obtížná na použití. Její poloměr otáčení je závislý na její rychlosti, zkus ji nepoužívat při plné síle.</translation> </message> <message> <source>Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Použij Molotov nebo plamenomet, abys dočasně zamezil ježkům v přechodu terénu jako jsou tunely nebo plošiny.</translation> </message> </context> <context> @@ -704,11 +707,11 @@ <name>PageNetType</name> <message> <source>LAN game</source> - <translation type="unfinished"></translation> + <translation>Hra po místní síti</translation> </message> <message> <source>Official server</source> - <translation type="unfinished"></translation> + <translation>Oficiální server</translation> </message> </context> <context> @@ -723,35 +726,35 @@ </message> <message> <source>Delete team</source> - <translation type="unfinished"></translation> + <translation>Smazat tým</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>Nemůžeš upravovat týmy z výběru týmu. Vrať se do hlavní nabídky, kde můžeš přidávat, upravovat a mazat týmy.</translation> </message> <message> <source>New scheme</source> - <translation type="unfinished"></translation> + <translation>Nové schéma</translation> </message> <message> <source>Edit scheme</source> - <translation type="unfinished"></translation> + <translation>Upravit schéma</translation> </message> <message> <source>Delete scheme</source> - <translation type="unfinished"></translation> + <translation>Smazat schéma</translation> </message> <message> <source>New weapon set</source> - <translation type="unfinished"></translation> + <translation>Nový sada zbraní</translation> </message> <message> <source>Edit weapon set</source> - <translation type="unfinished"></translation> + <translation>Upravit sadu zbraní</translation> </message> <message> <source>Delete weapon set</source> - <translation type="unfinished"></translation> + <translation>Smazat sadu zbraní</translation> </message> </context> <context> @@ -793,7 +796,7 @@ </message> <message> <source>Join</source> - <translation>Připojit</translation> + <translation>Připojit se</translation> </message> <message> <source>Refresh</source> @@ -809,56 +812,58 @@ </message> <message> <source>Admin features</source> - <translation type="unfinished"></translation> + <translation>Možnosti správce</translation> </message> <message> <source>Room Name:</source> - <translation type="unfinished"></translation> + <translation>Jméno místnosti:</translation> </message> <message> <source>This game is in lobby. You may join and start playing once the game starts.</source> - <translation type="unfinished"></translation> + <translation>Tato hra je v čekárně. +Můžeš se přidat a začít hrát, jakmile hra začne.</translation> </message> <message> <source>This game is in progress. You may join and spectate now but you'll have to wait for the game to end to start playing.</source> - <translation type="unfinished"></translation> + <translation>Tato hra právě probíhá. +Můžeš se přidat a pozorovat, ale musíš počkat, než hra skončí, jestli chceš začít hrát.</translation> </message> <message> <source>%1 is the host. He may adjust settings and start the game.</source> - <translation type="unfinished"></translation> + <translation>%1 je hostitel. On může nastavovat a odstartovat hru.</translation> </message> <message> <source>Random Map</source> - <translation type="unfinished"></translation> + <translation>Náhodná mapa</translation> </message> <message> <source>Games may be played on precreated or randomized maps.</source> - <translation type="unfinished"></translation> + <translation>Hra může být hrána na předem vytvořené nebo na náhodné mapě.</translation> </message> <message> <source>The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.</source> - <translation type="unfinished"></translation> + <translation>Herní schéma definuje obecné možnosti a nastavení jako třeba počet kol, náhlou smrt nebo vampyrismus.</translation> </message> <message> <source>The Weapon Scheme defines available weapons and their ammunition count.</source> - <translation type="unfinished"></translation> + <translation>Zbraňové schéma definuje zbraně, které budou k dispozici a jejich munici.</translation> </message> <message numerus="yes"> <source>There are %1 clients connected to this room.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>V místnosti je %1 připojený klient.</numerusform> + <numerusform>V místnosti jsou %1 připojení klienti.</numerusform> + <numerusform>V místnosti je %1 připojených klientů.</numerusform> </translation> </message> <message numerus="yes"> <source>There are %1 teams participating in this room.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>V místnosti je %1 účastnící se tým.</numerusform> + <numerusform>V místnosti jsou %1 účastnící se týmy.</numerusform> + <numerusform>V místnosti je %1 účastnících se týmů.</numerusform> </translation> </message> <message> @@ -871,151 +876,152 @@ </message> <message> <source>Random Maze</source> - <translation type="unfinished"></translation> + <translation>Náhodný labyrint</translation> </message> <message> <source>State:</source> - <translation type="unfinished"></translation> + <translation>Stav:</translation> </message> <message> <source>Rules:</source> - <translation type="unfinished"></translation> + <translation>Pravidla:</translation> </message> <message> <source>Weapons:</source> - <translation type="unfinished"></translation> + <translation>Zbraně:</translation> </message> <message> <source>Search:</source> - <translation type="unfinished"></translation> + <translation>Hledej:</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Vyčisti</translation> </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Pozor</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>Hra, do které se snažíš připojit, začala. +Ještě stále se chceš připojit do místosti?</translation> </message> </context> <context> <name>PageScheme</name> <message> <source>New</source> - <translation type="unfinished"></translation> + <translation>Nové</translation> </message> <message> <source>Delete</source> - <translation type="unfinished">Smazat</translation> + <translation>Smazat</translation> </message> <message> <source>Defend your fort and destroy the opponents, two team colours max!</source> - <translation type="unfinished"></translation> + <translation>Braň svou pevnoust a znič protivníky, dvě barvy týmů maximálně!</translation> </message> <message> <source>Teams will start on opposite sides of the terrain, two team colours max!</source> - <translation type="unfinished"></translation> + <translation>Týmy startují na opačných stranách terénu, dvě barvy týmů maximálně!</translation> </message> <message> <source>Land can not be destroyed!</source> - <translation type="unfinished"></translation> + <translation>Krajina nejde zničit!</translation> </message> <message> <source>Add an indestructable border around the terrain</source> - <translation type="unfinished"></translation> + <translation>Přidá nezničitelnou hranici okolo terénu</translation> </message> <message> <source>Lower gravity</source> - <translation type="unfinished"></translation> + <translation>Nižší gravitace</translation> </message> <message> <source>Assisted aiming with laser sight</source> - <translation type="unfinished"></translation> + <translation>Podpora míření pomocí laserového mířidla</translation> </message> <message> <source>All hogs have a personal forcefield</source> - <translation type="unfinished"></translation> + <translation>Všichni ježci mají osobní silové pole</translation> </message> <message> <source>Gain 80% of the damage you do back in health</source> - <translation type="unfinished"></translation> + <translation>Získej zpět 80% z poškození, které učiníš</translation> </message> <message> <source>Share your opponents pain, share their damage</source> - <translation type="unfinished"></translation> + <translation>Sdílej protivníkovu bolest, sdílej jeho poškození</translation> </message> <message> <source>Your hogs are unable to move, put your artillery skills to the test</source> - <translation type="unfinished"></translation> + <translation>Tvoji ježci se nemohou hýbat, prozkoušej své dělostřelecké dovednosti</translation> </message> <message> <source>Random</source> - <translation type="unfinished"></translation> + <translation>Náhodné</translation> </message> <message> <source>Seconds</source> - <translation type="unfinished"></translation> + <translation>Vteřiny</translation> </message> <message> <source>Order of play is random instead of in room order.</source> - <translation type="unfinished"></translation> + <translation>Pořadí hraní je náhodné, nikoliv podle pořadí v místnosti.</translation> </message> <message> <source>Play with a King. If he dies, your side dies.</source> - <translation type="unfinished"></translation> + <translation>Hraj s králem. Pokud zemře on, tvoje strana zemře.</translation> </message> <message> <source>Take turns placing your hedgehogs before the start of play.</source> - <translation type="unfinished"></translation> + <translation>Získej tah na úmistění ježků před začátkem hry.</translation> </message> <message> <source>Ammo is shared between all teams that share a colour.</source> - <translation type="unfinished"></translation> + <translation>Munice je sdílená mezi týmy se stejnou barvou.</translation> </message> <message> <source>Disable girders when generating random maps.</source> - <translation type="unfinished"></translation> + <translation>Vypni traverzy při generování náhodné mapy.</translation> </message> <message> <source>Disable land objects when generating random maps.</source> - <translation type="unfinished"></translation> + <translation>Vypni teréní objekty při generování náhodné mapy.</translation> </message> <message> <source>AI respawns on death.</source> - <translation type="unfinished"></translation> + <translation>Počítač se po smrti obnoví.</translation> </message> <message> <source>All (living) hedgehogs are fully restored at the end of turn</source> - <translation type="unfinished"></translation> + <translation>Všichni (žijící) ježci jsou plně uzdraveni na konci tahu</translation> </message> <message> <source>Attacking does not end your turn.</source> - <translation type="unfinished"></translation> + <translation>Útočení neukončí tah.</translation> </message> <message> <source>Weapons are reset to starting values each turn.</source> - <translation type="unfinished"></translation> + <translation>Zbraně jsou obnoveny na startovní hodnoty každý tah.</translation> </message> <message> <source>Each hedgehog has its own ammo. It does not share with the team.</source> - <translation type="unfinished"></translation> + <translation>Každý ježek má svou vlastní munici. Nesdílí ji s týmem.</translation> </message> <message> <source>You will not have to worry about wind anymore.</source> - <translation type="unfinished"></translation> + <translation>Nemusíš se už starat o vítr.</translation> </message> <message> <source>Wind will affect almost everything.</source> - <translation type="unfinished"></translation> + <translation>Vítr bude ovlivňovat téměř všechno.</translation> </message> <message> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopie</translation> </message> </context> <context> @@ -1030,26 +1036,26 @@ </message> <message> <source>New</source> - <translation type="unfinished"></translation> + <translation>Nová</translation> </message> <message> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopie</translation> </message> </context> <context> <name>PageSinglePlayer</name> <message> <source>Simple Game (a quick game against the computer, settings are chosen for you)</source> - <translation>Hra jednoho hráče (rychlá hra proti počítači, nastavení si volíte sami)</translation> + <translation>Prostá hra (rychlá hra proti počítači, nastavení je zvoleno)</translation> </message> <message> <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source> - <translation>Hra více hráčů (hrát na jednom počítači proti vašim přátelům nebo AI týmům)</translation> + <translation>Hra více hráčů (hrát na jednom počítači proti přátelům nebo počítači)</translation> </message> <message> <source>Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT</source> - <translation>Tréningový mód (Procvičte si vaše schopnosti v řadě tréningových misí). VE VÝVOJI</translation> + <translation>Výcvikový mód (Procvič si schopnosti v řadě tréningových misí). VE VÝVOJI</translation> </message> <message> <source>Demos (Watch recorded demos)</source> @@ -1061,7 +1067,7 @@ </message> <message> <source>Campaign Mode (...). IN DEVELOPMENT</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Mód tažení (...). VE VÝVOJI</translation> </message> </context> <context> @@ -1088,42 +1094,42 @@ </message> <message> <source>Ban</source> - <translation type="unfinished"></translation> + <translation>Zákaz</translation> </message> <message> <source>Follow</source> - <translation type="unfinished"></translation> + <translation>Sledovat</translation> </message> <message> <source>Ignore</source> - <translation type="unfinished"></translation> + <translation>Ignorovat</translation> </message> <message> <source>Add friend</source> - <translation type="unfinished"></translation> + <translation>Přidat přítele</translation> </message> <message> <source>Unignore</source> - <translation type="unfinished"></translation> + <translation>Přestat ignorovat</translation> </message> <message> <source>Remove friend</source> - <translation type="unfinished"></translation> + <translation>Odstranit přítele</translation> </message> </context> <context> <name>QCheckBox</name> <message> <source>Check for updates at startup</source> - <translation type="unfinished"></translation> + <translation>Zkontrolovat při startu novou verzi</translation> </message> <message> <source>Fullscreen</source> - <translation>Celoobrazovkový režim</translation> + <translation>Celá obrazovka</translation> </message> <message> <source>Frontend fullscreen</source> - <translation>Celoobrazovkový režim v menu</translation> + <translation>Celá obrazovka v menu</translation> </message> <message> <source>Enable sound</source> @@ -1143,23 +1149,23 @@ </message> <message> <source>Append date and time to record file name</source> - <translation>Připojit datim a čas k jménu záznamu</translation> + <translation>Připojit datum a čas k jménu záznamu</translation> </message> <message> <source>Show ammo menu tooltips</source> - <translation type="unfinished"></translation> + <translation>Ukazovat tipy ke zbraním</translation> </message> <message> <source>Enable frontend sounds</source> - <translation type="unfinished"></translation> + <translation>Zapnout zvuky v menu</translation> </message> <message> <source>Enable frontend music</source> - <translation type="unfinished"></translation> + <translation>Zapnout hudbu v menu</translation> </message> <message> <source>Frontend effects</source> - <translation type="unfinished"></translation> + <translation>Efekty v menu</translation> </message> </context> <context> @@ -1178,31 +1184,31 @@ </message> <message> <source>(System default)</source> - <translation type="unfinished"></translation> + <translation>(Podle systému)</translation> </message> <message> <source>generated maze...</source> - <translation type="unfinished"></translation> + <translation>generovaný labyrint...</translation> </message> <message> <source>Mission</source> - <translation type="unfinished"></translation> + <translation>Mise</translation> </message> <message> <source>Community</source> - <translation type="unfinished"></translation> + <translation>Komunita</translation> </message> <message> <source>Any</source> - <translation type="unfinished"></translation> + <translation>Jakékoliv</translation> </message> <message> <source>In lobby</source> - <translation type="unfinished"></translation> + <translation>V čekárně</translation> </message> <message> <source>In progress</source> - <translation type="unfinished"></translation> + <translation>Probíhá</translation> </message> <message> <source>Default</source> @@ -1210,54 +1216,54 @@ </message> <message> <source>hand drawn map...</source> - <translation type="unfinished"></translation> + <translation>ručně kreslená mapa...</translation> </message> <message> <source>Disabled</source> - <translation type="unfinished"></translation> + <translation>Vypnuto</translation> </message> <message> <source>Red/Cyan</source> - <translation type="unfinished"></translation> + <translation>Červená/Azurová</translation> </message> <message> <source>Cyan/Red</source> - <translation type="unfinished"></translation> + <translation>Azurová/Červená</translation> </message> <message> <source>Red/Blue</source> - <translation type="unfinished"></translation> + <translation>Červená/Modrá</translation> </message> <message> <source>Blue/Red</source> - <translation type="unfinished"></translation> + <translation>Modrá/Červená</translation> </message> <message> <source>Red/Green</source> - <translation type="unfinished"></translation> + <translation>Červená/Zelená</translation> </message> <message> <source>Green/Red</source> - <translation type="unfinished"></translation> + <translation>Zelená/Červená</translation> </message> <message> <source>Side-by-side</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Bok-po-boku</translation> </message> <message> <source>Top-Bottom</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Shora-Dolu</translation> </message> <message> <source>Wiggle</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Kývat se</translation> </message> </context> <context> <name>QGroupBox</name> <message> <source>Team Members</source> - <translation>Týmoví členové</translation> + <translation>Členové týmu</translation> </message> <message> <source>Fort</source> @@ -1289,23 +1295,23 @@ </message> <message> <source>Game Modifiers</source> - <translation type="unfinished"></translation> + <translation>Herní modifikátory</translation> </message> <message> <source>Basic Settings</source> - <translation type="unfinished"></translation> + <translation>Základní nastavení</translation> </message> <message> <source>Team Settings</source> - <translation type="unfinished"></translation> + <translation>Týmová nastavení</translation> </message> <message> <source>Misc</source> - <translation type="unfinished"></translation> + <translation>Ostatní</translation> </message> <message> <source>Schemes and Weapons</source> - <translation type="unfinished"></translation> + <translation>Schémata a zbraně</translation> </message> </context> <context> @@ -1376,115 +1382,115 @@ </message> <message> <source>Damage Modifier</source> - <translation type="unfinished"></translation> + <translation>Modifikátor poškození</translation> </message> <message> <source>Turn Time</source> - <translation type="unfinished"></translation> + <translation>Čas tahu</translation> </message> <message> <source>Initial Health</source> - <translation type="unfinished"></translation> + <translation>Počáteční zdraví</translation> </message> <message> <source>Sudden Death Timeout</source> - <translation type="unfinished"></translation> + <translation>Čas do náhlé smrti</translation> </message> <message> <source>Mines Time</source> - <translation type="unfinished"></translation> + <translation>Časovač min</translation> </message> <message> <source>Mines</source> - <translation type="unfinished"></translation> + <translation>Počet min</translation> </message> <message> <source>Scheme Name:</source> - <translation type="unfinished"></translation> + <translation>Jméno schématu:</translation> </message> <message> <source>Crate Drops</source> - <translation type="unfinished"></translation> + <translation>Shazování beden</translation> </message> <message> <source>Game scheme</source> - <translation type="unfinished"></translation> + <translation>Herní schéma</translation> </message> <message> <source>% Dud Mines</source> - <translation type="unfinished"></translation> + <translation>% falešných min</translation> </message> <message> <source>Name</source> - <translation type="unfinished"></translation> + <translation>Jméno</translation> </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <source>Grave</source> - <translation type="unfinished"></translation> + <translation>Hrob</translation> </message> <message> <source>Flag</source> - <translation type="unfinished"></translation> + <translation>Vlajka</translation> </message> <message> <source>Voice</source> - <translation type="unfinished"></translation> + <translation>Hlas</translation> </message> <message> <source>Locale</source> - <translation type="unfinished"></translation> + <translation>Jazyk</translation> </message> <message> <source>Restart game to apply</source> - <translation type="unfinished"></translation> + <translation>Aby se nastavení použilo, restartuj hru</translation> </message> <message> <source>Explosives</source> - <translation type="unfinished"></translation> + <translation>Výbušniny</translation> </message> <message> <source>Tip: </source> - <translation type="unfinished"></translation> + <translation>Tip: </translation> </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> - <translation type="unfinished"></translation> + <translation>Tato vývojová verze je 'v průběhu práce' a může být kompatibilní s jinými verzemi hry. Některé možnosti mohou být rozbité nebo nekompletní. Používej na vlastní riziko!</translation> </message> <message> <source>Quality</source> - <translation type="unfinished"></translation> + <translation>Kvalita</translation> </message> <message> <source>% Health Crates</source> - <translation type="unfinished"></translation> + <translation>% zdravotních beden</translation> </message> <message> <source>Health in Crates</source> - <translation type="unfinished"></translation> + <translation>Zdraví v bedně</translation> </message> <message> <source>Sudden Death Water Rise</source> - <translation type="unfinished"></translation> + <translation>Zvyšování hladiny</translation> </message> <message> <source>Sudden Death Health Decrease</source> - <translation type="unfinished"></translation> + <translation>Snižování života</translation> </message> <message> <source>% Rope Length</source> - <translation type="unfinished"></translation> + <translation>% délky lana</translation> </message> <message> <source>Gameplay</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hra</translation> </message> <message> <source>Stereo rendering</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Duální vykreslování</translation> </message> </context> <context> @@ -1541,39 +1547,39 @@ </message> <message> <source>Can not overwrite default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Nemohu přepsat výchozí sadu zbraní '%1'!</translation> </message> <message> <source>All file associations have been set.</source> - <translation type="unfinished"></translation> + <translation>Všechny asociace souborů byly nastaveny.</translation> </message> <message> <source>File association failed.</source> - <translation type="unfinished"></translation> + <translation>Asociace souborů selhala.</translation> </message> <message> <source>Teams</source> - <translation type="unfinished">Týmy</translation> + <translation>Týmy</translation> </message> <message> <source>Really delete this team?</source> - <translation type="unfinished"></translation> + <translation>Opravdu smazat tento tým?</translation> </message> <message> <source>Schemes</source> - <translation type="unfinished"></translation> + <translation>Schémata</translation> </message> <message> <source>Can not delete default scheme '%1'!</source> - <translation type="unfinished"></translation> + <translation>Nemohu smazat výchozí schéma '%1'!</translation> </message> <message> <source>Really delete this game scheme?</source> - <translation type="unfinished"></translation> + <translation>Opravdu smazat toto herní schéma?</translation> </message> <message> <source>Can not delete default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Nemohu smazat výchozí sadu zbraní '%1'!</translation> </message> </context> <context> @@ -1592,11 +1598,11 @@ </message> <message> <source>Nickname</source> - <translation type="unfinished"></translation> + <translation>Přezdívka</translation> </message> <message> <source>Please enter your nickname</source> - <translation type="unfinished"></translation> + <translation>Prosím zadej svou přezdívku</translation> </message> </context> <context> @@ -1615,7 +1621,7 @@ </message> <message> <source>Start server</source> - <translation>Spusti server</translation> + <translation>Spusť server</translation> </message> <message> <source>Connect</source> @@ -1663,73 +1669,73 @@ </message> <message> <source>Random Team</source> - <translation type="unfinished"></translation> + <translation>Náhodný tým</translation> </message> <message> <source>Associate file extensions</source> - <translation type="unfinished"></translation> + <translation>Asociovat přípony souborů</translation> </message> <message> <source>more</source> - <translation type="unfinished"></translation> + <translation>více</translation> </message> </context> <context> <name>QTableWidget</name> <message> <source>Room Name</source> - <translation type="unfinished"></translation> + <translation>Jméno místnosti</translation> </message> <message> <source>C</source> - <translation type="unfinished"></translation> + <translation>K</translation> </message> <message> <source>T</source> - <translation type="unfinished"></translation> + <translation>T</translation> </message> <message> <source>Owner</source> - <translation type="unfinished"></translation> + <translation>Vlastník</translation> </message> <message> <source>Map</source> - <translation type="unfinished">Mapa</translation> + <translation>Mapa</translation> </message> <message> <source>Rules</source> - <translation type="unfinished"></translation> + <translation>Pravidla</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Zbraně</translation> + <translation>Zbraně</translation> </message> </context> <context> <name>SelWeaponWidget</name> <message> <source>Weapon set</source> - <translation type="unfinished"></translation> + <translation>Sada zbraní</translation> </message> <message> <source>Probabilities</source> - <translation type="unfinished"></translation> + <translation>Pravděpodobnosti</translation> </message> <message> <source>Ammo in boxes</source> - <translation type="unfinished"></translation> + <translation>Munice v bednách</translation> </message> <message> <source>Delays</source> - <translation type="unfinished"></translation> + <translation>Prodlevy</translation> </message> <message> <source>new</source> - <translation type="unfinished">nový</translation> + <translation>nový</translation> </message> <message> <source>copy of</source> - <translation type="unfinished"></translation> + <translation>kopie</translation> </message> </context> <context> @@ -1751,95 +1757,95 @@ <name>ToggleButtonWidget</name> <message> <source>Vampirism</source> - <translation type="unfinished"></translation> + <translation>Vampyrismus</translation> </message> <message> <source>Karma</source> - <translation type="unfinished"></translation> + <translation>Karma</translation> </message> <message> <source>Artillery</source> - <translation type="unfinished"></translation> + <translation>Dělostřelectvo</translation> </message> <message> <source>Fort Mode</source> - <translation type="unfinished"></translation> + <translation>Pevnosti</translation> </message> <message> <source>Divide Teams</source> - <translation type="unfinished"></translation> + <translation>Rozděl týmy</translation> </message> <message> <source>Solid Land</source> - <translation type="unfinished"></translation> + <translation>Pevná zem</translation> </message> <message> <source>Add Border</source> - <translation type="unfinished"></translation> + <translation>Přidej hranice</translation> </message> <message> <source>Low Gravity</source> - <translation type="unfinished"></translation> + <translation>Nízká gravitace</translation> </message> <message> <source>Laser Sight</source> - <translation type="unfinished"></translation> + <translation>Laserové zaměřování</translation> </message> <message> <source>Invulnerable</source> - <translation type="unfinished"></translation> + <translation>Nesmrtelnost</translation> </message> <message> <source>Random Order</source> - <translation type="unfinished"></translation> + <translation>Náhodné pořadí</translation> </message> <message> <source>King</source> - <translation type="unfinished"></translation> + <translation>Král</translation> </message> <message> <source>Place Hedgehogs</source> - <translation type="unfinished"></translation> + <translation>Umísti ježky</translation> </message> <message> <source>Clan Shares Ammo</source> - <translation type="unfinished"></translation> + <translation>Klan sdílí munici</translation> </message> <message> <source>Disable Girders</source> - <translation type="unfinished"></translation> + <translation>Vypni traverzy</translation> </message> <message> <source>Disable Land Objects</source> - <translation type="unfinished"></translation> + <translation>Vypni teréní objekty</translation> </message> <message> <source>AI Survival Mode</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Mód 'Počítač přežívá'</translation> </message> <message> <source>Reset Health</source> - <translation type="unfinished"></translation> + <translation>Obnova zdraví</translation> </message> <message> <source>Unlimited Attacks</source> - <translation type="unfinished"></translation> + <translation>Neomezeně útoků</translation> </message> <message> <source>Reset Weapons</source> - <translation type="unfinished"></translation> + <translation>Obnova zbraní</translation> </message> <message> <source>Per Hedgehog Ammo</source> - <translation type="unfinished"></translation> + <translation>Individuální munice</translation> </message> <message> <source>Disable Wind</source> - <translation type="unfinished"></translation> + <translation>Vypni vítr</translation> </message> <message> <source>More Wind</source> - <translation type="unfinished"></translation> + <translation>Více větru</translation> </message> </context> <context> @@ -1882,7 +1888,7 @@ </message> <message> <source>ammo menu</source> - <translation>menu střeliva</translation> + <translation>menu zbraní</translation> </message> <message> <source>slot 1</source> @@ -1922,23 +1928,23 @@ </message> <message> <source>timer 1 sec</source> - <translation>časovač 1 sec</translation> + <translation>časovač 1 vt</translation> </message> <message> <source>timer 2 sec</source> - <translation>časovač 2 sec</translation> + <translation>časovač 2 vt</translation> </message> <message> <source>timer 3 sec</source> - <translation>časovač 3 sec</translation> + <translation>časovač 3 vt</translation> </message> <message> <source>timer 4 sec</source> - <translation>časovač 4 sec</translation> + <translation>časovač 4 vt</translation> </message> <message> <source>timer 5 sec</source> - <translation>časovač 5 sec</translation> + <translation>časovač 5 vt</translation> </message> <message> <source>chat</source> @@ -1954,7 +1960,7 @@ </message> <message> <source>confirmation</source> - <translation>natavení</translation> + <translation>potvrzení</translation> </message> <message> <source>volume down</source> @@ -1970,7 +1976,7 @@ </message> <message> <source>capture</source> - <translation>zajmout</translation> + <translation>sejmout</translation> </message> <message> <source>hedgehogs @@ -1983,148 +1989,148 @@ </message> <message> <source>zoom in</source> - <translation type="unfinished"></translation> + <translation>přiblížit</translation> </message> <message> <source>zoom out</source> - <translation type="unfinished"></translation> + <translation>oddálit</translation> </message> <message> <source>reset zoom</source> - <translation type="unfinished"></translation> + <translation>obnovit přiblížení</translation> </message> <message> <source>long jump</source> - <translation type="unfinished"></translation> + <translation>dlouhý skok</translation> </message> <message> <source>high jump</source> - <translation type="unfinished"></translation> + <translation>vysoký skok</translation> </message> <message> <source>slot 10</source> - <translation type="unfinished">pozice 10</translation> + <translation>pozice 10</translation> </message> </context> <context> <name>binds (categories)</name> <message> <source>Basic controls</source> - <translation type="unfinished"></translation> + <translation>Základní ovládání</translation> </message> <message> <source>Weapon controls</source> - <translation type="unfinished"></translation> + <translation>Ovládání zbraní</translation> </message> <message> <source>Camera and cursor controls</source> - <translation type="unfinished"></translation> + <translation>Ovládání kamery a kurzoru</translation> </message> <message> <source>Other</source> - <translation type="unfinished">Ostatní</translation> + <translation>Ostatní</translation> </message> </context> <context> <name>binds (descriptions)</name> <message> <source>Move your hogs and aim:</source> - <translation type="unfinished"></translation> + <translation>Pohybuj ježkem a miř:</translation> </message> <message> <source>Traverse gaps and obstacles by jumping:</source> - <translation type="unfinished"></translation> + <translation>Překonej mezery a překážky skokem:</translation> </message> <message> <source>Fire your selected weapon or trigger an utility item:</source> - <translation type="unfinished"></translation> + <translation>Odpal zvolenou zbraň nebo použij nástroj:</translation> </message> <message> <source>Pick a weapon or a target location under the cursor:</source> - <translation type="unfinished"></translation> + <translation>Vyber zbraň nebo cílové místo pod kurzorem:</translation> </message> <message> <source>Switch your currently active hog (if possible):</source> - <translation type="unfinished"></translation> + <translation>Přepni aktivního ježka (pokud je to možné):</translation> </message> <message> <source>Pick a weapon or utility item:</source> - <translation type="unfinished"></translation> + <translation>Vyber zbraň nebo nástroj:</translation> </message> <message> <source>Set the timer on bombs and timed weapons:</source> - <translation type="unfinished"></translation> + <translation>Nastav časovač bomby nebo časované zbraně:</translation> </message> <message> <source>Move the camera to the active hog:</source> - <translation type="unfinished"></translation> + <translation>Pohni kamerou na aktivního ježka:</translation> </message> <message> <source>Move the cursor or camera without using the mouse:</source> - <translation type="unfinished"></translation> + <translation>Pohni kurzorem nebo kamerou bez použití myši:</translation> </message> <message> <source>Modify the camera's zoom level:</source> - <translation type="unfinished"></translation> + <translation>Změň přiblížení kamery:</translation> </message> <message> <source>Talk to your team or all participants:</source> - <translation type="unfinished"></translation> + <translation>Mluv ke svému týmu nebo všem účastníkům:</translation> </message> <message> <source>Pause, continue or leave your game:</source> - <translation type="unfinished"></translation> + <translation>Pozastav, pokračuj nebo opusť hru:</translation> </message> <message> <source>Modify the game's volume while playing:</source> - <translation type="unfinished"></translation> + <translation>Zmeň hlasitost hry během hraní:</translation> </message> <message> <source>Toggle fullscreen mode:</source> - <translation type="unfinished"></translation> + <translation>Přepni mód celé obrazovky:</translation> </message> <message> <source>Take a screenshot:</source> - <translation type="unfinished"></translation> + <translation>Vyfoť obrazovku:</translation> </message> <message> <source>Toggle labels above hedgehogs:</source> - <translation type="unfinished"></translation> + <translation>Přepni popisky nad ježky:</translation> </message> </context> <context> <name>binds (keys)</name> <message> <source>Axis</source> - <translation type="unfinished"></translation> + <translation>Osa</translation> </message> <message> <source>(Up)</source> - <translation type="unfinished"></translation> + <translation>(Nahoru)</translation> </message> <message> <source>(Down)</source> - <translation type="unfinished"></translation> + <translation>(Dolů)</translation> </message> <message> <source>Hat</source> - <translation type="unfinished"></translation> + <translation>Klobouček</translation> </message> <message> <source>(Left)</source> - <translation type="unfinished"></translation> + <translation>(Vlevo)</translation> </message> <message> <source>(Right)</source> - <translation type="unfinished"></translation> + <translation>(Vpravo)</translation> </message> <message> <source>Button</source> - <translation type="unfinished"></translation> + <translation>Tlačítko</translation> </message> <message> <source>Keyboard</source> - <translation type="unfinished"></translation> + <translation>Klávesnice</translation> </message> <message> <source>Delete</source> @@ -2132,199 +2138,199 @@ </message> <message> <source>Mouse: Left button</source> - <translation type="unfinished"></translation> + <translation>Myš: Levé tlačítko</translation> </message> <message> <source>Mouse: Middle button</source> - <translation type="unfinished"></translation> + <translation>Myš: Prostřední tlačítko</translation> </message> <message> <source>Mouse: Right button</source> - <translation type="unfinished"></translation> + <translation>Myš: Pravé tlačítko</translation> </message> <message> <source>Mouse: Wheel up</source> - <translation type="unfinished"></translation> + <translation>Myš: Kolečko nahoru</translation> </message> <message> <source>Mouse: Wheel down</source> - <translation type="unfinished"></translation> + <translation>Myš: Kolečko dolů</translation> </message> <message> <source>Backspace</source> - <translation type="unfinished"></translation> + <translation>Backspace</translation> </message> <message> <source>Tab</source> - <translation type="unfinished"></translation> + <translation>Tabulátor</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Vymazat</translation> </message> <message> <source>Return</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Návrat</translation> </message> <message> <source>Pause</source> - <translation type="unfinished"></translation> + <translation>Pauza</translation> </message> <message> <source>Escape</source> - <translation type="unfinished"></translation> + <translation>Escape</translation> </message> <message> <source>Space</source> - <translation type="unfinished"></translation> + <translation>Mezerník</translation> </message> <message> <source>Numpad 0</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 0</translation> </message> <message> <source>Numpad 1</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 1</translation> </message> <message> <source>Numpad 2</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 2</translation> </message> <message> <source>Numpad 3</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 3</translation> </message> <message> <source>Numpad 4</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 4</translation> </message> <message> <source>Numpad 5</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 5</translation> </message> <message> <source>Numpad 6</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 6</translation> </message> <message> <source>Numpad 7</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 7</translation> </message> <message> <source>Numpad 8</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 8</translation> </message> <message> <source>Numpad 9</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad 9</translation> </message> <message> <source>Numpad .</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad .</translation> </message> <message> <source>Numpad /</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad /</translation> </message> <message> <source>Numpad *</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad *</translation> </message> <message> <source>Numpad -</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad -</translation> </message> <message> <source>Numpad +</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Numpad +</translation> </message> <message> <source>Enter</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Enter</translation> </message> <message> <source>Equals</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Rovná se</translation> </message> <message> <source>Up</source> - <translation type="unfinished"></translation> + <translation>Nahoru</translation> </message> <message> <source>Down</source> - <translation type="unfinished"></translation> + <translation>Dolu</translation> </message> <message> <source>Right</source> - <translation type="unfinished"></translation> + <translation>Vpravo</translation> </message> <message> <source>Left</source> - <translation type="unfinished"></translation> + <translation>Vlevo</translation> </message> <message> <source>Insert</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Insert</translation> </message> <message> <source>Home</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Home</translation> </message> <message> <source>End</source> - <translation type="unfinished"></translation> + <translation type="unfinished">End</translation> </message> <message> <source>Page up</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Page up</translation> </message> <message> <source>Page down</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Page down</translation> </message> <message> <source>Num lock</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Num lock</translation> </message> <message> <source>Caps lock</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Caps lock</translation> </message> <message> <source>Scroll lock</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Scroll lock</translation> </message> <message> <source>Right shift</source> - <translation type="unfinished"></translation> + <translation>Pravý shift</translation> </message> <message> <source>Left shift</source> - <translation type="unfinished"></translation> + <translation>Levý shift</translation> </message> <message> <source>Right ctrl</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Pravý ctrl</translation> </message> <message> <source>Left ctrl</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Levý ctrl</translation> </message> <message> <source>Right alt</source> - <translation type="unfinished"></translation> + <translation>Pravý alt</translation> </message> <message> <source>Left alt</source> - <translation type="unfinished"></translation> + <translation>Levý alt</translation> </message> <message> <source>Right meta</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Pravá meta</translation> </message> <message> <source>Left meta</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Levá meta</translation> </message> <message> <source>A button</source> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Thu Aug 04 17:44:55 2011 +0200 @@ -46,7 +46,7 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> - <translation>Quand cette option est active choisir des paramètres de jeu sélectionnera les armes</translation> + <translation>Une fois cette option activée, choisir les paramètres de jeu sélectionne automatiquement les armes correspondantes</translation> </message> </context> <context> @@ -421,7 +421,7 @@ <message numerus="yes"> <source>(%1 kill)</source> <translation type="unfinished"> - <numerusform>(%1 Tue)</numerusform> + <numerusform>(%1 tue)</numerusform> <numerusform></numerusform> </translation> </message> @@ -540,7 +540,7 @@ <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation>Particulièrement quand vous jouez en ligne soyez polis et pensez que certains joueurs avec vous peuvent être mineurs.</translation> + <translation>Particulièrement quand vous jouez en ligne soyez polis et n'oubliez pas que certains joueurs peuvent être mineurs.</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> @@ -610,12 +610,12 @@ <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation type="unfinished">Le Old Limbuger cause seulement une petite explosion. En revanche le vent affecte le petit nuage empoisonné qui peut contaminer de nombreux hérissons à la fois.</translation> + <translation type="unfinished">Le vieux Limburger cause seulement une petite explosion. En revanche le vent affecte le petit nuage empoisonné qui peut contaminer de nombreux hérissons à la fois.</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation type="unfinished">L'attaque du Piano est la plus dévastatrice des attaques aériennes. Vous perdrez le hérisson qui la lance, donc il y a une contrepartie énorme.</translation> + <translation type="unfinished">L'attaque du Piano est la plus dévastatrice des attaques aériennes. Mais la contrepartie est grande puisque vous perdrez le hérisson qui la lance.</translation> </message> <message> <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> @@ -705,17 +705,17 @@ <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">La version Windows de Hedgewars supporte Xfire. Ajoutez Hedgewars à la liste des jeux pour que vos amis puissent vous voir jouer</translation> </message> <message> <source>The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">L'Abeille Missile peut être délicate à utiliser. Sa courbe de lancer dépend de sa vitesse, pour plus de précision ne l'envoyez pas à pleine puissance. </translation> </message> <message> <source>Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"> Utilisez le Lance-Flammes ou le Cocktail Molotov pour empêcher temporairement les hérissons de circuler dans les tunnels ou sur les plateformes.</translation> </message> </context> <context> @@ -1030,7 +1030,7 @@ </message> <message> <source>Disable land objects when generating random maps.</source> - <translation type="unfinished">Désactiver les objets de terrain en générant des cartes aléatoires.</translation> + <translation type="unfinished">Désactiver les objets de terrain lorsque des cartes aléatoires sont générées.</translation> </message> <message> <source>AI respawns on death.</source> @@ -1198,7 +1198,7 @@ </message> <message> <source>Show ammo menu tooltips</source> - <translation type="unfinished">Montrer le menu d'aide des munitions.</translation> + <translation type="unfinished">Montrer les astuces du menu des armes.</translation> </message> <message> <source>Enable frontend sounds</source> @@ -1245,11 +1245,11 @@ </message> <message> <source>Any</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Aucun</translation> </message> <message> <source>In lobby</source> - <translation type="unfinished"></translation> + <translation type="unfinished">En attente</translation> </message> <message> <source>In progress</source> @@ -1269,27 +1269,27 @@ </message> <message> <source>Red/Cyan</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Rouge/Cyan</translation> </message> <message> <source>Cyan/Red</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Cyan/Rouge</translation> </message> <message> <source>Red/Blue</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Rouge/Bleu</translation> </message> <message> <source>Blue/Red</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Bleu/Rouge</translation> </message> <message> <source>Red/Green</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Rouge/Vert</translation> </message> <message> <source>Green/Red</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Vert/Rouge</translation> </message> <message> <source>Side-by-side</source> @@ -1531,11 +1531,11 @@ </message> <message> <source>Gameplay</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Mode de jeu</translation> </message> <message> <source>Stereo rendering</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Rendu stéréo</translation> </message> </context> <context> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Locale/sk.txt --- a/share/hedgewars/Data/Locale/sk.txt Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Locale/sk.txt Thu Aug 04 17:44:55 2011 +0200 @@ -55,6 +55,7 @@ 00:52=Žiadna zbraň nie je vybraná 00:53=TARDIS 00:54=Budova +00:55=Postrek zeme 01:00=Do boja! 01:01=Remíza @@ -71,6 +72,12 @@ 01:12=Posledné kolo pred Rýchlou smrťou! 01:13=Ešte %1 kolá do Rýchlej smrti! 01:14=Priprav sa, %1! +01:15=Nepatrný +01:16=Nízky +01:17=Normálny +01:18=Vysoký +01:19=Extrémny +01:20=%1 odskok ; Správy o udalostiach ; Ježko (%1) zomrel @@ -99,6 +106,7 @@ 02:00=%1 odišiel za lepším 02:00=%1 už nespotrebováva pamäť tohto počítača 02:00=%1 odišiel a už sa nevrátil +02:00=Je tu niekde doktor? ; Ježko (%1) sa utopil 02:01=%1 sa hrá na ponorku! 02:01=%1 napodobnil Titanik! @@ -132,6 +140,10 @@ 02:02=Dajme im na frak! 02:02=Nikdy sa nevzdávaj 02:02=Bojuj čestne! +; Kolo končí (výhra, momentálne nepoužívané) +02:03=... +; Kolo končí (remíza, momentálne nepoužívané) +02:04=... ; Nová krabica so zdravím 02:05=Doktora! 02:05=Prvá pomoc z nebies! @@ -191,7 +203,7 @@ 02:09=Išlo o jasné zlyhanie techniky! ; Hog shot an home run (using the bat and another hog) 02:10=Home Run! -02:10=Vták, lietadlo, ... +02:10=Letí, letí, všetko letí... 02:10=A je z kola von! ; Ježko (%1) musí odísť (team skončil) @@ -331,3 +343,4 @@ 05:18=Neobmedzené útoky 05:19=Zbrane sú na konci ťahu resetované 05:20=Zbrane nie sú zdieľané ježkami +05:21=Tag tím: Teamy v spoločnom klane sa postupne striedajú v ťahaní|Zdieľaný čas: Tímy v rámci klanu zdieľajú čas na ťah diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,87 @@ + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil +local enemy = nil +local firedShell = false +local turnNumber = 0 + +local hhs = {} +local numhhs = 0 + +function onGameInit() + + Seed = 0 + TurnTime = 20000 + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + Map = "Bamboo" + Theme = "Bamboo" + + AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default") + player = AddHog("Ikeda", 0, 10, "StrawHat") + + AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Unit 835"), 1, 10, "cyborg") + + SetGearPosition(player,1166,1680) + SetGearPosition(enemy,2848,1443) + +end + + +function onGameStart() + + ShowMission(loc("Bamboo Thicket"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amBazooka, 0) + + --WEAPON CRATE LIST. WCRATES: 1 + SpawnAmmoCrate(1915,1876,amBazooka) + --UTILITY CRATE LIST. UCRATES: 2 + SpawnUtilityCrate(1986,1141,amBlowTorch) + SpawnUtilityCrate(1427,1527,amParachute) + + AddAmmo(enemy, amGrenade, 100) + +end + +function onNewTurn() + SetWind(100) + turnNumber = turnNumber + 1 +end + +function onAmmoStoreInit() + SetAmmo(amSkip, 9, 0, 0, 0) + SetAmmo(amGirder, 4, 0, 0, 0) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amParachute, 0, 0, 0, 2) + SetAmmo(amBazooka, 0, 0, 0, 2) +end + + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + hhs[numhhs] = gear + numhhs = numhhs + 1 + elseif GetGearType(gear) == gtShell then + firedShell = true + end + +end + +function onGearDelete(gear) + + if (gear == enemy) then + + ShowMission(loc("Bamboo Thicket"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + + if (turnNumber < 6) and (firedShell == false) then + AddCaption(loc("Achievement Unlocked") .. ": " .. loc("Energetic Engineer"),0xffba00ff,capgrpMessage2) + end + + elseif gear == player then + ShowMission(loc("Bamboo Thicket"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + end + +end diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Thu Aug 04 17:44:55 2011 +0200 @@ -1,5 +1,5 @@ ---------------------------------- --- THE SPECIALISTS MODE 0.4 +-- THE SPECIALISTS MODE 0.5 -- by mikade ---------------------------------- @@ -29,15 +29,22 @@ -- fix potential switch explit -- improve user feedback on start +---------------- +-- version 0.5 +---------------- +-- provision for variable minetimer / demo mines set to 5000ms +-- don't autoswitch if player only has 1 hog on his team + -------------------- --TO DO -------------------- --- add proper gameflag checking, maybe --- set crate drops etc. --- add alternative switch +-- balance hog health, maybe +-- add proper gameflag checking, maybe (so that we can throw in a .cfg and let the users break everything) +-- set crate drops etc. (super crate for each class? or will this ruin the mode's simplicity?) loadfile(GetDataPath() .. "Scripts/Locale.lua")() +loadfile(GetDataPath() .. "Scripts/Tracker.lua")() local numhhs = 0 local hhs = {} @@ -47,6 +54,12 @@ local started = false local switchStage = 0 +local hogCounter + +function CountHog(gear) + hogCounter = hogCounter +1 +end + function CreateTeam() currTeam = "" @@ -222,6 +235,8 @@ "", 4, 4000 ) + trackTeams() + end @@ -229,14 +244,8 @@ currName = GetHogName(CurrentHedgehog) lastName = GetHogName(CurrentHedgehog) AssignAmmo() - - --------------- - --switch - started = false + started = true switchStage = 0 - --AddAmmo(CurrentHedgehog, amSwitch, 1) - --------------- - end function onGameTick() @@ -254,19 +263,30 @@ AddCaption(loc("Prepare yourself") .. ", " .. currName .. "!") - switchStage = switchStage + 1 + hogCounter = 0 + runOnHogsInTeam(CountHog, GetHogTeamName(CurrentHedgehog) ) + + if hogCounter > 1 then + + switchStage = switchStage + 1 - if switchStage == 1 then - AddAmmo(CurrentHedgehog, amSwitch, 1) + if switchStage == 1 then + AddAmmo(CurrentHedgehog, amSwitch, 1) - elseif switchStage == 2 then - ParseCommand("setweap " .. string.char(amSwitch)) - elseif switchStage == 3 then - SetGearMessage(CurrentHedgehog,gmAttack) - elseif switchStage == 4 then + elseif switchStage == 2 then + ParseCommand("setweap " .. string.char(amSwitch)) + elseif switchStage == 3 then + SetGearMessage(CurrentHedgehog,gmAttack) + elseif switchStage == 4 then + switchStage = 110 + AddAmmo(CurrentHedgehog, amSwitch, 0) + end + + else switchStage = 110 - AddAmmo(CurrentHedgehog, amSwitch, 0) end + + end lastName = currName @@ -280,12 +300,21 @@ if GetGearType(gear) == gtHedgehog then hhs[numhhs] = gear numhhs = numhhs + 1 - end + elseif (GetGearType(gear) == gtMine) and (started == true) then + SetTimer(gear,5000) + end + + if (GetGearType(gear) == gtHedgehog) or (GetGearType(gear) == gtResurrector) then + trackGear(gear) + end + end function onGearDelete(gear) --- + if (GetGearType(gear) == gtHedgehog) or (GetGearType(gear) == gtResurrector) then + trackDeletion(gear) + end end function onAmmoStoreInit() diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Balanced Random Weapon.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Balanced Random Weapon.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/Balanced_Random_Weapon.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string></string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Capture the Flag.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Capture the Flag.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/Capture_the_Flag.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Gaudy Racer.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Gaudy Racer.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/GaudyRacer.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/No Jumping.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/No Jumping.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/No_Jumping.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Normal.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Normal.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string></string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Random Weapon.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Random Weapon.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/Balanced_Random_Weapon.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string></string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Space Invasion.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Space Invasion.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/Space_Invasion.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/The Specialists.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/The Specialists.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/The_Specialists.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string></string> + <key>weapon</key> + <string></string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Scripts/plist/Tumbler.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/plist/Tumbler.plist Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>command</key> + <string>escript Scripts/Multiplayer/Tumbler.lua</string> + <key>description</key> + <string></string> + <key>scheme</key> + <string>Default.plist</string> + <key>weapon</key> + <string>Default.plist</string> +</dict> +</plist> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Ball.png Binary file share/hedgewars/Data/Themes/Golf/Ball.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Border.png Binary file share/hedgewars/Data/Themes/Golf/Border.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Car.png Binary file share/hedgewars/Data/Themes/Golf/Car.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Chunk.png Binary file share/hedgewars/Data/Themes/Golf/Chunk.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Clouds.png Binary file share/hedgewars/Data/Themes/Golf/Clouds.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Club.png Binary file share/hedgewars/Data/Themes/Golf/Club.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Flag1.png Binary file share/hedgewars/Data/Themes/Golf/Flag1.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Flag2.png Binary file share/hedgewars/Data/Themes/Golf/Flag2.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Flake.png Binary file share/hedgewars/Data/Themes/Golf/Flake.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Girder.png Binary file share/hedgewars/Data/Themes/Golf/Girder.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Hole.png Binary file share/hedgewars/Data/Themes/Golf/Hole.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/LandBackTex.png Binary file share/hedgewars/Data/Themes/Golf/LandBackTex.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/LandTex.png Binary file share/hedgewars/Data/Themes/Golf/LandTex.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Sky.png Binary file share/hedgewars/Data/Themes/Golf/Sky.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/SkyL.png Binary file share/hedgewars/Data/Themes/Golf/SkyL.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/SkyR.png Binary file share/hedgewars/Data/Themes/Golf/SkyR.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/Tee.png Binary file share/hedgewars/Data/Themes/Golf/Tee.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/horizont.png Binary file share/hedgewars/Data/Themes/Golf/horizont.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/icon.png Binary file share/hedgewars/Data/Themes/Golf/icon.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/icon@2x.png Binary file share/hedgewars/Data/Themes/Golf/icon@2x.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Golf/theme.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Golf/theme.cfg Thu Aug 04 17:44:55 2011 +0200 @@ -0,0 +1,15 @@ +sky = 117, 141, 186 +border = 38, 114, 35 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = nature.ogg +clouds = 9 +object = Ball, 3, 0, 18, 24, 6, 1, 0, 0, 24, 13 +object = Tee, 1, 6, 22, 5, 4, 1, 0, 0, 16, 20 +object = Car, 1, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Hole, 5, 0, 44, 100, 4, 1, 19, 0, 54, 41 +object = Flag1, 1, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Flag2, 1, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Club, 2, 162, 254, 21, 6, 1, 0, 0, 240, 245 +flakes = 100, 1, 1000, 50, 50 diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Underwater/SDFlake.png Binary file share/hedgewars/Data/Themes/Underwater/SDFlake.png has changed diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/Themes/Underwater/theme.cfg --- a/share/hedgewars/Data/Themes/Underwater/theme.cfg Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/Themes/Underwater/theme.cfg Thu Aug 04 17:44:55 2011 +0200 @@ -11,5 +11,5 @@ object = coral, 3, 10, 193, 38, 32, 2, 128, 66, 66, 94, 39, 0, 88, 167 object = coral2, 3, 119, 146, 23, 22, 1, 5, 0, 123, 130 flakes = 20, 20, 150, 0, 5 -sd-flakes = 20, 20, 150, 0, 5 +sd-flakes = 5, 16, 150, 0, 1 rq-sky = 0, 70, 210 diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/misc/hedgewars-mimeinfo.xml --- a/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Thu Aug 04 17:44:55 2011 +0200 @@ -15,6 +15,7 @@ <comment xml:lang="pl">Demo gry Hedgewars</comment> <comment xml:lang="pt">Hedgewars Demo</comment> <comment xml:lang="sk">Demo hry Hedgewars</comment> + <comment xml:lang="cs">Ukázka hry Hedgewars</comment> <comment xml:lang="sv">Demo för Hedgewars</comment> <magic priority="50"> <match required="yes" type="byte" offset="0" value="2"/> @@ -34,6 +35,7 @@ <comment xml:lang="pl">Zapis gry Hedgewars</comment> <comment xml:lang="pt">Partida guardada de Hedgewars</comment> <comment xml:lang="sk">Uložená hra Hedgewars</comment> + <comment xml:lang="cs">Uložená hra Hedgewars</comment> <comment xml:lang="sv">Sparfil för Hedgewars</comment> <magic priority="50"> <match required="yes" type="byte" offset="0" value="2"/> diff -r b9aed3de7c27 -r 272ed78e59a7 share/hedgewars/Data/misc/hwengine.desktop.in --- a/share/hedgewars/Data/misc/hwengine.desktop.in Thu Aug 04 17:41:07 2011 +0200 +++ b/share/hedgewars/Data/misc/hwengine.desktop.in Thu Aug 04 17:44:55 2011 +0200 @@ -13,6 +13,7 @@ GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок GenericName[sk]=Engine hry Hedgewars, pre prehrávanie uložených hier a demo súborov +GenericName[cs]=Engine hry Hedgewars pro přehrávání uložených her a ukázkových souborů GenericName[sv]=Hedgewarsmotorn, för att öppna demo- och sparfiler Icon=hedgewars.png Exec=${CMAKE_INSTALL_PREFIX}/bin/hwengine ${HEDGEWARS_DATADIR}/hedgewars/Data %f