# HG changeset patch # User unc0rr # Date 1369853557 -14400 # Node ID 7f04ad2cda541aeac613c8e0d57968c80a40b0cd # Parent e095e3023682a12e29ee3016e2063e7dd5578ab7# Parent 387e440093b740ff872dbabb585b9e0ae4d781fa merge diff -r e095e3023682 -r 7f04ad2cda54 .hgignore --- a/.hgignore Sun Apr 21 01:36:08 2013 +0200 +++ b/.hgignore Wed May 29 22:52:37 2013 +0400 @@ -3,6 +3,7 @@ glob:moc_*.cxx glob:qrc_*.cxx glob:*.o +glob:*.a glob:*.qm glob:Makefile glob:bin @@ -54,8 +55,8 @@ glob:project_files/Android-build/SDL-android-project/.* glob:project_files/Android-build/out glob:project_files/Android-build/Makefile.android -glob:hedgewars-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug -glob:hedgewars-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release +glob:hedgewars-build-desktop-Qt* +glob:hedgewars-build-desktop-Qt* glob:*.depends glob:tools/build_windows_koda.bat glob:share/hedgewars/Data/misc/hwengine.desktop @@ -63,3 +64,5 @@ glob:_CPack_Packages/ glob:version_info.txt glob:*.tar.* +glob:*.or +glob:*.res \ No newline at end of file diff -r e095e3023682 -r 7f04ad2cda54 CMakeLists.txt --- a/CMakeLists.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -211,6 +211,10 @@ #set default flags values for all projects (unless MINIMAL_FLAGS is true) if(NOT ${MINIMAL_FLAGS}) + if(WINDOWS) + #this flags prevents a few dll hell problems + set(CMAKE_C_FLAGS "-static-libgcc ${CMAKE_C_FLAGS}") + endif(WINDOWS) set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}") diff -r e095e3023682 -r 7f04ad2cda54 ChangeLog.txt --- a/ChangeLog.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/ChangeLog.txt Wed May 29 22:52:37 2013 +0400 @@ -2,15 +2,39 @@ * bugfixes 0.9.18 -> 0.9.19: - + new icegun weapon - + main graphical user interface overhaul - + up and down keys navigate in chat history - + several commands from chat available - + support hwplay:// scheme syntax - + supply full revision and hash information in version tag - + better set of options for driving engine - * rope sliding - * forbid kicking on 1v1 matches + + New Freezer weapon - freezes terrain, water, hedgehogs, mines, cases, explosives + + Saucer can aim weapons and fire underwater + + Main graphical user interface overhaul + + Splashscreen on Windows *_* + + Up and down keys navigate in chat history + + Several commands from chat available + + Support hwplay:// scheme syntax + + Supply full revision and hash information in version tag + + Better set of options for driving engine + + Downloadable content can now be stored in packages for easy uninstall + + Lua scripts can load a sidecar overlay package of game resources + + Math improvements for better performance/reliability + + Smarter AI - now uses drill rocket accurately and is aware of barrels and dud mines. More aggressive in infinite attack, lua can tell to target specific hogs, such as in Mutant + + New fort, Steel Tower + + New theme, Fruit + + New hats - some national ones, Portal, harlequin, more animals... + + New maps based on StarBound. SB_Bones, SB_Crystal, SB_Grassy, SB_Grove, SB_Haunty, SB_Oaks, SB_Shrooms, SB_Tentacles + + Translation updates - Turkish, French, German, Japanese, Portuguese, Italian, Russian - Campaign french should work correctly now + + Theme object masks + + Easier weapon selection in shoppa. F1 will select from F5 if there are no weps in F1-F4 + + Cleaver radius shrunk to improve usability on horizontal throws + + Map hog limit is now just a suggestion, not enforced + + Static map theme is now just the default, can be changed + + Themeable static maps (provide a mask.png without a map.png) + + Split seed with '|' to keep the land shape but change the hog placement + * You can now move out of the way when throwing a sticky mine or cleaver straight up + * Rope sliding should behave more like pre-0.9.18 again + * Forbid kicking on 1v1 matches + * Desync fixes + * Fixed fort mode + * Making very large maps now works properly with targetted weapons + * ParseCommand should be safe to use in Lua now, at any time + * Fixes to many weapons. Mudball, blowtorch, explosives, cluster bomb spread, portal. 0.9.17 -> 0.9.18: diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/campaign.cpp --- a/QTfrontend/campaign.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/campaign.cpp Wed May 29 22:52:37 2013 +0400 @@ -16,43 +16,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include <QDir> -#include <QFile> -#include <QTextStream> -#include <QPushButton> -#include <QListWidget> -#include <QStackedLayout> -#include <QLineEdit> -#include <QLabel> -#include <QRadioButton> -#include <QSpinBox> -#include <QCloseEvent> -#include <QCheckBox> -#include <QTextBrowser> -#include <QAction> -#include <QTimer> -#include <QScrollBar> -#include <QDataWidgetMapper> -#include <QTableView> -#include <QCryptographicHash> -#include <QSignalMapper> -#include <QShortcut> -#include <QDesktopServices> -#include <QInputDialog> -#include <QPropertyAnimation> +#include "campaign.h" + +#include "hwconsts.h" + #include <QSettings> -#include "campaign.h" -#include "gameuiconfig.h" -#include "hwconsts.h" -#include "gamecfgwidget.h" -#include "bgwidget.h" -#include "mouseoverfilter.h" -#include "tcpBase.h" - -#include "DataManager.h" - -extern QString campaign, campaignTeam; QStringList getCampMissionList(QString & campaign) { diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/campaign.h --- a/QTfrontend/campaign.h Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/campaign.h Wed May 29 22:52:37 2013 +0400 @@ -19,21 +19,8 @@ #ifndef CAMPAIGN_H #define CAMPAIGN_H -#include <QMainWindow> -#include <QStack> -#include <QTime> -#include <QPointer> -#include <QPropertyAnimation> -#include <QUrl> -#include <QNetworkReply> -#include <QNetworkRequest> -#include <QNetworkAccessManager> - -#include "netserver.h" -#include "game.h" -#include "ui_hwform.h" -#include "SDLInteraction.h" -#include "bgwidget.h" +#include <QString> +#include <QStringList> QStringList getCampMissionList(QString & campaign); unsigned int getCampProgress(QString & teamName, QString & campName); diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/gameuiconfig.cpp Wed May 29 22:52:37 2013 +0400 @@ -112,7 +112,7 @@ Form->ui.pageOptions->CBFrontendMusic->setChecked(value("frontend/music", true).toBool()); Form->ui.pageOptions->SLVolume->setValue(value("audio/volume", 100).toUInt()); - QString netNick = value("net/nick", "").toString(); + QString netNick = value("net/nick", tr("Guest")+QString("%1").arg(rand())).toString(); Form->ui.pageOptions->editNetNick->setText(netNick); bool savePwd = value("net/savepassword",true).toBool(); Form->ui.pageOptions->CBSavePassword->setChecked(savePwd); @@ -521,14 +521,28 @@ setValue("net/passwordhash", QString()); setValue("net/passwordlength", 0); setValue("net/savepassword", false); //changes the savepassword value to false in order to not let the user save an empty password in PAGE_SETUP - reloadValues(); //reloads the values of PAGE_SETUP + Form->ui.pageOptions->editNetPassword->setEnabled(false); + Form->ui.pageOptions->editNetPassword->setText(""); } void GameUIConfig::setPasswordHash(const QString & passwordhash) { setValue("net/passwordhash", passwordhash); - setValue("net/passwordlength", passwordhash.size()/4); - setNetPasswordLength(passwordhash.size()/4); //the hash.size() is divided by 4 let PAGE_SETUP use a reasonable number of stars to display the PW + if (passwordhash!=NULL && passwordhash.size() > 0) + { + // WTF - the whole point of "password length" was to have the dots match what they typed. This is totally pointless, and all hashes are the same length for a given hash so might as well hardcode it. + // setValue("net/passwordlength", passwordhash.size()/4); + setValue("net/passwordlength", 8); + + // More WTF + //setNetPasswordLength(passwordhash.size()/4); //the hash.size() is divided by 4 let PAGE_SETUP use a reasonable number of stars to display the PW + setNetPasswordLength(8); + } + else + { + setValue("net/passwordlength", 0); + setNetPasswordLength(0); + } } QString GameUIConfig::passwordHash() diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/hwform.cpp Wed May 29 22:52:37 2013 +0400 @@ -153,7 +153,7 @@ config = new GameUIConfig(this, DataManager::instance().settingsFileName()); frontendEffects = config->value("frontend/effects", true).toBool(); - playerHash = QString(QCryptographicHash::hash(config->value("net/nick","").toString().toUtf8(), QCryptographicHash::Md5).toHex()); + playerHash = QString(QCryptographicHash::hash(config->value("net/nick",tr("Guest")+QString("%1").arg(rand())).toString().toUtf8(), QCryptographicHash::Md5).toHex()); ui.pageRoomsList->setSettings(config); ui.pageNetGame->setSettings(config); @@ -319,8 +319,6 @@ connect(ui.pageMain->BtnNetLocal, SIGNAL(clicked()), this, SLOT(GoToNet())); connect(ui.pageMain->BtnNetOfficial, SIGNAL(clicked()), this, SLOT(NetConnectOfficialServer())); - connect(ui.pageConnecting, SIGNAL(cancelConnection()), this, SLOT(GoBack())); - connect(ui.pageVideos, SIGNAL(goBack()), config, SLOT(SaveVideosOptions())); ammoSchemeModel = new AmmoSchemeModel(this, cfgdir->absolutePath() + "/schemes.ini"); @@ -472,7 +470,7 @@ if(teamslist.empty()) { - QString currentNickName = config->value("net/nick","").toString().toUtf8(); + QString currentNickName = config->value("net/nick",tr("Guest")+QString("%1").arg(rand())).toString().toUtf8(); QString teamName; if (currentNickName.isEmpty()) @@ -598,6 +596,10 @@ #endif qDebug("Leaving %s, entering %s", qPrintable(stringifyPageId(lastid)), qPrintable(stringifyPageId(id))); + if (lastid == ID_PAGE_MAIN) + { + ui.pageMain->resetNetworkChoice(); + } // pageEnter and pageLeave events ((AbstractPage*)ui.Pages->widget(lastid))->triggerPageLeave(); @@ -1373,13 +1375,11 @@ connect(hwnet, SIGNAL(configAsked()), ui.pageNetGame->pGameCFG, SLOT(fullNetConfig())); //nick and pass stuff - QString nickname = config->value("net/nick", "").toString(); + hwnet->m_private_game = !(hostName == NETGAME_DEFAULT_SERVER && port == NETGAME_DEFAULT_PORT); + if (hwnet->m_private_game == false && AskForNickAndPwd() != 0) + return; - hwnet->m_private_game = !(hostName == NETGAME_DEFAULT_SERVER && port == NETGAME_DEFAULT_PORT); - if (hwnet->m_private_game == false) - if (AskForNickAndPwd() != 0) - return; - + QString nickname = config->value("net/nick",tr("Guest")+QString("%1").arg(rand())).toString(); ui.pageRoomsList->setUser(nickname); ui.pageNetGame->setUser(nickname); @@ -1392,16 +1392,18 @@ config->clearTempHash(); //initialize - QString hash = config->passwordHash(); - QString temphash = config->tempHash(); - QString nickname = config->value("net/nick", "").toString(); + QString hash; + QString temphash; + QString nickname; QString password; - //if something from login is missing, start dialog loop - if (nickname.isEmpty() || hash.isEmpty()) - { - while (nickname.isEmpty() || (hash.isEmpty() && temphash.isEmpty())) //while a nickname, or both hashes are missing - { + do { + nickname = config->value("net/nick",tr("Guest")+QString("%1").arg(rand())).toString(); + hash = config->passwordHash(); + temphash = config->tempHash(); + + //if something from login is missing, start dialog loop + if (nickname.isEmpty() || hash.isEmpty()) { //open dialog HWPasswordDialog * pwDialog = new HWPasswordDialog(this); // make the "new account" button dialog open a browser with the registration page @@ -1418,62 +1420,54 @@ if (pwDialog->exec() != QDialog::Accepted) { delete pwDialog; GoBack(); - return -1; + break; } //set nick and pass from the dialog nickname = pwDialog->leNickname->text(); password = pwDialog->lePassword->text(); + bool save = pwDialog->cbSave->isChecked(); + //clean up + delete pwDialog; //check the nickname variable if (nickname.isEmpty()) { int retry = RetryDialog(tr("Hedgewars - Empty nickname"), tr("No nickname supplied.")); GoBack(); - delete pwDialog; if (retry) { if (hwnet->m_private_game) { QStringList list = hwnet->getHost().split(":"); NetConnectServer(list.at(0), list.at(1).toShort()); } else NetConnectOfficialServer(); - } - return -1; + } + break; //loop restart + } else { + //update nickname if it's fine + config->setValue("net/nick", nickname); + config->updNetNick(); } - if (!password.isEmpty()) { + //check the password variable + if (password.isEmpty()) { + config->clearPasswordHash(); + break; + } else { //calculate temphash and set it into config temphash = QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Md5).toHex(); config->setTempHash(temphash); //if user wants to save password - bool save = pwDialog->cbSave->isChecked(); config->setValue("net/savepassword", save); - if (save) // user wants to save password - { + if (save) { + // user wants to save password ui.pageOptions->CBSavePassword->setChecked(true); config->setPasswordHash(temphash); } } - else { - delete pwDialog; - config->setValue("net/nick", nickname); - config->updNetNick(); - config->clearPasswordHash(); - break; - } - - delete pwDialog; + } + } while (nickname.isEmpty() || (hash.isEmpty() && temphash.isEmpty())); //while a nickname, or both hashes are missing - //update nickname - config->setValue("net/nick", nickname); - config->updNetNick(); - - //and all the variables - hash = config->passwordHash(); - temphash = config->tempHash(); - nickname = config->value("net/nick", "").toString(); - } - } return 0; } @@ -1546,7 +1540,7 @@ if (retry) { if (hwnet->m_private_game) { QStringList list = hwnet->getHost().split(":"); - NetConnectServer(list.at(0), list.at(1).toShort()); + NetConnectServer(list.at(0), list.at(1).toUInt()); } else NetConnectOfficialServer(); } diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/main.cpp Wed May 29 22:52:37 2013 +0400 @@ -268,8 +268,13 @@ QString cc = settings.value("misc/locale", QString()).toString(); if (cc.isEmpty()) - cc = HWApplication::keyboardInputLocale().name(); - // QLocale::system().name() returns only "C"... + { + cc = QLocale::system().name(); + + // Fallback to current input locale if "C" locale is returned + if(cc == "C") + cc = HWApplication::keyboardInputLocale().name(); + } // load locale file into translator if (!Translator.load(QString("physfs://Locale/hedgewars_%1").arg(cc))) diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/model/ammoSchemeModel.cpp --- a/QTfrontend/model/ammoSchemeModel.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/model/ammoSchemeModel.cpp Wed May 29 22:52:37 2013 +0400 @@ -194,7 +194,7 @@ << QVariant(false) // place hog 14 << QVariant(true) // shared ammo 15 << QVariant(true) // disable girders 16 - << QVariant(false) // disable land objects 17 + << QVariant(true) // disable land objects 17 << QVariant(false) // AI survival 18 << QVariant(false) // inf. attack 19 << QVariant(true) // reset weps 20 diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/net/newnetclient.cpp Wed May 29 22:52:37 2013 +0400 @@ -425,8 +425,7 @@ { if (nick == mynick) { - if (isChief && !setFlag) ToggleReady(); - else emit setMyReadyStatus(setFlag); + emit setMyReadyStatus(setFlag); } m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag); } diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/res/css/qt.css --- a/QTfrontend/res/css/qt.css Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/res/css/qt.css Wed May 29 22:52:37 2013 +0400 @@ -176,9 +176,15 @@ height: 10px; } +QLabel { +overflow: hidden; +} + QComboBox { border-radius: 10px; padding: 3px; +height: 18px; +overflow: hidden; } QComboBox:pressed{ border-color: white; @@ -326,4 +332,8 @@ TeamSelWidget, #gameStackContainer, #GBoxOptions { border-radius: 10px; -} \ No newline at end of file +} + +PageMultiplayer TeamSelWidget { +min-height: 500px; +} diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/res/xml/tips.xml --- a/QTfrontend/res/xml/tips.xml Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/res/xml/tips.xml Wed May 29 22:52:37 2013 +0400 @@ -46,6 +46,7 @@ <tip>Like Hedgewars? Become a fan on <a href="http://www.facebook.com/Hedgewars">Facebook</a> or follow us on <a href="http://twitter.com/hedgewars">Twitter</a></tip> <tip>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.</tip> <tip>Keep your video card drivers up to date to avoid issues playing the game.</tip> + <tip>Heads or tails? Type '/rnd' in lobby and you'll find out. Also '/rnd rock paper scissors' works!</tip> <tip>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.</tip> <windows-only> <tip>The version of Hedgewars supports <a href="http://www.xfire.com">Xfire</a>. Make sure to add Hedgewars to its game list so your friends can see you playing.</tip> diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pagegamestats.cpp --- a/QTfrontend/ui/page/pagegamestats.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pagegamestats.cpp Wed May 29 22:52:37 2013 +0400 @@ -101,11 +101,22 @@ QLayout * PageGameStats::footerLayoutDefinition() { QHBoxLayout * bottomLayout = new QHBoxLayout(); + + mainNote = new QLabel(this); + mainNote->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + mainNote->setWordWrap(true); + + bottomLayout->addWidget(mainNote, 0); + bottomLayout->setStretch(0,1); - btnRestart = addButton(":/res/Start.png", bottomLayout, 0, true); - btnSave = addButton(":/res/Save.png", bottomLayout, 0, true); + btnRestart = addButton(":/res/Start.png", bottomLayout, 1, true); + btnRestart->setWhatsThis(tr("Play again")); + btnRestart->setFixedWidth(58); + btnRestart->setFixedHeight(81); + btnRestart->setStyleSheet("QPushButton{margin-top:24px}"); + btnSave = addButton(":/res/Save.png", bottomLayout, 2, true); + btnSave->setWhatsThis(tr("Save")); btnSave->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); - bottomLayout->setAlignment(btnSave, Qt::AlignRight | Qt::AlignBottom); return bottomLayout; } diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pagegamestats.h --- a/QTfrontend/ui/page/pagegamestats.h Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pagegamestats.h Wed May 29 22:52:37 2013 +0400 @@ -45,6 +45,7 @@ QPushButton *btnSave; QPushButton *btnRestart; + QLabel *mainNote; QLabel *labelGameStats; QLabel *labelGameWin; QLabel *labelGameRank; diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pagemain.cpp --- a/QTfrontend/ui/page/pagemain.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pagemain.cpp Wed May 29 22:52:37 2013 +0400 @@ -120,8 +120,8 @@ void PageMain::connectSignals() { connect(BtnNet, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice())); - connect(BtnNetLocal, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice())); - connect(BtnNetOfficial, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice())); + //connect(BtnNetLocal, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice())); + //connect(BtnNetOfficial, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice())); // TODO: add signal-forwarding required by (currently missing) encapsulation } @@ -189,3 +189,10 @@ if (visible) BtnNet->setIcon(originalNetworkIcon); else BtnNet->setIcon(disabledNetworkIcon); } + +void PageMain::resetNetworkChoice() +{ + BtnNetLocal->setVisible(false); + BtnNetOfficial->setVisible(false); + BtnNet->setIcon(originalNetworkIcon); +} diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pagemain.h --- a/QTfrontend/ui/page/pagemain.h Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pagemain.h Wed May 29 22:52:37 2013 +0400 @@ -29,6 +29,7 @@ public: PageMain(QWidget * parent = 0); + void resetNetworkChoice(); QPushButton * BtnSinglePlayer; QPushButton * BtnNet; diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pageoptions.cpp --- a/QTfrontend/ui/page/pageoptions.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pageoptions.cpp Wed May 29 22:52:37 2013 +0400 @@ -587,11 +587,12 @@ CBLanguage = new QComboBox(groupMisc); groupMisc->layout()->addWidget(CBLanguage, 0, 1); QStringList locs = DataManager::instance().entryList("Locale", QDir::Files, QStringList("hedgewars_*.qm")); - CBLanguage->addItem(QComboBox::tr("(System default)"), QString("")); + CBLanguage->addItem(QComboBox::tr("(System default)"), QString()); for(int i = 0; i < locs.count(); i++) { - QLocale loc(locs[i].replace(QRegExp("hedgewars_(.*)\\.qm"), "\\1")); - CBLanguage->addItem(QLocale::languageToString(loc.language()) + " (" + QLocale::countryToString(loc.country()) + ")", loc.name()); + QString lname = locs[i].replace(QRegExp("hedgewars_(.*)\\.qm"), "\\1"); + QLocale loc(lname); + CBLanguage->addItem(QLocale::languageToString(loc.language()) + " (" + QLocale::countryToString(loc.country()) + ")", lname); } QLabel *restartNoticeLabel = new QLabel(groupMisc); diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pageroomslist.cpp --- a/QTfrontend/ui/page/pageroomslist.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pageroomslist.cpp Wed May 29 22:52:37 2013 +0400 @@ -28,6 +28,7 @@ #include <QGroupBox> #include <QMenu> #include <QDebug> +#include <QSplitter> #include <QSortFilterProxyModel> @@ -107,7 +108,18 @@ topLayout->setRowStretch(1, 0); topLayout->setColumnStretch(3, 1); + // Rooms list and chat with splitter + m_splitter = new QSplitter(); + m_splitter->setChildrenCollapsible(false); + pageLayout->addWidget(m_splitter, 100); + // Room list + QWidget * roomsListWidget = new QWidget(this); + m_splitter->setOrientation(Qt::Vertical); + m_splitter->addWidget(roomsListWidget); + + QVBoxLayout * roomsLayout = new QVBoxLayout(roomsListWidget); + roomsLayout->setMargin(0); roomsList = new RoomTableView(this); roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -118,7 +130,7 @@ roomsList->setSelectionMode(QAbstractItemView::SingleSelection); roomsList->setStyleSheet("QTableView { border-top-left-radius: 0px; }"); roomsList->setFocusPolicy(Qt::NoFocus); - pageLayout->addWidget(roomsList, 200); + roomsLayout->addWidget(roomsList, 200); // Room filters container @@ -126,9 +138,9 @@ filtersContainer->setMaximumWidth(800); filtersContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - pageLayout->addSpacing(7); - pageLayout->addWidget(filtersContainer, 0, Qt::AlignHCenter); - pageLayout->addSpacing(7); + roomsLayout->addSpacing(7); + roomsLayout->addWidget(filtersContainer, 0, Qt::AlignHCenter); + roomsLayout->addSpacing(7); QHBoxLayout * filterLayout = new QHBoxLayout(filtersContainer); filterLayout->setSpacing(0); @@ -194,7 +206,7 @@ // Lobby chat chatWidget = new HWChatWidget(this, false); - pageLayout->addWidget(chatWidget, 350); + m_splitter->addWidget(chatWidget); CBRules->addItem(QComboBox::tr("Any")); @@ -251,6 +263,8 @@ void PageRoomsList::roomSelectionChanged(const QModelIndex & current, const QModelIndex & previous) { + Q_UNUSED(previous); + BtnJoin->setEnabled(current.isValid()); } @@ -732,14 +746,24 @@ bool PageRoomsList::restoreHeaderState() { - if (!m_gameSettings->contains("frontend/roomslist_header")) - return false; - return roomsList->horizontalHeader()->restoreState(QByteArray::fromBase64( - (m_gameSettings->value("frontend/roomslist_header").toByteArray()))); + if (m_gameSettings->contains("frontend/roomslist_splitter")) + { + m_splitter->restoreState(QByteArray::fromBase64( + (m_gameSettings->value("frontend/roomslist_splitter").toByteArray()))); + } + + if (m_gameSettings->contains("frontend/roomslist_header")) + { + return roomsList->horizontalHeader()->restoreState(QByteArray::fromBase64( + (m_gameSettings->value("frontend/roomslist_header").toByteArray()))); + } else return false; } void PageRoomsList::saveHeaderState() { m_gameSettings->setValue("frontend/roomslist_header", QString(roomsList->horizontalHeader()->saveState().toBase64())); + + m_gameSettings->setValue("frontend/roomslist_splitter", + QString(m_splitter->saveState().toBase64())); } diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/page/pageroomslist.h --- a/QTfrontend/ui/page/pageroomslist.h Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/page/pageroomslist.h Wed May 29 22:52:37 2013 +0400 @@ -27,6 +27,7 @@ class QTableView; class RoomsListModel; class QSortFilterProxyModel; +class QSplitter; class RoomTableView : public QTableView { @@ -101,6 +102,7 @@ QSortFilterProxyModel * weaponsFilteredModel; QAction * showGamesInLobby; QAction * showGamesInProgress; + QSplitter * m_splitter; AmmoSchemeModel * ammoSchemeModel; diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/widget/feedbackdialog.cpp --- a/QTfrontend/ui/widget/feedbackdialog.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/widget/feedbackdialog.cpp Wed May 29 22:52:37 2013 +0400 @@ -286,7 +286,7 @@ delete process; #endif -#if defined(__i386__) || defined(__x86_64__) +#if (!defined(Q_WS_MACX) && defined(__i386__)) || defined(__x86_64__) // cpu info quint32 registers[4]; quint32 i; diff -r e095e3023682 -r 7f04ad2cda54 QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Sun Apr 21 01:36:08 2013 +0200 +++ b/QTfrontend/ui/widget/mapContainer.cpp Wed May 29 22:52:37 2013 +0400 @@ -801,7 +801,7 @@ btnTheme->setFixedHeight(64); btnTheme->setIconSize(iconSize); btnTheme->setIcon(icon); - btnTheme->setText(tr("Theme: ") + current.data(Qt::DisplayRole).toString()); + btnTheme->setText(tr("Theme: %1").arg(current.data(Qt::DisplayRole).toString())); updateThemeButtonSize(); } @@ -932,5 +932,5 @@ m_theme = name; btnTheme->setIcon(QIcon()); - btnTheme->setText(tr("Theme: ") + name); + btnTheme->setText(tr("Theme: %1").arg(name)); } diff -r e095e3023682 -r 7f04ad2cda54 gameServer/Actions.hs --- a/gameServer/Actions.hs Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/Actions.hs Wed May 29 22:52:37 2013 +0400 @@ -20,6 +20,7 @@ import Control.Exception import System.Process import Network.Socket +import System.Random ----------------------------- #if defined(OFFICIAL_SERVER) import OfficialServer.GameReplayStore @@ -206,8 +207,9 @@ rnc <- gets roomsClients newMasterId <- liftM (\ids -> fromMaybe (last . filter (/= ci) $ ids) delegateId) . io $ roomClientsIndicesM rnc ri newMaster <- io $ client'sM rnc id newMasterId + oldMasterId <- io $ room'sM rnc masterID ri + oldMaster <- io $ client'sM rnc id oldMasterId oldRoomName <- io $ room'sM rnc name ri - oldMaster <- client's nick kicked <- client's isKickedFromServer thisRoomChans <- liftM (map sendChan) $ roomClientsS ri let newRoomName = if (proto < 42) || kicked then nick newMaster else oldRoomName @@ -216,12 +218,13 @@ , name = newRoomName , isRestrictedJoins = False , isRestrictedTeams = False - , isRegisteredOnly = False - , readyPlayers = if isReady newMaster then readyPlayers r else readyPlayers r + 1}) - , ModifyClient2 newMasterId (\c -> c{isMaster = True, isReady = True}) + , isRegisteredOnly = False} + ) + , ModifyClient2 newMasterId (\c -> c{isMaster = True}) + , ModifyClient2 oldMasterId (\c -> c{isMaster = False}) , AnswerClients [sendChan newMaster] ["ROOM_CONTROL_ACCESS", "1"] - , AnswerClients thisRoomChans ["CLIENT_FLAGS", "-h", oldMaster] - , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+hr", nick newMaster] + , AnswerClients thisRoomChans ["CLIENT_FLAGS", "-h", nick oldMaster] + , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+h", nick newMaster] ] newRoom' <- io $ room'sM rnc id ri @@ -381,7 +384,7 @@ if p < 38 then processAction $ ByeClient $ loc "Nickname is already in use" else - processAction $ NoticeMessage NickAlreadyInUse + mapM_ processAction [NoticeMessage NickAlreadyInUse, ModifyClient $ \c -> c{nick = B.empty}] else do db <- gets (dbQueries . serverInfo) @@ -615,6 +618,12 @@ processAction $ Warning versionsStats +processAction (Random chans items) = do + let i = if null items then ["heads", "tails"] else items + n <- io $ randomRIO (0, length i - 1) + processAction $ AnswerClients chans ["CHAT", "[random]", i !! n] + + #if defined(OFFICIAL_SERVER) processAction SaveReplay = do ri <- clientRoomA diff -r e095e3023682 -r 7f04ad2cda54 gameServer/CoreTypes.hs --- a/gameServer/CoreTypes.hs Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/CoreTypes.hs Wed May 29 22:52:37 2013 +0400 @@ -75,6 +75,7 @@ | CheckRecord | CheckFailed B.ByteString | CheckSuccess [B.ByteString] + | Random [ClientChan] [B.ByteString] type ClientChan = Chan [B.ByteString] diff -r e095e3023682 -r 7f04ad2cda54 gameServer/HWProtoCore.hs --- a/gameServer/HWProtoCore.hs Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/HWProtoCore.hs Wed May 29 22:52:37 2013 +0400 @@ -43,12 +43,14 @@ where h ["DELEGATE", n] = handleCmd ["DELEGATE", n] h ["STATS"] = handleCmd ["STATS"] - h ["PART", msg] = handleCmd ["PART", msg] - h ["QUIT", msg] = handleCmd ["QUIT", msg] - h ["GLOBAL", msg] = do + h ("PART":m:ms) = handleCmd ["PART", B.unwords $ m:ms] + h ("QUIT":m:ms) = handleCmd ["QUIT", B.unwords $ m:ms] + h ("RND":rs) = handleCmd ("RND":rs) + h ("GLOBAL":m:ms) = do + cl <- thisClient rnc <- liftM snd ask let chans = map (sendChan . client rnc) $ allClients rnc - return [AnswerClients chans ["CHAT", "[global notice]", msg]] + return [AnswerClients chans ["CHAT", "[global notice]", B.unwords $ m:ms] | isAdministrator cl] h c = return [Warning . B.concat . L.intersperse " " $ "Unknown cmd" : c] handleCmd cmd = do @@ -72,9 +74,9 @@ let cl = rnc `client` fromJust maybeClientId let roomId = clientRoom rnc clientId let clRoom = room rnc roomId - let roomMasterSign = if isMaster cl then "@" else "" + let roomMasterSign = if isMaster cl then "+" else "" let adminSign = if isAdministrator cl then "@" else "" - let rInfo = if roomId /= lobbyId then B.concat [roomMasterSign, "room ", name clRoom] else adminSign `B.append` "lobby" + let rInfo = if roomId /= lobbyId then B.concat [adminSign, roomMasterSign, "room ", name clRoom] else adminSign `B.append` "lobby" let roomStatus = if isJust $ gameInfo clRoom then if teamsInGame cl > 0 then "(playing)" else "(spectating)" else diff -r e095e3023682 -r 7f04ad2cda54 gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/HWProtoInRoomState.hs Wed May 29 22:52:37 2013 +0400 @@ -169,17 +169,15 @@ handleCmd_inRoom ["TOGGLE_READY"] = do cl <- thisClient chans <- roomClientsChans - if isMaster cl then - return [] - else - return [ - ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady cl then -1 else 1)}), - ModifyClient (\c -> c{isReady = not $ isReady cl}), - AnswerClients chans $ if clientProto cl < 38 then - [if isReady cl then "NOT_READY" else "READY", nick cl] - else - ["CLIENT_FLAGS", if isReady cl then "-r" else "+r", nick cl] - ] + + return [ + ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady cl then -1 else 1)}), + ModifyClient (\c -> c{isReady = not $ isReady cl}), + AnswerClients chans $ if clientProto cl < 38 then + [if isReady cl then "NOT_READY" else "READY", nick cl] + else + ["CLIENT_FLAGS", if isReady cl then "-r" else "+r", nick cl] + ] handleCmd_inRoom ["START_GAME"] = do @@ -350,6 +348,10 @@ else return [] +handleCmd_inRoom ("RND":rs) = do + n <- clientNick + s <- roomClientsChans + return [AnswerClients s ["CHAT", n, B.unwords $ "/rnd" : rs], Random s rs] handleCmd_inRoom ["LIST"] = return [] -- for old clients (<= 0.9.17) diff -r e095e3023682 -r 7f04ad2cda54 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/HWProtoLobbyState.hs Wed May 29 22:52:37 2013 +0400 @@ -144,6 +144,11 @@ else liftM ((:) (AnswerClients [clChan] ["JOINING", roomName])) $ handleCmd_lobby ["JOIN_ROOM", roomName] + +handleCmd_lobby ("RND":rs) = do + c <- liftM sendChan thisClient + return [Random [c] rs] + --------------------------- -- Administrator's stuff -- diff -r e095e3023682 -r 7f04ad2cda54 gameServer/hedgewars-server.cabal --- a/gameServer/hedgewars-server.cabal Sun Apr 21 01:36:08 2013 +0200 +++ b/gameServer/hedgewars-server.cabal Wed May 29 22:52:37 2013 +0400 @@ -22,6 +22,7 @@ bytestring, bytestring-show, network >= 2.3, + random, time, mtl >= 2, dataenc, diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/ArgParsers.inc --- a/hedgewars/ArgParsers.inc Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/ArgParsers.inc Wed May 29 22:52:37 2013 +0400 @@ -189,12 +189,12 @@ {--prefix} 0 : PathPrefix := getStringParameter (arg, paramIndex, parseParameter); {--user-prefix} 1 : UserPathPrefix := getStringParameter (arg, paramIndex, parseParameter); {--locale} 2 : cLocaleFName := getStringParameter (arg, paramIndex, parseParameter); - {--fullscreen-width} 3 : cFullscreenWidth := getLongIntParameter(arg, paramIndex, parseParameter); - {--fullscreen-height} 4 : cFullscreenHeight := getLongIntParameter(arg, paramIndex, parseParameter); + {--fullscreen-width} 3 : cFullscreenWidth := max(getLongIntParameter(arg, paramIndex, parseParameter), cMinScreenWidth); + {--fullscreen-height} 4 : cFullscreenHeight := max(getLongIntParameter(arg, paramIndex, parseParameter), cMinScreenHeight); {--width} 5 : cWindowedWidth := max(2 * (getLongIntParameter(arg, paramIndex, parseParameter) div 2), cMinScreenWidth); {--height} 6 : cWindowedHeight := max(2 * (getLongIntParameter(arg, paramIndex, parseParameter) div 2), cMinScreenHeight); {--frame-interval} 7 : cTimerInterval := getLongIntParameter(arg, paramIndex, parseParameter); - {--volume} 8 : SetVolume ( getLongIntParameter(arg, paramIndex, parseParameter) ); + {--volume} 8 : SetVolume ( max(getLongIntParameter(arg, paramIndex, parseParameter), 0) ); {--nomusic} 9 : SetMusic ( false ); {--nosound} 10 : SetSound ( false ); {--fullscreen} 11 : cFullScreen := true; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/GSHandlers.inc Wed May 29 22:52:37 2013 +0400 @@ -178,6 +178,12 @@ if Gear^.dY.Round > 2 then Gear^.dY.QWordValue:= 8589934592; + if (Gear^.State and gstSubmersible <> 0) and (hwRound(Gear^.Y) > cWaterLine) then + begin + Gear^.dX:= Gear^.dX * _0_999; + Gear^.dY:= Gear^.dY * _0_999 + end; + Gear^.State := Gear^.State and (not gstCollision); collV := 0; collH := 0; @@ -185,6 +191,7 @@ tdY := Gear^.dY; + // might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips) if (hwRound(Gear^.X) < min(LAND_WIDTH div -2, -2048)) or (hwRound(Gear^.X) > max(LAND_WIDTH * 3 div 2, 6144)) then @@ -491,7 +498,11 @@ or (Gear^.Kind = gtBall) then CalcRotationDirAngle(Gear) else if (GameTicks and $1F) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + begin + if hwRound(Gear^.Y) > cWaterLine then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) + else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + end end; //////////////////////////////////////////////////////////////////////////////// @@ -508,24 +519,31 @@ exit end; if (GameTicks and $3F) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); + begin + if hwRound(Gear^.Y) > cWaterLine then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) + else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + end end; //////////////////////////////////////////////////////////////////////////////// procedure doStepSnowball(Gear: PGear); var kick, i: LongInt; particle: PVisualGear; + gdX, gdY: hwFloat; begin AllInactive := false; if (GameFlags and gfMoreWind) = 0 then Gear^.dX := Gear^.dX + cWindSpeed; + gdX := Gear^.dX; + gdY := Gear^.dY; doStepFallingGear(Gear); CalcRotationDirAngle(Gear); if (Gear^.State and gstCollision) <> 0 then begin - kick:= hwRound((hwAbs(Gear^.dX)+hwAbs(Gear^.dY)) * _20); - Gear^.dY.isNegative:= not Gear^.dY.isNegative; - Gear^.dX.isNegative:= not Gear^.dX.isNegative; + kick:= hwRound((hwAbs(gdX)+hwAbs(gdY)) * _20); + Gear^.dX:= gdX; + Gear^.dY:= gdY; AmmoShove(Gear, 0, kick); for i:= 15 + kick div 10 downto 0 do begin @@ -1404,7 +1422,9 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepMine(Gear: PGear); var vg: PVisualGear; + dxdy: hwFloat; begin + if Gear^.Health = 0 then dxdy:= hwAbs(Gear^.dX)+hwAbs(Gear^.dY); if (Gear^.State and gstMoving) <> 0 then begin DeleteCI(Gear); @@ -1422,14 +1442,8 @@ doStepFallingGear(Gear); if (Gear^.Health = 0) then begin - if not Gear^.dY.isNegative and (Gear^.dY > _0_2) and (TestCollisionYwithGear(Gear, 1) <> 0) then - inc(Gear^.Damage, hwRound(Gear^.dY * _70)) - else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1) then - inc(Gear^.Damage, hwRound(Gear^.dX * _70)) - else if Gear^.dY.isNegative and (Gear^.dY < -_0_2) and (TestCollisionYwithGear(Gear, -1) <> 0) then - inc(Gear^.Damage, hwRound(Gear^.dY * -_70)) - else if Gear^.dX.isNegative and (Gear^.dX < -_0_2) and TestCollisionXwithGear(Gear, -1) then - inc(Gear^.Damage, hwRound(Gear^.dX * -_70)); + if (dxdy > _0_4) and (Gear^.State and gstCollision <> 0) then + inc(Gear^.Damage, hwRound(dxdy * _50)); if ((GameTicks and $FF) = 0) and (Gear^.Damage > random(30)) then begin @@ -1563,46 +1577,38 @@ /////////////////////////////////////////////////////////////////////////////// -(* -TODO -Increase damage as barrel smokes? -Try tweaking friction some more -*) procedure doStepRollingBarrel(Gear: PGear); var i: LongInt; particle: PVisualGear; + dxdy: hwFloat; begin if (Gear^.dY.QWordValue = 0) and (Gear^.dY.QWordValue = 0) and (TestCollisionYwithGear(Gear, 1) = 0) then SetLittle(Gear^.dY); Gear^.State := Gear^.State or gstAnimation; + if Gear^.Health < cBarrelHealth then Gear^.State:= Gear^.State and not gstFrozen; if ((Gear^.dX.QWordValue <> 0) or (Gear^.dY.QWordValue <> 0)) then begin DeleteCI(Gear); AllInactive := false; - if not Gear^.dY.isNegative and (Gear^.dY > _0_2) and (TestCollisionYwithGear(Gear, 1) <> 0) then + dxdy:= hwAbs(Gear^.dX)+hwAbs(Gear^.dY); + doStepFallingGear(Gear); + if (Gear^.State and gstCollision <> 0) and(dxdy > _0_4) then begin - Gear^.State := Gear^.State or gsttmpFlag; - inc(Gear^.Damage, hwRound(Gear^.dY * _70)); - for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do + if (TestCollisionYwithGear(Gear, 1) <> 0) then begin - particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,vgtDust); - if particle <> nil then - particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) - end - end - else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1) then - inc(Gear^.Damage, hwRound(Gear^.dX * _70)) - - else if Gear^.dY.isNegative and (Gear^.dY < -_0_2) and (TestCollisionYwithGear(Gear, -1) <> 0) then - inc(Gear^.Damage, hwRound(Gear^.dY * -_70)) - - else if Gear^.dX.isNegative and (Gear^.dX < -_0_2) and TestCollisionXwithGear(Gear, -1) then - inc(Gear^.Damage, hwRound(Gear^.dX * -_70)); - - doStepFallingGear(Gear); + Gear^.State := Gear^.State or gsttmpFlag; + for i:= min(12, hwRound(dxdy*_10)) downto 0 do + begin + particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,vgtDust); + if particle <> nil then + particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) + end + end; + inc(Gear^.Damage, hwRound(dxdy * _50)) + end; CalcRotationDirAngle(Gear); //CheckGearDrowning(Gear) end @@ -1641,23 +1647,19 @@ dec(Gear^.Health, Gear^.Damage); Gear^.Damage := 0; if Gear^.Health <= 0 then - Gear^.doStep := @doStepCase; - // Hand off to doStepCase for the explosion - + doStepCase(Gear); end; procedure doStepCase(Gear: PGear); var i, x, y: LongInt; k: TGearType; - exBoom: boolean; dX, dY: HWFloat; hog: PHedgehog; sparkles: PVisualGear; gi: PGear; begin k := Gear^.Kind; - exBoom := false; if (Gear^.Message and gmDestroy) > 0 then begin @@ -1670,22 +1672,54 @@ Gear^.Message := Gear^.Message and (not (gmLJump or gmHJump)); exit end; + if (k = gtExplosives) and (Gear^.Health < cBarrelHealth) then Gear^.State:= Gear^.State and not gstFrozen; + + if ((k <> gtExplosives) and (Gear^.Damage > 0)) or ((k = gtExplosives) and (Gear^.Health<=0)) then + begin + x := hwRound(Gear^.X); + y := hwRound(Gear^.Y); + hog:= Gear^.Hedgehog; + + DeleteGear(Gear); + // <-- delete gear! + + if k = gtCase then + begin + doMakeExplosion(x, y, 25, hog, EXPLAutoSound); + for i:= 0 to 63 do + AddGear(x, y, gtFlame, 0, _0, _0, 0); + end + else if k = gtExplosives then + begin + doMakeExplosion(x, y, 75, hog, EXPLAutoSound); + for i:= 0 to 31 do + begin + dX := AngleCos(i * 64) * _0_5 * (getrandomf + _1); + dY := AngleSin(i * 64) * _0_5 * (getrandomf + _1); + AddGear(x, y, gtFlame, 0, dX, dY, 0); + AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); + end + end; + exit + end; if k = gtExplosives then begin //if V > _0_03 then Gear^.State:= Gear^.State or gstAnimation; if (hwAbs(Gear^.dX) > _0_15) or ((hwAbs(Gear^.dY) > _0_15) and (hwAbs(Gear^.dX) > _0_02)) then + begin Gear^.doStep := @doStepRollingBarrel; - - if (Gear^.Health > 0) and ((Gear^.Health * 100 div cBarrelHealth) < random(90)) and ((GameTicks and $FF) = 0) then + exit; + end + else Gear^.dX:= _0; + + if ((Gear^.Health * 100 div cBarrelHealth) < random(90)) and ((GameTicks and $FF) = 0) then if (cBarrelHealth div Gear^.Health) > 2 then AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmoke) - else - AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmokeWhite); + else + AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmokeWhite); dec(Gear^.Health, Gear^.Damage); Gear^.Damage := 0; - if Gear^.Health <= 0 then - exBoom := true; end else begin @@ -1737,34 +1771,6 @@ end end; - if (Gear^.Damage > 0) or exBoom then - begin - x := hwRound(Gear^.X); - y := hwRound(Gear^.Y); - hog:= Gear^.Hedgehog; - - DeleteGear(Gear); - // <-- delete gear! - - if k = gtCase then - begin - doMakeExplosion(x, y, 25, hog, EXPLAutoSound); - for i:= 0 to 63 do - AddGear(x, y, gtFlame, 0, _0, _0, 0); - end - else if k = gtExplosives then - begin - doMakeExplosion(x, y, 75, hog, EXPLAutoSound); - for i:= 0 to 31 do - begin - dX := AngleCos(i * 64) * _0_5 * (getrandomf + _1); - dY := AngleSin(i * 64) * _0_5 * (getrandomf + _1); - AddGear(x, y, gtFlame, 0, dX, dY, 0); - AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); - end - end; - exit - end; if (Gear^.dY.QWordValue <> 0) or (TestCollisionYwithGear(Gear, 1) = 0) then @@ -2416,25 +2422,24 @@ var dX, dY, gdX, gdY: hwFloat; i: LongInt; - dxn, dyn: boolean; begin AllInactive := false; - dxn := Gear^.dX.isNegative; - dyn := Gear^.dY.isNegative; + gdX := Gear^.dX; + gdY := Gear^.dY; doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - gdX := Gear^.dX; - gdY := Gear^.dY; doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound); - - gdX.isNegative := not dxn; - gdY.isNegative := not dyn; + gdX.isNegative := not gdX.isNegative; + gdY.isNegative := not gdY.isNegative; + gdX:= gdX*_0_2; + gdY:= gdY*_0_2; + for i:= 0 to 4 do begin - dX := gdX + (GetRandomf - _0_5) * _0_03; - dY := gdY + (GetRandomf - _0_5) * _0_03; + dX := gdX + rndSign(GetRandomf) * _0_03; + dY := gdY + rndSign(GetRandomf) * _0_03; AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); end; @@ -2443,7 +2448,11 @@ end; if (GameTicks and $3F) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + begin + if hwRound(Gear^.Y) > cWaterLine then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) + else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + end end; //////////////////////////////////////////////////////////////////////////////// @@ -2943,7 +2952,11 @@ doStepFallingGear(Gear); if (GameTicks and $3F) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); + begin + if hwRound(Gear^.Y) > cWaterLine then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) + else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) + end; if ((Gear^.State and gstCollision) <> 0) then begin @@ -3193,10 +3206,11 @@ move:= _0_02; fuel:= 5; end;*) - - if Gear^.Health > 0 then - begin - if (HHGear^.Message and gmUp) <> 0 then + if HHGear^.Message and gmPrecise <> 0 then + HedgehogChAngle(HHGear) + else if Gear^.Health > 0 then + begin + if HHGear^.Message and gmUp <> 0 then begin if (not HHGear^.dY.isNegative) or (HHGear^.Y > -_256) then begin @@ -3263,10 +3277,12 @@ Gear^.Tex := RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(i) + '%', cWhiteColor, fntSmall) end; - if HHGear^.Message and (gmAttack or gmUp or gmPrecise or gmLeft or gmRight) <> 0 then + if (HHGear^.Message and (gmAttack or gmUp or gmLeft or gmRight) <> 0) and + (HHGear^.Message and gmPrecise = 0) then Gear^.State := Gear^.State and (not gsttmpFlag); - HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight)); + if HHGear^.Message and gmPrecise = 0 then + HHGear^.Message := HHGear^.Message and (not (gmUp or gmLeft or gmRight)); HHGear^.State := HHGear^.State or gstMoving; Gear^.X := HHGear^.X; @@ -3283,7 +3299,7 @@ if // (Gear^.Health = 0) (HHGear^.Damage <> 0) //or CheckGearDrowning(HHGear) - or (cWaterLine + 512 < hwRound(HHGear^.Y)) + or (cWaterLine + cVisibleWater * 4 < hwRound(HHGear^.Y)) or (TurnTimeLeft = 0) // allow brief ground touches - to be fair on this, might need another counter or (((GameTicks and $1FF) = 0) and (not HHGear^.dY.isNegative) and (TestCollisionYwithGear(HHGear, 1) <> 0)) @@ -5074,7 +5090,18 @@ Gear^.Tex := RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(t) + '%', cWhiteColor, fntSmall) end; - if GameTicks mod 10 = 0 then dec(Gear^.Health); + if Gear^.Message and (gmUp or gmDown) <> 0 then + begin + StopSoundChan(Gear^.SoundChannel); + Gear^.SoundChannel:= -1; + if GameTicks mod 40 = 0 then dec(Gear^.Health) + end + else + begin + if Gear^.SoundChannel = -1 then + Gear^.SoundChannel := LoopSound(sndIceBeam); + if GameTicks mod 10 = 0 then dec(Gear^.Health) + end end; @@ -5091,17 +5118,6 @@ LastDamage:= nil; X:= Hedgehog^.Gear^.X; Y:= Hedgehog^.Gear^.Y; - //unfreeze all semifrozen hogs - make this generic hog cleanup -(* - iter := GearsList; - while iter <> nil do - begin - if (iter^.Kind = gtHedgehog) and - (iter^.Hedgehog^.Effects[heFrozen] and $FF = 0) then - iter^.Hedgehog^.Effects[heFrozen]:= 0; - iter:= iter^.NextGear - end -*) end; end; @@ -5116,20 +5132,22 @@ const iceRadius = 32; const iceHeight = 40; var - HHGear: PGear; + HHGear, iter: PGear; landRect: TSDL_Rect; ndX, ndY: hwFloat; - i, t, gX, gY: LongInt; + i, j, t, gX, gY: LongInt; hogs: PGearArrayS; + vg: PVisualGear; begin HHGear := Gear^.Hedgehog^.Gear; - if (Gear^.Message and gmAttack <> 0) or (Gear^.Health = 0) or (HHGear = nil) or (HHGear^.Damage <> 0) then - begin + if (Gear^.Message and gmAttack <> 0) or (Gear^.Health = 0) or (HHGear = nil) or (HHGear^.Damage <> 0) or (HHGear^.dX.QWordValue > 4294967) then + begin + StopSoundChan(Gear^.SoundChannel); DeleteGear(Gear); AfterAttack; exit - end - else if Gear^.Message and (gmUp or gmDown) = 0 then updateFuel(Gear); + end; + updateFuel(Gear); with Gear^ do begin @@ -5153,7 +5171,7 @@ if Target.X <> NoPointX then begin - CheckCollisionWithLand(Gear); + CheckCollision(Gear); if (State and gstCollision) <> 0 then begin if Timer = iceWaitCollision then @@ -5185,6 +5203,49 @@ landRect.w := min(2*iceRadius, LAND_WIDTH - landRect.x - 1); landRect.h := min(2*iceRadius, LAND_HEIGHT - landRect.y - 1); UpdateLandTexture(landRect.x, landRect.w, landRect.y, landRect.h, true); + + // Freeze nearby mines/explosives/cases too + iter := GearsList; + while iter <> nil do + begin + if (iter^.State and gstFrozen = 0) and + ((iter^.Kind = gtExplosives) or (iter^.Kind = gtCase) or (iter^.Kind = gtMine)) and + (abs(iter^.X.Round-target.x)+abs(iter^.Y.Round-target.y)+2<2*iceRadius) and (Distance(iter^.X-int2hwFloat(target.x),iter^.Y-int2hwFloat(target.y))<int2hwFloat(iceRadius*2)) then + begin + for t:= 0 to 5 do + begin + vg:= AddVisualGear(hwRound(iter^.X)+random(4)-8, hwRound(iter^.Y)+random(8), vgtDust, 1); + if vg <> nil then + begin + i:= random(100) + 155; + vg^.Tint:= i shl 24 or i shl 16 or $FF shl 8 or Longword(random(200) + 55); + vg^.Angle:= random(360); + vg^.dx:= 0.001 * random(80); + vg^.dy:= 0.001 * random(80) + end + end; + PlaySound(sndHogFreeze); + iter^.State:= iter^.State or gstFrozen; + if iter^.Kind = gtMine then // dud mine block + begin + vg:= AddVisualGear(hwRound(iter^.X) - 4 + Random(8), hwRound(iter^.Y) - 4 - Random(4), vgtSmoke); + if vg <> nil then + vg^.Scale:= 0.5; + PlaySound(sndVaporize); + iter^.Health := 0; + iter^.Damage := 0; + iter^.State := iter^.State and (not gstAttacking) + end + else if iter^.Kind = gtCase then + begin + DeleteCI(iter); + AddGearCI(iter) + end + else // gtExplosives + iter^.Health:= iter^.Health + cBarrelHealth + end; + iter:= iter^.NextGear + end; // FillRoundInLandWithIce(Target.X, Target.Y, iceRadius); SetAllHHToActive; @@ -5193,10 +5254,26 @@ if (Timer = iceCollideWithWater) and ((GameTicks - Power) > groundFreezingTime) then begin + PlaySound(sndHogFreeze); DrawIceBreak(Target.X, cWaterLine - iceHeight, iceRadius, iceHeight); SetAllHHToActive; Timer := iceWaitCollision; end; +(* + Any ideas for something that would look good here? + if (Target.X <> NoPointX) and ((Timer = iceCollideWithGround) or (Timer = iceCollideWithWater)) and (GameTicks mod max((groundFreezingTime-((GameTicks - Power)*2)),2) = 0) then //and CheckLandValue(Target.X, Target.Y, lfIce) then + begin + vg:= AddVisualGear(Target.X+random(20)-10, Target.Y+random(40)-10, vgtDust, 1); + if vg <> nil then + begin + i:= random(100) + 155; + vg^.Tint:= IceColor or $FF; + vg^.Angle:= random(360); + vg^.dx:= 0.001 * random(80); + vg^.dy:= 0.001 * random(80) + end + end; +*) // freeze nearby hogs hogs := GearsNear(int2hwFloat(Target.X), int2hwFloat(Target.Y), gtHedgehog, Gear^.Radius*2); @@ -5209,7 +5286,10 @@ if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1 else if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] = 256 then - hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 200000;//cHedgehogTurnTime + cReadyDelay + begin + hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 200000-1;//cHedgehogTurnTime + cReadyDelay + PlaySound(sndHogFreeze); + end; end; inc(Pos) end @@ -5222,14 +5302,16 @@ X:= HHGear^.X; Y:= HHGear^.Y end; - {if (gX > max(LAND_WIDTH,4096)*2) or + if (gX > max(LAND_WIDTH,4096)*2) or (gX < -max(LAND_WIDTH,4096)) or (gY < -max(LAND_HEIGHT,4096)) or (gY > max(LAND_HEIGHT,4096)+512) then - begin - X:= HHGear^.X; - Y:= HHGear^.Y - end} + begin + //X:= HHGear^.X; + //Y:= HHGear^.Y + Target.X:= gX; + Target.Y:= gY; + end end end; end; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/hwengine.pas Wed May 29 22:52:37 2013 +0400 @@ -93,13 +93,7 @@ ScriptCall('onGameStart'); GameState:= gsGame; end; - gsConfirm, gsGame: - begin - if not cOnlyStats then DrawWorld(Lag); - DoGameTick(Lag); - if not cOnlyStats then ProcessVisualGears(Lag); - end; - gsChat: + gsConfirm, gsGame, gsChat: begin if not cOnlyStats then DrawWorld(Lag); DoGameTick(Lag); @@ -168,10 +162,10 @@ // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 KeyPressChat(SDL_GetKeyFromScancode(event.key.keysym.sym), event.key.keysym.sym); //TODO correct for keymodifiers end - else - ProcessKey(event.key); + else + if GameState >= gsGame then ProcessKey(event.key); SDL_KEYUP: - if GameState <> gsChat then + if (GameState <> gsChat) and (GameState >= gsGame) then ProcessKey(event.key); SDL_WINDOWEVENT: @@ -213,22 +207,19 @@ if GameState = gsChat then KeyPressChat(event.key.keysym.unicode, event.key.keysym.sym) else - ProcessKey(event.key); + if GameState >= gsGame then ProcessKey(event.key); SDL_KEYUP: - if GameState <> gsChat then + if (GameState <> gsChat) and (GameState >= gsGame) then ProcessKey(event.key); SDL_MOUSEBUTTONDOWN: if GameState = gsConfirm then - begin - resetPosition(); - ParseCommand('quit', true); - end + ParseCommand('quit', true) else - ProcessMouse(event.button, true); + if (GameState >= gsGame) then ProcessMouse(event.button, true); SDL_MOUSEBUTTONUP: - ProcessMouse(event.button, false); + if (GameState >= gsGame) then ProcessMouse(event.button, false); SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uAI.pas Wed May 29 22:52:37 2013 +0400 @@ -126,10 +126,10 @@ then begin {$HINTS OFF} - Score:= AmmoTests[a].proc(Me, Targets.ar[i].Point, BotLevel, ap); + Score:= AmmoTests[a].proc(Me, Targets.ar[i], BotLevel, ap); {$HINTS ON} if Actions.Score + Score > BestActions.Score then - if (BestActions.Score < 0) or (Actions.Score + Score > BestActions.Score + Byte(BotLevel) * 2048) then + if (BestActions.Score < 0) or (Actions.Score + Score > BestActions.Score + Byte(BotLevel - 1) * 2048) then begin BestActions:= Actions; inc(BestActions.Score, Score); @@ -366,7 +366,6 @@ switchImmediatelyAvailable: boolean; Actions: TActions; begin -AddFileLog('Think thread started'); dmgMod:= 0.01 * hwFloat2Float(cDamageModifier) * cDamagePercent; StartTicks:= GameTicks; currHedgehogIndex:= CurrentTeam^.CurrHedgehog; @@ -378,7 +377,7 @@ switchCount:= HHHasAmmo(PGear(Me)^.Hedgehog^, amSwitch) else switchCount:= 0; -if (Me^.State and gstAttacked) = 0 then +if ((Me^.State and gstAttacked) = 0) or isInMultiShoot then if Targets.Count > 0 then begin // iterate over current team hedgehogs @@ -427,7 +426,8 @@ else begin BackMe:= Me^; - while (not StopThinking) and (BestActions.Count = 0) do + i:= 12; + while (not StopThinking) and (BestActions.Count = 0) and (i > 0) do begin (* // Maybe this would get a bit of movement out of them? Hopefully not *toward* water. Need to check how often he'd choose that strategy @@ -440,6 +440,7 @@ Actions.Pos:= 0; Actions.Score:= 0; Walk(@WalkMe, Actions); + dec(i); if not StopThinking then SDL_Delay(100) end @@ -478,14 +479,16 @@ exit end; -FillBonuses((Me^.State and gstAttacked) <> 0); +FillBonuses(((Me^.State and gstAttacked) <> 0) and (not isInMultiShoot)); SDL_LockMutex(ThreadLock); ThinkThread:= SDL_CreateThread(@Think{$IFDEF SDL13}, 'think'{$ENDIF}, Me); SDL_UnlockMutex(ThreadLock); end; -//var scoreShown: boolean = false; +{$IFDEF DEBUGAI} +var scoreShown: boolean = false; +{$ENDIF} procedure ProcessBot; const cStopThinkTime = 40; @@ -507,17 +510,21 @@ if Gear^.Message <> 0 then exit; - //scoreShown:= false; +{$IFDEF DEBUGAI} + scoreShown:= false; +{$ENDIF} StartThink(Gear); StartTicks:= GameTicks end else begin - {if not scoreShown then +{$IFDEF DEBUGAI} + if not scoreShown then begin if BestActions.Score > 0 then ParseCommand('/say Expected score = ' + inttostr(BestActions.Score div 1024), true); scoreShown:= true - end;} + end; +{$ENDIF} ProcessAction(BestActions, Gear) end else if ((GameTicks - StartTicks) > cMaxAIThinkTime) diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uAIAmmoTests.pas Wed May 29 22:52:37 2013 +0400 @@ -20,7 +20,7 @@ unit uAIAmmoTests; interface -uses SDLh, uConsts, uFloat, uTypes; +uses SDLh, uConsts, uFloat, uTypes, uAIMisc; const amtest_Rare = $00000001; // check only several positions amtest_NoTarget = $00000002; // each pos, but no targetting @@ -34,27 +34,27 @@ AttackPutX, AttackPutY: LongInt; end; -function TestBazooka(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestSnowball(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestClusterBomb(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestWatermelon(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestDrillRocket(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestMortar(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestShotgun(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestDesertEagle(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestSniperRifle(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestBaseballBat(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestFirePunch(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestWhip(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestKamikaze(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestAirAttack(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestTeleport(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestHammer(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -function TestCake(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestBazooka(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestSnowball(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestGrenade(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestMolotov(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestClusterBomb(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestWatermelon(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestDrillRocket(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestMortar(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestShotgun(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestDesertEagle(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestSniperRifle(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestBaseballBat(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestFirePunch(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestWhip(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestKamikaze(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; -type TAmmoTestProc = function (Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; TAmmoTest = record proc: TAmmoTestProc; flags: Longword; @@ -123,14 +123,14 @@ ); implementation -uses uAIMisc, uVariables, uUtils, uGearsHandlers; +uses uVariables, uUtils, uGearsHandlers; function Metric(x1, y1, x2, y2: LongInt): LongInt; inline; begin Metric:= abs(x1 - x2) + abs(y1 - y2) end; -function TestBazooka(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestBazooka(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, r, mX, mY: real; rTime: LongInt; EX, EY: LongInt; @@ -147,8 +147,8 @@ valueResult:= BadTurn; repeat rTime:= rTime + 300 + Level * 50 + random(300); - Vx:= - windSpeed * rTime * 0.5 + (Targ.X + AIrndSign(2) - mX) / rTime; - Vy:= cGravityf * rTime * 0.5 - (Targ.Y + 1 - mY) / rTime; + Vx:= - windSpeed * rTime * 0.5 + (Targ.Point.X + AIrndSign(2) - mX) / rTime; + Vy:= cGravityf * rTime * 0.5 - (Targ.Point.Y + 1 - mY) / rTime; r:= sqr(Vx) + sqr(Vy); if not (r > 1) then begin @@ -171,8 +171,8 @@ if Level = 1 then value:= RateExplosion(Me, EX, EY, 101, afTrackFall or afErasesLand) else value:= RateExplosion(Me, EX, EY, 101); - if value = 0 then - value:= 1024 - Metric(Targ.X, Targ.Y, EX, EY) div 64; + if (value = 0) and (Targ.Kind = gtHedgehog) and (Targ.Score > 0) then + value:= 1024 - Metric(Targ.Point.X, Targ.Point.Y, EX, EY) div 64; if valueResult <= value then begin ap.Angle:= DxDy2AttackAnglef(Vx, Vy) + AIrndSign(random((Level - 1) * 9)); @@ -189,7 +189,7 @@ end; -function TestDrillRocket(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestDrillRocket(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, r, mX, mY: real; rTime: LongInt; EX, EY: LongInt; @@ -210,8 +210,8 @@ valueResult:= BadTurn; repeat rTime:= rTime + 300 + Level * 50 + random(300); - Vx:= - windSpeed * rTime * 0.5 + (Targ.X + AIrndSign(2) - mX) / rTime; - Vy:= cGravityf * rTime * 0.5 - (Targ.Y - 35 - mY) / rTime; + Vx:= - windSpeed * rTime * 0.5 + (Targ.Point.X + AIrndSign(2) - mX) / rTime; + Vy:= cGravityf * rTime * 0.5 - (Targ.Point.Y - 35 - mY) / rTime; r:= sqr(Vx) + sqr(Vy); if not (r > 1) then begin @@ -229,7 +229,7 @@ until (((Me = CurrentHedgehog^.Gear) and TestColl(trunc(x), trunc(y), 5)) or ((Me <> CurrentHedgehog^.Gear) and TestCollExcludingMe(Me^.Hedgehog^.Gear, trunc(x), trunc(y), 5))) or (y > cWaterLine); - if TestCollExcludingObjects(trunc(x), trunc(y), 5) and (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) > 21) then + if TestCollExcludingObjects(trunc(x), trunc(y), 5) and (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) > 21) then begin timer := 500; t2 := 0.5 / sqrt(sqr(dX) + sqr(dY)); @@ -239,7 +239,7 @@ x:= x + dX; y:= y + dY; dec(timer); - until (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 22) + until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 22) or (x < 0) or (y < 0) or (trunc(x) > LAND_WIDTH) @@ -250,7 +250,7 @@ EX:= trunc(x); EY:= trunc(y); // Try to prevent AI from thinking firing into water will cause a drowning - if (EY < cWaterLine-5) and (Timer > 0) and (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) > 21) then exit(BadTurn); + if (EY < cWaterLine-5) and (Timer > 0) and (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) > 21) then exit(BadTurn); if Level = 1 then value:= RateExplosion(Me, EX, EY, 101, afTrackFall or afErasesLand) else value:= RateExplosion(Me, EX, EY, 101); @@ -269,7 +269,7 @@ end; -function TestSnowball(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestSnowball(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, r: real; rTime: LongInt; EX, EY: LongInt; @@ -287,8 +287,8 @@ valueResult:= BadTurn; repeat rTime:= rTime + 300 + Level * 50 + random(1000); - Vx:= - windSpeed * rTime * 0.5 + ((Targ.X + AIrndSign(2)) - meX) / rTime; - Vy:= cGravityf * rTime * 0.5 - (Targ.Y - meY) / rTime; + Vx:= - windSpeed * rTime * 0.5 + ((Targ.Point.X + AIrndSign(2)) - meX) / rTime; + Vy:= cGravityf * rTime * 0.5 - (Targ.Point.Y - meY) / rTime; r:= sqr(Vx) + sqr(Vy); if not (r > 1) then begin @@ -308,10 +308,10 @@ EX:= trunc(x); EY:= trunc(y); - value:= RateShove(trunc(x), trunc(y), 5, 1, trunc((abs(dX)+abs(dY))*20), -dX, -dY, afTrackFall); + value:= RateShove(Me, trunc(x), trunc(y), 5, 1, trunc((abs(dX)+abs(dY))*20), -dX, -dY, afTrackFall); // LOL copypasta: this is score for digging with... snowball //if value = 0 then - // value:= - Metric(Targ.X, Targ.Y, EX, EY) div 64; + // value:= - Metric(Targ.Point.X, Targ.Point.Y, EX, EY) div 64; if valueResult <= value then begin @@ -327,7 +327,7 @@ TestSnowball:= valueResult end; -function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestMolotov(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, r: real; Score, EX, EY, valueResult: LongInt; TestTime: Longword; @@ -341,8 +341,8 @@ ap.ExplR:= 0; repeat inc(TestTime, 300); - Vx:= (Targ.X - meX) / TestTime; - Vy:= cGravityf * (TestTime div 2) - Targ.Y - meY / TestTime; + Vx:= (Targ.Point.X - meX) / TestTime; + Vy:= cGravityf * (TestTime div 2) - Targ.Point.Y - meY / TestTime; r:= sqr(Vx) + sqr(Vy); if not (r > 1) then begin @@ -378,7 +378,7 @@ TestMolotov:= valueResult end; -function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestGrenade(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const tDelta = 24; var Vx, Vy, r: real; Score, EX, EY, valueResult: LongInt; @@ -393,8 +393,8 @@ meY:= hwFloat2Float(Me^.Y); repeat inc(TestTime, 1000); - Vx:= (Targ.X - meX) / (TestTime + tDelta); - Vy:= cGravityf * ((TestTime + tDelta) div 2) - (Targ.Y - meY) / (TestTime + tDelta); + Vx:= (Targ.Point.X - meX) / (TestTime + tDelta); + Vy:= cGravityf * ((TestTime + tDelta) div 2) - (Targ.Point.Y - meY) / (TestTime + tDelta); r:= sqr(Vx) + sqr(Vy); if not (r > 1) then begin @@ -434,7 +434,7 @@ TestGrenade:= valueResult end; -function TestClusterBomb(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestClusterBomb(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const tDelta = 24; var Vx, Vy, r: real; Score, EX, EY, valueResult: LongInt; @@ -450,11 +450,11 @@ repeat inc(TestTime, 900); // Try to overshoot slightly, seems to pay slightly better dividends in terms of hitting cluster - if meX<Targ.X then - Vx:= ((Targ.X+10) - meX) / (TestTime + tDelta) + if meX<Targ.Point.X then + Vx:= ((Targ.Point.X+10) - meX) / (TestTime + tDelta) else - Vx:= ((Targ.X-10) - meX) / (TestTime + tDelta); - Vy:= cGravityf * ((TestTime + tDelta) div 2) - ((Targ.Y-50) - meY) / (TestTime + tDelta); + Vx:= ((Targ.Point.X-10) - meX) / (TestTime + tDelta); + Vy:= cGravityf * ((TestTime + tDelta) div 2) - ((Targ.Point.Y-50) - meY) / (TestTime + tDelta); r:= sqr(Vx)+sqr(Vy); if not (r > 1) then begin @@ -476,7 +476,7 @@ else Score:= BadTurn; - if valueResult < Score then + if Score > 0 then begin ap.Angle:= DxDy2AttackAnglef(Vx, Vy) + AIrndSign(random(Level * 2)); ap.Power:= trunc(sqrt(r) * cMaxPower) + AIrndSign(random(Level) * 15); @@ -491,7 +491,7 @@ TestClusterBomb:= valueResult end; -function TestWatermelon(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestWatermelon(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const tDelta = 24; var Vx, Vy, r: real; Score, EX, EY, valueResult: LongInt; @@ -506,8 +506,8 @@ meY:= hwFloat2Float(Me^.Y); repeat inc(TestTime, 900); - Vx:= (Targ.X - meX) / (TestTime + tDelta); - Vy:= cGravityf * ((TestTime + tDelta) div 2) - ((Targ.Y-50) - meY) / (TestTime + tDelta); + Vx:= (Targ.Point.X - meX) / (TestTime + tDelta); + Vy:= cGravityf * ((TestTime + tDelta) div 2) - ((Targ.Point.Y-50) - meY) / (TestTime + tDelta); r:= sqr(Vx)+sqr(Vy); if not (r > 1) then begin @@ -567,7 +567,7 @@ Solve:= 0 end; -function TestMortar(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestMortar(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; //const tDelta = 24; var Vx, Vy: real; Score, EX, EY: LongInt; @@ -583,13 +583,13 @@ if (Level > 2) then exit(BadTurn); - TestTime:= Solve(Targ.X, Targ.Y, trunc(meX), trunc(meY)); + TestTime:= Solve(Targ.Point.X, Targ.Point.Y, trunc(meX), trunc(meY)); if TestTime = 0 then exit(BadTurn); - Vx:= (Targ.X - meX) / TestTime; - Vy:= cGravityf * (TestTime div 2) - (Targ.Y - meY) / TestTime; + Vx:= (Targ.Point.X - meX) / TestTime; + Vy:= cGravityf * (TestTime div 2) - (Targ.Point.Y - meY) / TestTime; x:= meX; y:= meY; @@ -608,8 +608,8 @@ begin Score:= RateExplosion(Me, EX, EY, 91); if (Score = 0) then - if (dY > 0.15) then - Score:= - abs(Targ.Y - EY) div 32 + if (dY > 0.15) and (Targ.Kind = gtHedgehog) and (Targ.Score > 0) then + Score:= - abs(Targ.Point.Y - EY) div 32 else Score:= BadTurn else if (Score < 0) then @@ -618,7 +618,7 @@ else Score:= BadTurn; - if BadTurn < Score then + if Score > 0 then begin ap.Angle:= DxDy2AttackAnglef(Vx, Vy) + AIrndSign(random(Level)); ap.Power:= 1; @@ -629,7 +629,7 @@ end; end; -function TestShotgun(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestShotgun(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const MIN_RANGE = 80; MAX_RANGE = 400; @@ -643,12 +643,12 @@ ap.Power:= 1; x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); -range:= Metric(trunc(x), trunc(y), Targ.X, Targ.Y); +range:= Metric(trunc(x), trunc(y), Targ.Point.X, Targ.Point.Y); if ( range < MIN_RANGE ) or ( range > MAX_RANGE ) then exit(BadTurn); -Vx:= (Targ.X - x) * 1 / 1024; -Vy:= (Targ.Y - y) * 1 / 1024; +Vx:= (Targ.Point.X - x) * 1 / 1024; +Vy:= (Targ.Point.Y - y) * 1 / 1024; ap.Angle:= DxDy2AttackAnglef(Vx, -Vy); repeat x:= x + vX; @@ -662,14 +662,14 @@ y:= y + vY * 8; valueResult:= RateShotgun(Me, vX, vY, rx, ry); - if valueResult = 0 then - valueResult:= 1024 - Metric(Targ.X, Targ.Y, rx, ry) div 64 + if (valueResult = 0) and (Targ.Kind = gtHedgehog) and (Targ.Score > 0) then + valueResult:= 1024 - Metric(Targ.Point.X, Targ.Point.Y, rx, ry) div 64 else dec(valueResult, Level * 4000); // 27/20 is reuse bonus exit(valueResult * 27 div 20) end -until (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 4) +until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 4) or (x < 0) or (y < 0) or (trunc(x) > LAND_WIDTH) @@ -678,27 +678,26 @@ TestShotgun:= BadTurn end; -function TestDesertEagle(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -var Vx, Vy, x, y, t, dmgMod: real; +function TestDesertEagle(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +var Vx, Vy, x, y, t: real; d: Longword; fallDmg, valueResult: LongInt; begin -if Level > 4 then exit(BadTurn); -dmgMod:= 0.01 * hwFloat2Float(cDamageModifier) * cDamagePercent; +if (Level > 4) or (Targ.Score < 0) or (Targ.Kind <> gtHedgehog) then exit(BadTurn); Level:= Level; // avoid compiler hint -ap.ExplR:= 0; +ap.ExplR:= 1; ap.Time:= 0; ap.Power:= 1; x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); -if Abs(trunc(x) - Targ.X) + Abs(trunc(y) - Targ.Y) < 20 then +if Abs(trunc(x) - Targ.Point.X) + Abs(trunc(y) - Targ.Point.Y) < 20 then exit(BadTurn); -t:= 2 / sqrt(sqr(Targ.X - x)+sqr(Targ.Y-y)); -Vx:= (Targ.X - x) * t; -Vy:= (Targ.Y - y) * t; +t:= 2 / sqrt(sqr(Targ.Point.X - x)+sqr(Targ.Point.Y-y)); +Vx:= (Targ.Point.X - x) * t; +Vy:= (Targ.Point.Y - y) * t; ap.Angle:= DxDy2AttackAnglef(Vx, -Vy); d:= 0; @@ -708,47 +707,40 @@ if ((trunc(x) and LAND_WIDTH_MASK) = 0)and((trunc(y) and LAND_HEIGHT_MASK) = 0) and (Land[trunc(y), trunc(x)] <> 0) then inc(d); -until (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 5) +until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 5) or (x < 0) or (y < 0) or (trunc(x) > LAND_WIDTH) or (trunc(y) > LAND_HEIGHT) or (d > 48); -if Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 5 then - begin - fallDmg:= TraceShoveFall(Targ.X, Targ.Y, vX * 0.00125 * 20, vY * 0.00125 * 20); - if fallDmg < 0 then - valueResult:= 204800 - else valueResult:= Max(0, (4 - d div 12) * trunc((7 + fallDmg) * dmgMod) * 1024) - end -else - valueResult:= BadTurn; +if Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 5 then + valueResult:= RateShove(Me, Targ.Point.X, Targ.Point.Y, 1, 7, 20, vX*0.125, vY*0.125, afTrackFall) +else valueResult:= BadTurn; TestDesertEagle:= valueResult end; -function TestSniperRifle(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; -var Vx, Vy, x, y, t, dmg, dmgMod: real; +function TestSniperRifle(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; +var Vx, Vy, x, y, t, dmg: real; d: Longword; fallDmg: LongInt; begin -if Level > 3 then exit(BadTurn); -dmgMod:= 0.01 * hwFloat2Float(cDamageModifier) * cDamagePercent; +if (Level > 3) or (Targ.Score < 0) or (Targ.Kind <> gtHedgehog) then exit(BadTurn); Level:= Level; // avoid compiler hint ap.ExplR:= 0; ap.Time:= 0; ap.Power:= 1; x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); -if Abs(trunc(x) - Targ.X) + Abs(trunc(y) - Targ.Y) < 40 then +if Abs(trunc(x) - Targ.Point.X) + Abs(trunc(y) - Targ.Point.Y) < 40 then exit(BadTurn); -dmg:= sqrt(sqr(Targ.X - x)+sqr(Targ.Y-y)); +dmg:= sqrt(sqr(Targ.Point.X - x)+sqr(Targ.Point.Y-y)); t:= 1.5 / dmg; dmg:= dmg * 0.025; // div 40 -Vx:= (Targ.X - x) * t; -Vy:= (Targ.Y - y) * t; +Vx:= (Targ.Point.X - x) * t; +Vy:= (Targ.Point.Y - y) * t; ap.Angle:= DxDy2AttackAnglef(Vx, -Vy); d:= 0; @@ -758,27 +750,20 @@ if ((trunc(x) and LAND_WIDTH_MASK) = 0)and((trunc(y) and LAND_HEIGHT_MASK) = 0) and (Land[trunc(y), trunc(x)] <> 0) then inc(d); -until (Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 4) +until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 4) or (x < 0) or (y < 0) or (trunc(x) > LAND_WIDTH) or (trunc(y) > LAND_HEIGHT) or (d > 22); -if Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 4 then - begin - fallDmg:= TraceShoveFall(Targ.X, Targ.Y, vX * 0.00166 * dmg, vY * 0.00166 * dmg); - if fallDmg < 0 then - TestSniperRifle:= BadTurn - else - TestSniperRifle:= Max(0, trunc((dmg + fallDmg) * dmgMod) * 1024) - end -else - TestSniperRifle:= BadTurn +if Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 4 then + TestSniperRifle:= RateShove(Me, Targ.Point.X, Targ.Point.Y, 1, trunc(dmg), 20, vX*0.166, vY*0.166, afTrackFall) +else TestSniperRifle:= BadTurn; end; -function TestBaseballBat(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestBaseballBat(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult, a, v1, v2: LongInt; x, y, trackFall: LongInt; dx, dy: real; @@ -802,10 +787,10 @@ dx:= sin(a / cMaxAngle * pi) * 0.5; dy:= cos(a / cMaxAngle * pi) * 0.5; - v1:= RateShove(x - 10, y + 2 + v1:= RateShove(Me, x - 10, y + 2 , 32, 30, 115 , -dx, -dy, trackFall); - v2:= RateShove(x + 10, y + 2 + v2:= RateShove(Me, x + 10, y + 2 , 32, 30, 115 , dx, -dy, trackFall); if (v1 > valueResult) or (v2 > valueResult) then @@ -830,7 +815,7 @@ TestBaseballBat:= valueResult; end; -function TestFirePunch(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestFirePunch(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult, v1, v2, i: LongInt; x, y, trackFall: LongInt; begin @@ -848,11 +833,11 @@ v1:= 0; for i:= 0 to 8 do begin - v1:= v1 + RateShove(x - 5, y - 10 * i + v1:= v1 + RateShove(Me, x - 5, y - 10 * i , 19, 30, 40 , -0.45, -0.9, trackFall or afSetSkip); end; - v1:= v1 + RateShove(x - 5, y - 90 + v1:= v1 + RateShove(Me, x - 5, y - 90 , 19, 30, 40 , -0.45, -0.9, trackFall); @@ -861,11 +846,11 @@ v2:= 0; for i:= 0 to 8 do begin - v2:= v2 + RateShove(x + 5, y - 10 * i + v2:= v2 + RateShove(Me, x + 5, y - 10 * i , 19, 30, 40 , 0.45, -0.9, trackFall or afSetSkip); end; - v2:= v2 + RateShove(x + 5, y - 90 + v2:= v2 + RateShove(Me, x + 5, y - 90 , 19, 30, 40 , 0.45, -0.9, trackFall); @@ -888,7 +873,7 @@ end; -function TestWhip(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestWhip(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult, v1, v2: LongInt; x, y, trackFall: LongInt; begin @@ -907,19 +892,19 @@ {first RateShove checks farthermost of two whip's AmmoShove attacks to encourage distant attacks (damaged hog is excluded from view of second RateShove call)} - v1:= RateShove(x - 13, y + v1:= RateShove(Me, x - 13, y , 30, 30, 25 , -1, -0.8, trackFall or afSetSkip); v1:= v1 + - RateShove(x - 2, y + RateShove(Me, x - 2, y , 30, 30, 25 , -1, -0.8, trackFall); // now try opposite direction - v2:= RateShove(x + 13, y + v2:= RateShove(Me, x + 13, y , 30, 30, 25 , 1, -0.8, trackFall or afSetSkip); v2:= v2 + - RateShove(x + 2, y + RateShove(Me, x + 2, y , 30, 30, 25 , 1, -0.8, trackFall); @@ -943,7 +928,7 @@ TestWhip:= valueResult; end; -function TestKamikaze(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestKamikaze(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const step = 8; var valueResult, i, v, tx: LongInt; trackFall: LongInt; @@ -965,7 +950,7 @@ x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); - d:= sqrt(sqr(Targ.X - x) + sqr(Targ.Y - y)); + d:= sqrt(sqr(Targ.Point.X - x) + sqr(Targ.Point.Y - y)); if d < 10 then begin dx:= 0; @@ -975,8 +960,8 @@ else begin t:= step / d; - dx:= (Targ.X - x) * t; - dy:= (Targ.Y - y) * t; + dx:= (Targ.Point.X - x) * t; + dy:= (Targ.Point.Y - y) * t; ap.Angle:= DxDy2AttackAnglef(dx, -dy) end; @@ -986,7 +971,7 @@ for i:= 0 to 512 div step - 2 do begin valueResult:= valueResult + - RateShove(trunc(x), trunc(y) + RateShove(Me, trunc(x), trunc(y) , 30, 30, 25 , cx, -0.9, trackFall or afSetSkip); @@ -998,14 +983,14 @@ x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); tx:= trunc(x); - v:= RateShove(tx, trunc(y) + v:= RateShove(Me, tx, trunc(y) , 30, 30, 25 , -cx, -0.9, trackFall); for i:= 1 to 512 div step - 2 do begin y:= y + dy; v:= v + - RateShove(tx, trunc(y) + RateShove(Me, tx, trunc(y) , 30, 30, 25 , -cx, -0.9, trackFall or afSetSkip); end @@ -1016,7 +1001,7 @@ valueResult:= v end; - v:= RateShove(trunc(x), trunc(y) + v:= RateShove(Me, trunc(x), trunc(y) , 30, 30, 25 , cx, -0.9, trackFall); valueResult:= valueResult + v - KillScore * friendlyfactor div 100 * 1024; @@ -1027,7 +1012,7 @@ TestKamikaze:= valueResult; end; -function TestHammer(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var rate: LongInt; begin Level:= Level; // avoid compiler hint @@ -1044,7 +1029,7 @@ TestHammer:= rate; end; -function TestAirAttack(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; const cShift = 4; var bombsSpeed, X, Y, dY: real; b: array[0..9] of boolean; @@ -1058,12 +1043,12 @@ exit(BadTurn); ap.Angle:= 0; -ap.AttackPutX:= Targ.X; -ap.AttackPutY:= Targ.Y; +ap.AttackPutX:= Targ.Point.X; +ap.AttackPutY:= Targ.Point.Y; bombsSpeed:= hwFloat2Float(cBombsSpeed); -X:= Targ.X - 135 - cShift; // hh center - cShift -X:= X - bombsSpeed * sqrt(((Targ.Y + 128) * 2) / cGravityf); +X:= Targ.Point.X - 135 - cShift; // hh center - cShift +X:= X - bombsSpeed * sqrt(((Targ.Point.Y + 128) * 2) / cGravityf); Y:= -128; dY:= 0; @@ -1095,7 +1080,7 @@ for i:= 0 to 5 do inc(valueResult, dmg[i]); t:= valueResult; -ap.AttackPutX:= Targ.X - 60; +ap.AttackPutX:= Targ.Point.X - 60; for i:= 0 to 3 do begin @@ -1104,7 +1089,7 @@ if t > valueResult then begin valueResult:= t; - ap.AttackPutX:= Targ.X - 30 - cShift + i * 30 + ap.AttackPutX:= Targ.Point.X - 30 - cShift + i * 30 end end; @@ -1114,7 +1099,7 @@ end; -function TestTeleport(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var i, failNum: longword; maxTop: longword; @@ -1127,15 +1112,15 @@ begin if Me^.Health <= 100 then begin - maxTop := Targ.Y - cHHRadius * 2; + maxTop := Targ.Point.Y - cHHRadius * 2; - while not TestColl(Targ.X, maxTop, cHHRadius) and (maxTop > topY + cHHRadius * 2 + 1) do + while not TestColl(Targ.Point.X, maxTop, cHHRadius) and (maxTop > topY + cHHRadius * 2 + 1) do dec(maxTop, cHHRadius*2); - if not TestColl(Targ.X, maxTop + cHHRadius, cHHRadius) then + if not TestColl(Targ.Point.X, maxTop + cHHRadius, cHHRadius) then begin - ap.AttackPutX := Targ.X; + ap.AttackPutX := Targ.Point.X; ap.AttackPutY := maxTop + cHHRadius; - TestTeleport := Targ.Y - maxTop; + TestTeleport := Targ.Point.Y - maxTop; end; end; end @@ -1178,7 +1163,7 @@ end; end; -function TestCake(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult, v1, v2: LongInt; cake: TGear; begin diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uAIMisc.pas Wed May 29 22:52:37 2013 +0400 @@ -30,14 +30,18 @@ BadTurn = Low(LongInt) div 4; -type TTarget = record +type TTarget = record // starting to look more and more like a gear Point: TPoint; - Score: LongInt; - skip, matters: boolean; + Score, Radius: LongInt; + State: LongWord; + Density: real; + skip, matters, dead: boolean; + Kind: TGearType; end; TTargets = record Count: Longword; - ar: array[0..Pred(cMaxHHs)] of TTarget; + ar: array[0..Pred(256)] of TTarget; + reset: boolean; end; TJumpType = (jmpNone, jmpHJump, jmpLJump); TGoInfo = record @@ -55,6 +59,7 @@ procedure freeModule; procedure FillTargets; +procedure ResetTargets; inline; procedure AddBonus(x, y: LongInt; r: Longword; s: LongInt); inline; procedure FillBonuses(isAfterAttack: boolean); procedure AwareOfExplosion(x, y, r: LongInt); inline; @@ -63,11 +68,11 @@ function TestColl(x, y, r: LongInt): boolean; inline; function TestCollExcludingObjects(x, y, r: LongInt): boolean; inline; function TestCollExcludingMe(Me: PGear; x, y, r: LongInt): boolean; inline; -function TraceShoveFall(x, y, dX, dY: Real): LongInt; function RateExplosion(Me: PGear; x, y, r: LongInt): LongInt; inline; -function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; -function RateShove(x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; +function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; inline; +function RealRateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; +function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; function RateShotgun(Me: PGear; gdX, gdY: real; x, y: LongInt): LongInt; function RateHammer(Me: PGear): LongInt; @@ -99,43 +104,72 @@ X, Y, Radius: LongInt end = (X: 0; Y: 0; Radius: 0); +procedure ResetTargets; inline; +var i: LongWord; +begin +if Targets.reset then + for i:= 0 to Targets.Count do + Targets.ar[i].dead:= false; +Targets.reset:= false; +end; procedure FillTargets; var i, t: Longword; f, e: LongInt; + Gear: PGear; begin Targets.Count:= 0; +Targets.reset:= false; f:= 0; e:= 0; -for t:= 0 to Pred(TeamsCount) do - with TeamsArray[t]^ do - if not hasGone then +Gear:= GearsList; +while Gear <> nil do + begin + if (((Gear^.Kind = gtHedgehog) and + (Gear <> ThinkingHH) and + (Gear^.Health > Gear^.Damage) and + not(Gear^.Hedgehog^.Team^.hasgone)) or + ((Gear^.Kind = gtExplosives) and + (Gear^.Health > Gear^.Damage)) or + ((Gear^.Kind = gtMine) and + (Gear^.Health = 0) and + (Gear^.Damage < 35)) + ) and + (Targets.Count < 256) then + begin + with Targets.ar[Targets.Count] do begin - for i:= 0 to cMaxHHIndex do - if (Hedgehogs[i].Gear <> nil) - and (Hedgehogs[i].Gear <> ThinkingHH) - and (Hedgehogs[i].Gear^.Health > Hedgehogs[i].Gear^.Damage) - then - begin - with Targets.ar[Targets.Count], Hedgehogs[i] do - begin - skip:= false; - matters:= (Hedgehogs[i].Gear^.AIHints and aihDoesntMatter) = 0; + skip:= false; + dead:= false; + Kind:= Gear^.Kind; + Radius:= Gear^.Radius; + Density:= hwFloat2Float(Gear^.Density)/3; + State:= Gear^.State; + matters:= (Gear^.AIHints and aihDoesntMatter) = 0; - Point.X:= hwRound(Gear^.X); - Point.Y:= hwRound(Gear^.Y); - if Clan <> CurrentTeam^.Clan then - begin - Score:= Gear^.Health - Gear^.Damage; - inc(e) - end else - begin - Score:= Gear^.Damage - Gear^.Health; - inc(f) - end - end; - inc(Targets.Count) + Point.X:= hwRound(Gear^.X); + Point.Y:= hwRound(Gear^.Y); + if (Gear^.Kind = gtHedgehog) then + begin + if (Gear^.Hedgehog^.Team^.Clan = CurrentTeam^.Clan) then + begin + Score:= Gear^.Damage - Gear^.Health; + inc(f) + end + else + begin + Score:= Gear^.Health - Gear^.Damage; + inc(e) end; + end + else if Gear^.Kind = gtExplosives then + Score:= Gear^.Health - Gear^.Damage + else if Gear^.Kind = gtMine then + Score:= max(0,35-Gear^.Damage); end; + inc(Targets.Count) + end; + Gear:= Gear^.NextGear + end; if e > f then friendlyfactor:= 300 + (e - f) * 30 else friendlyfactor:= max(30, 300 - f * 80 div max(1,e)) @@ -286,7 +320,7 @@ if (Land[y-r, x-r] > lfAllObjMask) or (Land[y+r, x-r] > lfAllObjMask) or - (Land[y-r, x+r] > lfAllObjMask) or + (Land[y-r, x-r] > lfAllObjMask) or (Land[y+r, x+r] > lfAllObjMask) then exit(true); @@ -300,7 +334,7 @@ if (Land[y-r, x-r] and lfNotCurrentMask <> 0) or (Land[y+r, x-r] and lfNotCurrentMask <> 0) or - (Land[y-r, x+r] and lfNotCurrentMask <> 0) or + (Land[y+r, x-r] and lfNotCurrentMask <> 0) or (Land[y+r, x+r] and lfNotCurrentMask <> 0) then exit(true); @@ -326,43 +360,64 @@ -function TraceFall(eX, eY: LongInt; x, y, dX, dY: Real; r: LongWord): LongInt; +function TraceFall(eX, eY: LongInt; var x, y: Real; dX, dY: Real; r: LongWord; Target: TTarget): LongInt; var skipLandCheck: boolean; - rCorner: real; + rCorner, dxdy, odX, odY: real; dmg: LongInt; begin + odX:= dX; + odY:= dY; skipLandCheck:= true; - if x - eX < 0 then dX:= -dX; - if y - eY < 0 then dY:= -dY; // ok. attempt approximate search for an unbroken trajectory into water. if it continues far enough, assume out of map rCorner:= r * 0.75; while true do - begin + begin x:= x + dX; y:= y + dY; dY:= dY + cGravityf; skipLandCheck:= skipLandCheck and (r <> 0) and (abs(eX-x) + abs(eY-y) < r) and ((abs(eX-x) < rCorner) or (abs(eY-y) < rCorner)); - if not skipLandCheck and TestCollExcludingObjects(trunc(x), trunc(y), cHHRadius) then - begin - if 0.4 < dY then - begin - dmg := 1 + trunc((abs(dY) - 0.4) * 70); - if dmg >= 1 then - exit(dmg); + if not skipLandCheck and TestCollExcludingObjects(trunc(x), trunc(y), Target.Radius) then + with Target do + begin + if (Kind = gtHedgehog) and (0.4 < dY) then + begin + dmg := 1 + trunc((dY - 0.4) * 70); + exit(dmg) + end + else + begin + dxdy:= abs(dX)+abs(dY); + if ((Kind = gtMine) and (dxdy > 0.35)) or + ((Kind = gtExplosives) and + (((State and gstTmpFlag <> 0) and (dxdy > 0.35)) or + ((State and gstTmpFlag = 0) and + ((abs(odX) > 0.15) or ((abs(odY) > 0.15) and + (abs(odX) > 0.02))) and (dxdy > 0.35)))) then + begin + dmg := trunc(dxdy * 25); + exit(dmg) + end + else if (Kind = gtExplosives) and not((abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then + begin + dmg := trunc(dy * 70); + exit(dmg) + end + end; + exit(0) end; - exit(0) - end; - if (y > cWaterLine) or (x > 4096) or (x < 0) then - exit(-1); - end; + if (y > cWaterLine) or (x > rightX) or (x < leftX) then exit(-1) + end end; -function TraceShoveFall(x, y, dX, dY: Real): LongInt; +function TraceShoveFall(var x, y: Real; dX, dY: Real; Target: TTarget): LongInt; var dmg: LongInt; + dxdy, odX, odY: real; begin + odX:= dX; + odY:= dY; //v:= random($FFFFFFFF); while true do - begin + begin x:= x + dX; y:= y + dY; dY:= dY + cGravityf; @@ -373,32 +428,55 @@ UpdateLandTexture(trunc(X), 1, trunc(Y), 1, true); end;} - - // consider adding dX/dY calc here for fall damage - if TestCollExcludingObjects(trunc(x), trunc(y), cHHRadius) then - begin - if 0.4 < dY then - begin - dmg := 1 + trunc((abs(dY) - 0.4) * 70); - if dmg >= 1 then + if TestCollExcludingObjects(trunc(x), trunc(y), Target.Radius) then + with Target do + begin + if (Kind = gtHedgehog) and (0.4 < dY) then + begin + dmg := trunc((dY - 0.4) * 70); exit(dmg); - end; + end + else + begin + dxdy:= abs(dX)+abs(dY); + if ((Kind = gtMine) and (dxdy > 0.4)) or + ((Kind = gtExplosives) and + (((State and gstTmpFlag <> 0) and (dxdy > 0.4)) or + ((State and gstTmpFlag = 0) and + ((abs(odX) > 0.15) or ((abs(odY) > 0.15) and + (abs(odX) > 0.02))) and (dxdy > 0.35)))) then + begin + dmg := trunc(dxdy * 50); + exit(dmg) + end + else if (Kind = gtExplosives) and not((abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then + begin + dmg := trunc(dy * 70); + exit(dmg) + end + end; exit(0) end; - if (y > cWaterLine) or (x > 4096) or (x < 0) then + if (y > cWaterLine) or (x > rightX) or (x < leftX) then // returning -1 for drowning so it can be considered in the Rate routine exit(-1) end; end; -function RateExplosion(Me: PGear; x, y, r: LongInt): LongInt; +function RateExplosion(Me: PGear; x, y, r: LongInt): LongInt; inline; begin - RateExplosion:= RateExplosion(Me, x, y, r, 0); + RateExplosion:= RealRateExplosion(Me, x, y, r, 0); + ResetTargets; +end; +function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; inline; +begin + RateExplosion:= RealRateExplosion(Me, x, y, r, Flags); + ResetTargets; end; -function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; -var i, fallDmg, dmg, dmgBase, rate, erasure: LongInt; - dX, dY: real; +function RealRateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; +var i, fallDmg, dmg, dmgBase, rate, subrate, erasure: LongInt; + pX, pY, dX, dY: real; hadSkips: boolean; begin fallDmg:= 0; @@ -410,10 +488,12 @@ Point.y:= hwRound(Me^.Y); skip:= false; matters:= true; + Kind:= gtHedgehog; + Density:= 1; + Radius:= cHHRadius; Score:= - ThinkingHH^.Health end; // rate explosion -dmgBase:= r + cHHRadius div 2; if (Flags and afErasesLand <> 0) and (GameFlags and gfSolidLand = 0) then erasure:= r else erasure:= 0; @@ -421,51 +501,88 @@ hadSkips:= false; for i:= 0 to Targets.Count do - with Targets.ar[i] do - if not matters then hadSkips:= true - else - begin - dmg:= 0; - if abs(Point.x - x) + abs(Point.y - y) < dmgBase then - dmg:= trunc(dmgMod * min((dmgBase - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y)))) div 2, r)); + if not Targets.ar[i].dead then + with Targets.ar[i] do + if not matters then hadSkips:= true + else + begin + dmg:= 0; + dmgBase:= r + Radius div 2; + if abs(Point.x - x) + abs(Point.y - y) < dmgBase then + dmg:= trunc(dmgMod * min((dmgBase - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y)))) div 2, r)); - if dmg > 0 then - begin - if (Flags and afTrackFall <> 0) and (dmg < abs(Score)) then + if dmg > 0 then begin - dX:= 0.005 * dmg + 0.01; - dY:= dX; - if (x and LAND_WIDTH_MASK = 0) and ((y+cHHRadius+2) and LAND_HEIGHT_MASK = 0) and - (Land[y+cHHRadius+2, x] and lfIndestructible <> 0) then - fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, 0) * dmgMod) - else fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, erasure) * dmgMod) - end; - if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI - if Score > 0 then - inc(rate, (KillScore + Score div 10) * 1024) // Add a bit of a bonus for bigger hog drownings - else - dec(rate, (KillScore * friendlyfactor div 100 - Score div 10) * 1024) // and more of a punishment for drowning bigger friendly hogs - else if (dmg+fallDmg) >= abs(Score) then - if Score > 0 then - inc(rate, KillScore * 1024 + (dmg + fallDmg)) // tiny bonus for dealing more damage than needed to kill - else - dec(rate, KillScore * friendlyfactor div 100 * 1024) - else - if Score > 0 then - inc(rate, (dmg + fallDmg) * 1024) - else dec(rate, (dmg + fallDmg) * friendlyfactor div 100 * 1024) + pX:= Point.x; + pY:= Point.y; + fallDmg:= 0; + if (Flags and afTrackFall <> 0) and (Score > 0) and (dmg < Score) then + begin + dX:= (0.005 * dmg + 0.01) / Density; + dY:= dX; + if (Kind = gtExplosives) and (State and gstTmpFlag = 0) and + (((abs(dY) > 0.15) and (abs(dX) < 0.02)) or + ((abs(dY) < 0.15) and (abs(dX) < 0.15))) then + dX:= 0; + + if pX - x < 0 then dX:= -dX; + if pY - y < 0 then dY:= -dY; + + if (x and LAND_WIDTH_MASK = 0) and ((y+cHHRadius+2) and LAND_HEIGHT_MASK = 0) and + (Land[y+cHHRadius+2, x] and lfIndestructible <> 0) then + fallDmg:= trunc(TraceFall(x, y, pX, pY, dX, dY, 0, Targets.ar[i]) * dmgMod) + else fallDmg:= trunc(TraceFall(x, y, pX, pY, dX, dY, erasure, Targets.ar[i]) * dmgMod) + end; + if Kind = gtHedgehog then + begin + if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI + begin + if Score > 0 then + inc(rate, (KillScore + Score div 10) * 1024) // Add a bit of a bonus for bigger hog drownings + else + dec(rate, (KillScore * friendlyfactor div 100 - Score div 10) * 1024) // and more of a punishment for drowning bigger friendly hogs + end + else if (dmg+fallDmg) >= abs(Score) then + begin + dead:= true; + Targets.reset:= true; + if dX < 0.035 then + begin + subrate:= RealRateExplosion(Me, round(pX), round(pY), 61, afErasesLand or (Flags and afTrackFall)); + if abs(subrate) > 2000 then inc(Rate,subrate) + end; + if Score > 0 then + inc(rate, KillScore * 1024 + (dmg + fallDmg)) // tiny bonus for dealing more damage than needed to kill + else dec(rate, KillScore * friendlyfactor div 100 * 1024) + end + else + begin + if Score > 0 then + inc(rate, (dmg + fallDmg) * 1024) + else dec(rate, (dmg + fallDmg) * friendlyfactor div 100 * 1024) + end + end + else if (fallDmg >= 0) and ((dmg+fallDmg) >= Score) then + begin + dead:= true; + Targets.reset:= true; + if Kind = gtExplosives then + subrate:= RealRateExplosion(Me, round(pX), round(pY), 151, afErasesLand or (Flags and afTrackFall)) + else subrate:= RealRateExplosion(Me, round(pX), round(pY), 101, afErasesLand or (Flags and afTrackFall)); + if abs(subrate) > 2000 then inc(Rate,subrate); + end + end end; - end; if hadSkips and (rate = 0) then - RateExplosion:= BadTurn + RealRateExplosion:= BadTurn else - RateExplosion:= rate; + RealRateExplosion:= rate; end; -function RateShove(x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; -var i, fallDmg, dmg, rate: LongInt; - dX, dY: real; +function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; +var i, fallDmg, dmg, rate, subrate: LongInt; + dX, dY, pX, pY: real; begin fallDmg:= 0; dX:= gdX * 0.01 * kick; @@ -473,42 +590,78 @@ rate:= 0; for i:= 0 to Pred(Targets.Count) do with Targets.ar[i] do - if skip then - if (Flags and afSetSkip = 0) then skip:= false else {still skip} - else if matters then - begin - dmg:= 0; - if abs(Point.x - x) + abs(Point.y - y) < r then - dmg:= r - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))); - - if dmg > 0 then + if skip then + begin + if Flags and afSetSkip = 0 then skip:= false + end + else if matters then begin - if (Flags and afSetSkip <> 0) then skip:= true; - if (Flags and afTrackFall <> 0) and (Score > 0) then - fallDmg:= trunc(TraceShoveFall(Point.x, Point.y - 2, dX, dY) * dmgMod); - if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI - if Score > 0 then - inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings - else - dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs - else if power+fallDmg >= abs(Score) then - if Score > 0 then - inc(rate, KillScore) - else - dec(rate, KillScore * friendlyfactor div 100) - else - if Score > 0 then - inc(rate, power+fallDmg) - else - dec(rate, (power+fallDmg) * friendlyfactor div 100) + dmg:= 0; + if abs(Point.x - x) + abs(Point.y - y) < r then + dmg:= r - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))); + + if dmg > 0 then + begin + pX:= Point.x; + pY:= Point.y-2; + fallDmg:= 0; + if (Flags and afSetSkip <> 0) then skip:= true; + if not(dead) and (Flags and afTrackFall <> 0) and (Score > 0) and (power < Score) then + if (Kind = gtExplosives) and (State and gstTmpFlag = 0) and + (((abs(dY) > 0.15) and (abs(dX) < 0.02)) or + ((abs(dY) < 0.15) and (abs(dX) < 0.15))) then + fallDmg:= trunc(TraceShoveFall(pX, pY, 0, dY, Targets.ar[i]) * dmgMod) + else + fallDmg:= trunc(TraceShoveFall(pX, pY, dX, dY, Targets.ar[i]) * dmgMod); + if Kind = gtHedgehog then + begin + if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI + begin + if Score > 0 then + inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings + else + dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs + end + else if power+fallDmg >= abs(Score) then + begin + dead:= true; + Targets.reset:= true; + if dX < 0.035 then + begin + subrate:= RealRateExplosion(Me, round(pX), round(pY), 61, afErasesLand or afTrackFall); + if abs(subrate) > 2000 then inc(Rate,subrate div 1024) + end; + if Score > 0 then + inc(rate, KillScore) + else + dec(rate, KillScore * friendlyfactor div 100) + end + else + begin + if Score > 0 then + inc(rate, power+fallDmg) + else + dec(rate, (power+fallDmg) * friendlyfactor div 100) + end + end + else if (fallDmg >= 0) and ((dmg+fallDmg) >= Score) then + begin + dead:= true; + Targets.reset:= true; + if Kind = gtExplosives then + subrate:= RealRateExplosion(Me, round(pX), round(pY), 151, afErasesLand or (Flags and afTrackFall)) + else subrate:= RealRateExplosion(Me, round(pX), round(pY), 101, afErasesLand or (Flags and afTrackFall)); + if abs(subrate) > 2000 then inc(Rate,subrate div 1024); + end + end end; - end; -RateShove:= rate * 1024 +RateShove:= rate * 1024; +ResetTargets end; function RateShotgun(Me: PGear; gdX, gdY: real; x, y: LongInt): LongInt; -var i, dmg, fallDmg, baseDmg, rate, erasure: LongInt; - dX, dY: real; +var i, dmg, fallDmg, baseDmg, rate, subrate, erasure: LongInt; + pX, pY, dX, dY: real; hadSkips: boolean; begin rate:= 0; @@ -521,6 +674,9 @@ Point.y:= hwRound(Me^.Y); skip:= false; matters:= true; + Kind:= gtHedgehog; + Density:= 1; + Radius:= cHHRadius; Score:= - ThinkingHH^.Health end; // rate shot @@ -532,48 +688,80 @@ hadSkips:= false; for i:= 0 to Targets.Count do - with Targets.ar[i] do - if not matters then hadSkips:= true - else - begin - dmg:= 0; - if abs(Point.x - x) + abs(Point.y - y) < baseDmg then - begin - dmg:= min(baseDmg - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))), 25); - dmg:= trunc(dmg * dmgMod); - end; - if dmg > 0 then + if not Targets.ar[i].dead then + with Targets.ar[i] do + if not matters then hadSkips:= true + else begin - dX:= gdX * dmg; - dY:= gdY * dmg; - if dX < 0 then dX:= dX - 0.01 - else dX:= dX + 0.01; - if (x and LAND_WIDTH_MASK = 0) and ((y+cHHRadius+2) and LAND_HEIGHT_MASK = 0) and - (Land[y+cHHRadius+2, x] and lfIndestructible <> 0) then - fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, 0) * dmgMod) - else fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, erasure) * dmgMod); - if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI - if Score > 0 then - inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings - else - dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs - else if (dmg+fallDmg) >= abs(Score) then - if Score > 0 then - inc(rate, KillScore) - else - dec(rate, KillScore * friendlyfactor div 100) - else - if Score > 0 then - inc(rate, dmg+fallDmg) - else - dec(rate, (dmg+fallDmg) * friendlyfactor div 100) + dmg:= 0; + if abs(Point.x - x) + abs(Point.y - y) < baseDmg then + begin + dmg:= min(baseDmg - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))), 25); + dmg:= trunc(dmg * dmgMod); + end; + if dmg > 0 then + begin + if not(dead) and (Score > 0) and (dmg < Score) then + begin + pX:= Point.x; + pY:= Point.y; + dX:= gdX * dmg / Density; + dY:= gdY * dmg / Density; + if dX < 0 then dX:= dX - 0.01 + else dX:= dX + 0.01; + if (Kind = gtExplosives) and (State and gstTmpFlag = 0) and + (((abs(dY) > 0.15) and (abs(dX) < 0.02)) or + ((abs(dY) < 0.15) and (abs(dX) < 0.15))) then + dX:= 0; + if (x and LAND_WIDTH_MASK = 0) and ((y+cHHRadius+2) and LAND_HEIGHT_MASK = 0) and + (Land[y+cHHRadius+2, x] and lfIndestructible <> 0) then + fallDmg:= trunc(TraceFall(x, y, pX, pY, dX, dY, 0, Targets.ar[i]) * dmgMod) + else fallDmg:= trunc(TraceFall(x, y, pX, pY, dX, dY, erasure, Targets.ar[i]) * dmgMod) + end; + if Kind = gtHedgehog then + begin + if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI + begin + if Score > 0 then + inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings + else + dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs + end + else if (dmg+fallDmg) >= abs(Score) then + begin + dead:= true; + Targets.reset:= true; + if dX < 0.035 then + begin + subrate:= RealRateExplosion(Me, round(pX), round(pY), 61, afErasesLand or afTrackFall); + if abs(subrate) > 2000 then inc(Rate,subrate div 1024) + end; + if Score > 0 then + inc(rate, KillScore) + else + dec(rate, KillScore * friendlyfactor div 100) + end + else if Score > 0 then + inc(rate, dmg+fallDmg) + else dec(rate, (dmg+fallDmg) * friendlyfactor div 100) + end + else if (fallDmg >= 0) and ((dmg+fallDmg) >= Score) then + begin + dead:= true; + Targets.reset:= true; + if Kind = gtExplosives then + subrate:= RealRateExplosion(Me, round(pX), round(pY), 151, afErasesLand or afTrackFall) + else subrate:= RealRateExplosion(Me, round(pX), round(pY), 101, afErasesLand or afTrackFall); + if abs(subrate) > 2000 then inc(Rate,subrate div 1024); + end + end end; - end; if hadSkips and (rate = 0) then RateShotgun:= BadTurn else RateShotgun:= rate * 1024; + ResetTargets; end; function RateHammer(Me: PGear): LongInt; @@ -586,9 +774,8 @@ for i:= 0 to Pred(Targets.Count) do with Targets.ar[i] do - if matters then // hammer hit radius is 8, shift is 10 - if abs(Point.x - x) + abs(Point.y - y) < 18 then + if matters and (Kind = gtHedgehog) and (abs(Point.x - x) + abs(Point.y - y) < 18) then begin r:= trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))); diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uAmmos.pas diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uCollisions.pas Wed May 29 22:52:37 2013 +0400 @@ -83,7 +83,7 @@ X:= hwRound(Gear^.X); Y:= hwRound(Gear^.Y); Radius:= Gear^.Radius; - ChangeRoundInLand(X, Y, Radius - 1, true, (Gear = CurrentHedgehog^.Gear) or (Gear^.Kind = gtCase)); + ChangeRoundInLand(X, Y, Radius - 1, true, (Gear = CurrentHedgehog^.Gear) or ((Gear^.Kind = gtCase) and (Gear^.State and gstFrozen <> 0))); cGear:= Gear end; Gear^.CollisionIndex:= Count; @@ -104,7 +104,7 @@ if Gear^.CollisionIndex >= 0 then begin with cinfos[Gear^.CollisionIndex] do - ChangeRoundInLand(X, Y, Radius - 1, false, (Gear = CurrentHedgehog^.Gear) or (Gear^.Kind = gtCase)); + ChangeRoundInLand(X, Y, Radius - 1, false, (Gear = CurrentHedgehog^.Gear) or ((Gear^.Kind = gtCase) and (Gear^.State and gstFrozen <> 0))); cinfos[Gear^.CollisionIndex]:= cinfos[Pred(Count)]; cinfos[Gear^.CollisionIndex].cGear^.CollisionIndex:= Gear^.CollisionIndex; Gear^.CollisionIndex:= -1; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uConsts.pas Wed May 29 22:52:37 2013 +0400 @@ -212,6 +212,8 @@ gstLoser = $00080000; gstHHGone = $00100000; gstInvisible = $00200000; + gstSubmersible = $00400000; + gstFrozen = $00800000; // gear messages gmLeft = $00000001; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uGearsHedgehog.pas Wed May 29 22:52:37 2013 +0400 @@ -257,8 +257,16 @@ and ((Gear^.Message and gmLJump) <> 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then begin - newDx:= dX; - newDy:= dY; + if (CurAmmoGear^.AmmoType = amJetpack) and (Gear^.Message and gmPrecise <> 0) then + begin + newDx:= xx*cMaxPower/cPowerDivisor; + newDy:= yy*cMaxPower/cPowerDivisor + end + else + begin + newDx:= dX; + newDy:= dY + end; altUse:= true end else @@ -385,11 +393,15 @@ amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000); amIceGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtIceGun, 0, _0, _0, 0); end; - if altUse and (newGear <> nil) then + if altUse and (newGear <> nil) and + ((CurAmmoGear = nil) or (CurAmmoGear^.AmmoType <> amJetpack) or (Gear^.Message and gmPrecise = 0)) then begin newGear^.dX:= newDx / newGear^.Density; newGear^.dY:= newDY / newGear^.Density end; + if (CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack) and + (Gear^.Message and gmPrecise <> 0) and (hwRound(Y) > cWaterLine) then + newGear^.State:= newGear^.State or gstSubmersible; case CurAmmoType of amGrenade, amMolotov, @@ -514,7 +526,9 @@ begin if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft; - TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100; + if (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0) and (hwRound(CurAmmoGear^.Y) > cWaterLine) then + TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 25 + else TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100; end; if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (HHGear <> nil) then HHGear^.State:= HHGear^.State or gstAttacked; @@ -547,6 +561,7 @@ end else if Gear^.Timer = 1 then begin + Gear^.Hedgehog^.Effects[heFrozen]:= 0; Gear^.State:= Gear^.State or gstNoDamage; doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound); AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; @@ -798,7 +813,7 @@ da:= 2 else da:= 1; -if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then +if ((HHGear^.Message and gmPrecise = 0) or ((CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack))) or (GameTicks mod 5 = 1) then if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then dec(HHGear^.Angle, da) else @@ -961,8 +976,11 @@ begin Gear^.State:= Gear^.State and (not gstWinner); Gear^.State:= Gear^.State and (not gstMoving); - while (TestCollisionYWithGear(Gear,1) = 0) and (not CheckGearDrowning(Gear)) do - Gear^.Y:= Gear^.Y+_1; + while (TestCollisionYWithGear(Gear,1) = 0) and (not CheckGearDrowning(Gear)) and (Gear <> nil) do + Gear^.Y:= Gear^.Y + _1; + + // could become nil in CheckGearDrowning if ai's hog fails to respawn in ai survival + if Gear = nil then exit; SetLittle(Gear^.dX); Gear^.dY:= _0 end @@ -982,7 +1000,10 @@ Gear^.dY:= _0; Gear^.Y:= Gear^.Y + _1 end; + CheckGearDrowning(Gear); + // could become nil if ai's hog fails to respawn in ai survival + if Gear = nil then exit; // hide target cursor if current hog is drowning if (Gear^.State and gstDrowning) <> 0 then if (CurrentHedgehog^.Gear = Gear) then @@ -1059,7 +1080,7 @@ HHGear^.Message:= HHGear^.Message or gmAttack; // check for case with ammo t:= CheckGearNear(HHGear, gtCase, 36, 36); - if t <> nil then + if (t <> nil) and (t^.State and gstFrozen = 0) then PickUp(HHGear, t) end; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uGearsList.pas Wed May 29 22:52:37 2013 +0400 @@ -469,7 +469,8 @@ end; gtJetpack: begin gear^.Health:= 2000; - gear^.Damage:= 100 + gear^.Damage:= 100; + gear^.State:= gstSubmersible end; gtMolotov: begin gear^.Radius:= 6; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uGearsRender.pas Wed May 29 22:52:37 2013 +0400 @@ -979,6 +979,8 @@ aAngle: real; startX, endX, startY, endY: LongInt; begin + if Gear^.State and gstFrozen <> 0 then Tint($A0, $A0, $FF, $FF); + //if Gear^.State and gstFrozen <> 0 then Tint(IceColor or $FF); if Gear^.Target.X <> NoPointX then if Gear^.AmmoType = amBee then DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) @@ -1038,11 +1040,13 @@ gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); gtRope: DrawRope(Gear); - gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then + gtMine: begin + if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle) - else if Gear^.Health <> 0 then - DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) - else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + else if Gear^.Health <> 0 then + DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) + else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + end; gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) @@ -1056,26 +1060,38 @@ begin if ((Gear^.Pos and posCaseAmmo) <> 0) then begin - i:= (GameTicks shr 6) mod 64; - if i > 18 then - i:= 0; - DrawSprite(sprCase, x - 24, y - 24, i); + if Gear^.State and gstFrozen <> 0 then + DrawSprite(sprCase, x - 24, y - 28, 0) + else + begin + i:= (GameTicks shr 6) mod 64; + if i > 18 then i:= 0; + DrawSprite(sprCase, x - 24, y - 24, i) + end end else if ((Gear^.Pos and posCaseHealth) <> 0) then begin - i:= ((GameTicks shr 6) + 38) mod 64; - if i > 13 then - i:= 0; - DrawSprite(sprFAid, x - 24, y - 24, i); + if Gear^.State and gstFrozen <> 0 then + DrawSprite(sprFAid, x - 24, y - 28, 0) + else + begin + i:= ((GameTicks shr 6) + 38) mod 64; + if i > 13 then i:= 0; + DrawSprite(sprFAid, x - 24, y - 24, i) + end end else if ((Gear^.Pos and posCaseUtility) <> 0) then begin - i:= (GameTicks shr 6) mod 70; - if i > 23 then - i:= 0; - i:= i mod 12; - DrawSprite(sprUtility, x - 24, y - 24, i); - end; + if Gear^.State and gstFrozen <> 0 then + DrawSprite(sprUtility, x - 24, y - 28, 0) + else + begin + i:= (GameTicks shr 6) mod 70; + if i > 23 then i:= 0; + i:= i mod 12; + DrawSprite(sprUtility, x - 24, y - 24, i) + end + end end; if Gear^.Timer < 1833 then begin @@ -1096,7 +1112,7 @@ else if Gear^.State and gsttmpFlag = 0 then DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 0, 0, Gear^.DirAngle) else - DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle); + DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle) end; gtDynamite: DrawSprite(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1); gtClusterBomb: DrawSpriteRotated(sprClusterBomb, x, y, 0, Gear^.DirAngle); @@ -1285,6 +1301,7 @@ end; if Gear^.RenderTimer and (Gear^.Tex <> nil) then DrawTextureCentered(x + 8, y + 8, Gear^.Tex); + if Gear^.State and gstFrozen <> 0 then Tint($FF, $FF, $FF, $FF) end; end. diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uGearsUtils.pas Wed May 29 22:52:37 2013 +0400 @@ -31,13 +31,13 @@ procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource); procedure CheckHHDamage(Gear: PGear); procedure CalcRotationDirAngle(Gear: PGear); -procedure ResurrectHedgehog(gear: PGear); +procedure ResurrectHedgehog(var gear: PGear); procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); inline; procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean); function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; -function CheckGearDrowning(Gear: PGear): boolean; +function CheckGearDrowning(var Gear: PGear): boolean; procedure CheckCollision(Gear: PGear); inline; procedure CheckCollisionWithLand(Gear: PGear); inline; @@ -263,6 +263,7 @@ procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource); begin +if Hedgehog^.Effects[heFrozen] <> 0 then exit; if (Source = dsFall) or (Source = dsExplosion) then case random(3) of 0: PlaySoundV(sndOoff1, Hedgehog^.Team^.voicepack); @@ -289,32 +290,34 @@ i: LongWord; particle: PVisualGear; begin - if _0_4 < Gear^.dY then - begin - dmg := ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear); - PlaySound(sndBump); - if dmg < 1 then - exit; +if _0_4 < Gear^.dY then + begin + dmg := ModifyDamage(1 + hwRound((Gear^.dY - _0_4) * 70), Gear); + if Gear^.Hedgehog^.Effects[heFrozen] = 0 then + PlaySound(sndBump) + else PlaySound(sndFrozenHogImpact); + if dmg < 1 then + exit; - for i:= min(12, (3 + dmg div 10)) downto 0 do - begin - particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); - if particle <> nil then - particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480); - end; + for i:= min(12, (3 + dmg div 10)) downto 0 do + begin + particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); + if particle <> nil then + particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480); + end; - if (Gear^.Invulnerable) then - exit; + if (Gear^.Invulnerable) then + exit; - //if _0_6 < Gear^.dY then - // PlaySound(sndOw4, Gear^.Hedgehog^.Team^.voicepack) - //else - // PlaySound(sndOw1, Gear^.Hedgehog^.Team^.voicepack); + //if _0_6 < Gear^.dY then + // PlaySound(sndOw4, Gear^.Hedgehog^.Team^.voicepack) + //else + // PlaySound(sndOw1, Gear^.Hedgehog^.Team^.voicepack); - if Gear^.LastDamage <> nil then - ApplyDamage(Gear, Gear^.LastDamage, dmg, dsFall) - else - ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall); + if Gear^.LastDamage <> nil then + ApplyDamage(Gear, Gear^.LastDamage, dmg, dsFall) + else + ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall); end end; @@ -337,7 +340,7 @@ Gear^.DirAngle := Gear^.DirAngle - 360 end; -function CheckGearDrowning(Gear: PGear): boolean; +function CheckGearDrowning(var Gear: PGear): boolean; var skipSpeed, skipAngle, skipDecay: hwFloat; i, maxDrops, X, Y: LongInt; @@ -361,7 +364,7 @@ else DeleteGear(Gear); exit end; - isSubmersible:= (Gear = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack); + isSubmersible:= ((Gear = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0)) or (Gear^.State and gstSubmersible <> 0); skipSpeed := _0_25; skipAngle := _1_9; skipDecay := _0_87; @@ -369,7 +372,7 @@ vdX:= hwFloat2Float(Gear^.dX); vdY:= hwFloat2Float(Gear^.dY); // this could perhaps be a tiny bit higher. - if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > skipSpeed) + if (cWaterLine + 64 + Gear^.Radius > Y) and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > skipSpeed) and (hwAbs(Gear^.dX) > skipAngle * hwAbs(Gear^.dY)) then begin Gear^.dY.isNegative := true; @@ -390,7 +393,11 @@ if Gear^.Kind = gtHedgehog then begin if Gear^.Hedgehog^.Effects[heResurrectable] <> 0 then - ResurrectHedgehog(Gear) + begin + // Gear could become nil after this, just exit to skip splashes + ResurrectHedgehog(Gear); + exit + end else begin Gear^.doStep := @doStepDrowningGear; @@ -402,9 +409,12 @@ Gear^.doStep := @doStepDrowningGear; if Gear^.Kind = gtFlake then exit // skip splashes - end; + end + else if (Y > cWaterLine + cVisibleWater*4) and + ((Gear <> CurrentHedgehog^.Gear) or (CurAmmoGear = nil) or (CurAmmoGear^.State and gstSubmersible = 0)) then + Gear^.doStep:= @doStepDrowningGear; if ((not isSubmersible) and (Y < cWaterLine + 64 + Gear^.Radius)) - or (isSubmersible and (Y < cWaterLine + 2 + Gear^.Radius) and ((CurAmmoGear^.Pos = 0) + or (isSubmersible and (Y < cWaterLine + 2 + Gear^.Radius) and (Gear = CurAmmoGear) and ((CurAmmoGear^.Pos = 0) and (CurAmmoGear^.dY < _0_01))) then if Gear^.Density * Gear^.dY > _1 then PlaySound(sndSplash) @@ -416,7 +426,7 @@ if ((cReducedQuality and rqPlainSplash) = 0) and (((not isSubmersible) and (Y < cWaterLine + 64 + Gear^.Radius)) - or (isSubmersible and (Y < cWaterLine + 2 + Gear^.Radius) and ((CurAmmoGear^.Pos = 0) + or (isSubmersible and (Y < cWaterLine + 2 + Gear^.Radius) and (Gear = CurAmmoGear) and ((CurAmmoGear^.Pos = 0) and (CurAmmoGear^.dY < _0_01)))) then begin splash:= AddVisualGear(X, cWaterLine, vgtSplash); @@ -457,7 +467,7 @@ end end end; - if isSubmersible and (CurAmmoGear^.Pos = 0) then + if isSubmersible and (Gear = CurAmmoGear) and (CurAmmoGear^.Pos = 0) then CurAmmoGear^.Pos := 1000 end else @@ -465,7 +475,7 @@ end; -procedure ResurrectHedgehog(gear: PGear); +procedure ResurrectHedgehog(var gear: PGear); var tempTeam : PTeam; sparkles: PVisualGear; gX, gY: LongInt; @@ -507,7 +517,7 @@ RenderHealth(gear^.Hedgehog^); ScriptCall('onGearResurrect', gear^.uid); gear^.State := gstWait; - end; + end; RecountTeamHealth(tempTeam); end; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uLandGenMaze.pas --- a/hedgewars/uLandGenMaze.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uLandGenMaze.pas Wed May 29 22:52:37 2013 +0400 @@ -1,3 +1,5 @@ +{$INCLUDE "options.inc"} + unit uLandGenMaze; interface diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uLandTemplates.pas --- a/hedgewars/uLandTemplates.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uLandTemplates.pas Wed May 29 22:52:37 2013 +0400 @@ -1815,7 +1815,7 @@ FillPointsCount: Succ(High(Template0FPoints)); BezierizeCount: 3; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1826,7 +1826,7 @@ FillPointsCount: Succ(High(Template1FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1837,7 +1837,7 @@ FillPointsCount: Succ(High(Template2FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1848,7 +1848,7 @@ FillPointsCount: Succ(High(Template3FPoints)); BezierizeCount: 3; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1859,7 +1859,7 @@ FillPointsCount: Succ(High(Template4FPoints)); BezierizeCount: 3; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1870,7 +1870,7 @@ FillPointsCount: Succ(High(Template5FPoints)); BezierizeCount: 2; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1881,7 +1881,7 @@ FillPointsCount: Succ(High(Template6FPoints)); BezierizeCount: 2; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1892,7 +1892,7 @@ FillPointsCount: Succ(High(Template7FPoints)); BezierizeCount: 4; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1903,7 +1903,7 @@ FillPointsCount: Succ(High(Template8FPoints)); BezierizeCount: 2; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1914,7 +1914,7 @@ FillPointsCount: Succ(High(Template9FPoints)); BezierizeCount: 1; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1925,7 +1925,7 @@ FillPointsCount: Succ(High(Template10FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1936,7 +1936,7 @@ FillPointsCount: Succ(High(Template11FPoints)); BezierizeCount: 1; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1947,7 +1947,7 @@ FillPointsCount: Succ(High(Template12FPoints)); BezierizeCount: 3; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1958,7 +1958,7 @@ FillPointsCount: Succ(High(Template13FPoints)); BezierizeCount: 3; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1969,7 +1969,7 @@ FillPointsCount: Succ(High(Template14FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1980,7 +1980,7 @@ FillPointsCount: Succ(High(Template15FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -1991,7 +1991,7 @@ FillPointsCount: Succ(High(Template16FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -2002,7 +2002,7 @@ FillPointsCount: Succ(High(Template17FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 2848; + TemplateHeight: 1424; TemplateWidth: 3072; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 18; @@ -2013,7 +2013,7 @@ FillPointsCount: Succ(High(Template18FPoints)); BezierizeCount: 3; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2024,7 +2024,7 @@ FillPointsCount: Succ(High(Template19FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2035,7 +2035,7 @@ FillPointsCount: Succ(High(Template20FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2046,7 +2046,7 @@ FillPointsCount: Succ(High(Template21FPoints)); BezierizeCount: 3; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2057,7 +2057,7 @@ FillPointsCount: Succ(High(Template22FPoints)); BezierizeCount: 3; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2068,7 +2068,7 @@ FillPointsCount: Succ(High(Template23FPoints)); BezierizeCount: 2; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2079,7 +2079,7 @@ FillPointsCount: Succ(High(Template24FPoints)); BezierizeCount: 2; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2090,7 +2090,7 @@ FillPointsCount: Succ(High(Template25FPoints)); BezierizeCount: 4; RandPassesCount: 4; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2101,7 +2101,7 @@ FillPointsCount: Succ(High(Template26FPoints)); BezierizeCount: 2; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2112,7 +2112,7 @@ FillPointsCount: Succ(High(Template27FPoints)); BezierizeCount: 1; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2123,7 +2123,7 @@ FillPointsCount: Succ(High(Template28FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2134,7 +2134,7 @@ FillPointsCount: Succ(High(Template29FPoints)); BezierizeCount: 1; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2145,7 +2145,7 @@ FillPointsCount: Succ(High(Template30FPoints)); BezierizeCount: 3; RandPassesCount: 8; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2156,7 +2156,7 @@ FillPointsCount: Succ(High(Template31FPoints)); BezierizeCount: 3; RandPassesCount: 5; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2167,7 +2167,7 @@ FillPointsCount: Succ(High(Template32FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2178,7 +2178,7 @@ FillPointsCount: Succ(High(Template33FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2189,7 +2189,7 @@ FillPointsCount: Succ(High(Template34FPoints)); BezierizeCount: 2; RandPassesCount: 6; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; @@ -2200,7 +2200,7 @@ FillPointsCount: Succ(High(Template35FPoints)); BezierizeCount: 3; RandPassesCount: 7; - TemplateHeight: 1424; TemplateWidth: 3900; + TemplateHeight: 1424; TemplateWidth: 4096; canMirror: true; canFlip: false; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 36; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uPhysFSLayer.pas --- a/hedgewars/uPhysFSLayer.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uPhysFSLayer.pas Wed May 29 22:52:37 2013 +0400 @@ -46,6 +46,7 @@ function physfsReader(L: Plua_State; f: PFSFile; sz: Psize_t) : PChar; cdecl; external PhyslayerLibName; procedure physfsReaderSetBuffer(buf: pointer); cdecl; external PhyslayerLibName; +procedure hedgewarsMountPackage(filename: PChar); cdecl; external PhyslayerLibName; implementation uses uUtils, uVariables, sysutils; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uScript.pas Wed May 29 22:52:37 2013 +0400 @@ -2039,7 +2039,8 @@ // call the script file lua_pcall(luaState, 0, 0, 0); ScriptLoaded:= true - end + end; + hedgewarsMountPackage(Str2PChar(copy(s, 1, length(s)-4)+'.hwp')); end; procedure SetGlobals; @@ -2261,6 +2262,7 @@ ScriptSetInteger('gfMultiWeapon', gfMultiWeapon); ScriptSetInteger('gfSolidLand', gfSolidLand); ScriptSetInteger('gfBorder', gfBorder); +ScriptSetInteger('gfBottomBorder', gfBottomBorder); ScriptSetInteger('gfDivideTeams', gfDivideTeams); ScriptSetInteger('gfLowGravity', gfLowGravity); ScriptSetInteger('gfLaserSight', gfLaserSight); diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uSound.pas Wed May 29 22:52:37 2013 +0400 @@ -155,7 +155,7 @@ (FileName: 'Yessir.ogg'; Path: ptVoices),// sndYesSir (FileName: 'Laugh.ogg'; Path: ptVoices),// sndLaugh (FileName: 'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou - (FileName: 'JustYouWait.ogg'; Path: ptVoices),// sndJustYouWait + (FileName: 'Justyouwait.ogg'; Path: ptVoices),// sndJustyouwait (FileName: 'Incoming.ogg'; Path: ptVoices),// sndIncoming (FileName: 'Missed.ogg'; Path: ptVoices),// sndMissed (FileName: 'Stupid.ogg'; Path: ptVoices),// sndStupid @@ -248,7 +248,10 @@ (FileName: 'bump.ogg'; Path: ptSounds),// sndBump (FileName: 'hogchant3.ogg'; Path: ptSounds),// sndResurrector (FileName: 'plane.ogg'; Path: ptSounds),// sndPlane - (FileName: 'TARDIS.ogg'; Path: ptSounds) // sndTardis + (FileName: 'TARDIS.ogg'; Path: ptSounds),// sndTardis + (FileName: 'frozen_hog_impact.ogg'; Path: ptSounds),// sndFrozenHogImpact + (FileName: 'ice_beam.ogg'; Path: ptSounds),// sndIceBeam + (FileName: 'hog_freeze.ogg'; Path: ptSounds) // sndHogFreeze ); diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uTeams.pas Wed May 29 22:52:37 2013 +0400 @@ -110,7 +110,7 @@ end; procedure SwitchHedgehog; -var c, i, j: LongWord; +var c, i, t, j: LongWord; PrevHH, PrevTeam : LongWord; begin TargetPoint.X:= NoPointX; @@ -173,15 +173,7 @@ if c = ClansCount then begin if not PlacingHogs then - begin inc(TotalRounds); - for i:= 0 to Pred(TeamsCount) do - with TeamsArray[i]^ do - for j:= 0 to Pred(HedgehogsNumber) do - with Hedgehogs[j] do - if Effects[heFrozen] > 255 then - Effects[heFrozen]:= max(255,Effects[heFrozen]-50000) - end; c:= 0 end; @@ -196,11 +188,22 @@ PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn) repeat CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; - until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] = 0)) or (CurrHedgehog = PrevHH) + until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] < 256)) or (CurrHedgehog = PrevHH) end - until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0)); - end -until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] = 0); + until ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 50256)) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0)) + end; + if (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then + begin + inc(CurrentTeam^.Clan^.TurnNumber); + with CurrentTeam^.Clan^ do + for t:= 0 to Pred(TeamsNumber) do + with Teams[t]^ do + for i:= 0 to Pred(HedgehogsNumber) do + with Hedgehogs[i] do + if Effects[heFrozen] > 255 then + Effects[heFrozen]:= max(255,Effects[heFrozen]-50000) + end +until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256); SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog])); {$IFDEF USE_TOUCH_INTERFACE} @@ -247,6 +250,13 @@ end; inc(CurrentTeam^.Clan^.TurnNumber); +with CurrentTeam^.Clan^ do + for t:= 0 to Pred(TeamsNumber) do + with Teams[t]^ do + for i:= 0 to Pred(HedgehogsNumber) do + with Hedgehogs[i] do + if Effects[heFrozen] > 255 then + Effects[heFrozen]:= max(255,Effects[heFrozen]-50000); CurWeapon:= GetCurAmmoEntry(CurrentHedgehog^); if CurWeapon^.Count = 0 then diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uTypes.pas Wed May 29 22:52:37 2013 +0400 @@ -140,7 +140,8 @@ sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater, sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8, sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack, - sndComeonthen, sndParachute, sndBump, sndResurrector, sndPlane, sndTardis); + sndComeonthen, sndParachute, sndBump, sndResurrector, sndPlane, sndTardis, sndFrozenHogImpact, sndIceBeam, sndHogFreeze + ); // Available ammo types to be used by hedgehogs TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6 diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uVariables.pas Wed May 29 22:52:37 2013 +0400 @@ -1765,7 +1765,6 @@ Ammo: (Propz: ammoprop_NoRoundEnd or ammoprop_ForwMsgs or ammoprop_AttackInMove or - ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Utility or ammoprop_NeedUpDown or @@ -2100,7 +2099,7 @@ TimeAfterTurn: 3000; minAngle: 0; maxAngle: 0; - isDamaging: true; + isDamaging: false; SkipTurns: 0; PosCount: 1; PosSprite: sprWater; @@ -2177,7 +2176,7 @@ AmmoType: amLandGun; AttackVoice: sndNone; Bounciness: 1000); - Slot: 2; + Slot: 6; TimeAfterTurn: 0; minAngle: 0; maxAngle: 0; @@ -2202,11 +2201,11 @@ AmmoType: amIceGun; AttackVoice: sndNone; Bounciness: 1000); - Slot: 9; + Slot: 2; TimeAfterTurn: 0; minAngle: 0; maxAngle: 0; - isDamaging: true; + isDamaging: false; SkipTurns: 0; PosCount: 1; PosSprite: sprWater; diff -r e095e3023682 -r 7f04ad2cda54 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sun Apr 21 01:36:08 2013 +0200 +++ b/hedgewars/uWorld.pas Wed May 29 22:52:37 2013 +0400 @@ -1320,7 +1320,7 @@ // draw health bars right border inc(r.x, cTeamHealthWidth + 2); r.w:= 3; - DrawTextureFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); + DrawTextureFromRect(TeamHealthBarWidth + 15, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); if not highlight and (not hasGone) then for i:= 0 to cMaxHHIndex do @@ -1357,7 +1357,7 @@ // draw health bar r.w:= TeamHealthBarWidth + 1; r.h:= HealthTex^.h - 4; - DrawTextureFromRect(16, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); + DrawTextureFromRect(15, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); if not hasGone and (TeamHealth > 1) then begin Tint(Clan^.Color shl 8 or $FF); diff -r e095e3023682 -r 7f04ad2cda54 misc/libphyslayer/hwpacksmounter.c --- a/misc/libphyslayer/hwpacksmounter.c Sun Apr 21 01:36:08 2013 +0200 +++ b/misc/libphyslayer/hwpacksmounter.c Wed May 29 22:52:37 2013 +0400 @@ -33,3 +33,24 @@ PHYSFS_freeList(filesList); } + +PHYSFS_DECL void hedgewarsMountPackage(char * fileName) +{ + int fileNameLength = strlen(fileName); + if (fileNameLength > 4) + if (strcmp(fileName + fileNameLength - 4, ".hwp") == 0) + { + const char * dir = PHYSFS_getRealDir(fileName); + if(dir) + { + char * fullPath = (char *)malloc(strlen(dir) + fileNameLength + 2); + strcpy(fullPath, dir); + strcat(fullPath, "/"); + strcat(fullPath, fileName); + + PHYSFS_mount(fullPath, NULL, 0); + + free(fullPath); + } + } +} diff -r e095e3023682 -r 7f04ad2cda54 misc/libphyslayer/hwpacksmounter.h --- a/misc/libphyslayer/hwpacksmounter.h Sun Apr 21 01:36:08 2013 +0200 +++ b/misc/libphyslayer/hwpacksmounter.h Wed May 29 22:52:37 2013 +0400 @@ -8,7 +8,7 @@ #endif PHYSFS_DECL void hedgewarsMountPackages(); - +PHYSFS_DECL void hedgewarsMountPackage(char * fileName); #ifdef __cplusplus } diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Graphics/Hats/SunWukong.png diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ar.ts --- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -255,6 +255,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -354,6 +366,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -473,10 +489,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -492,6 +504,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -536,7 +552,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 انضم</translation> + <translation type="obsolete">%1 *** %2 انضم</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -730,6 +746,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -871,6 +898,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1958,6 +1993,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3059,119 +3098,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_bg.ts --- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -472,10 +488,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Зареждане на начертана карта</translation> </message> @@ -491,6 +503,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -535,7 +551,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 се присъедини</translation> + <translation type="obsolete">%1 *** %2 се присъедини</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -729,6 +745,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -870,6 +897,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Запазване</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1973,6 +2008,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3075,119 +3114,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_cs.ts --- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -260,6 +260,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -359,6 +371,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -478,10 +494,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Nahrát nakreslenou mapu</translation> </message> @@ -497,6 +509,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -541,7 +557,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 se připojil</translation> + <translation type="obsolete">%1 *** %2 se připojil</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -735,6 +751,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -882,6 +909,14 @@ <numerusform><b>%1</b> byl vystrašený a přeskočil tah <b>%2</b> krát.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Uložit</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1987,6 +2022,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3090,119 +3129,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_da.ts --- a/share/hedgewars/Data/Locale/hedgewars_da.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_da.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -258,6 +258,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Mislykkedes at gemme typografiark til %1</translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -357,6 +369,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -476,10 +492,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Indlæs tegnet bane</translation> </message> @@ -495,6 +507,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -539,7 +555,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 har tilsluttet sig</translation> + <translation type="obsolete">%1 *** %2 har tilsluttet sig</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -733,6 +749,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -874,6 +901,14 @@ <numerusform><b>%1</b> blev bange og sprang over sin tur <b>%2</b> gange.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Gem</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1981,6 +2016,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3083,119 +3122,4 @@ <translation>DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_de.ts --- a/share/hedgewars/Data/Locale/hedgewars_de.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -261,6 +261,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Style-Sheet konnte nich nach %1 gesichert werden</translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -360,6 +372,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -479,10 +495,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Gezeichnete Karte laden</translation> </message> @@ -498,6 +510,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -542,7 +558,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 ist beigetreten</translation> + <translation type="obsolete">%1 *** %2 ist beigetreten</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -736,6 +752,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -877,6 +904,14 @@ <numerusform><b>%1</b> hatte Angst und übersprang <b>%2</b> Runden.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Sichern</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1986,6 +2021,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3116,119 +3155,4 @@ <translation>Steuerkreuz</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_el.ts --- a/share/hedgewars/Data/Locale/hedgewars_el.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_el.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -355,6 +367,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -474,10 +490,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -493,6 +505,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -537,7 +553,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation type="unfinished">%1 *** %2 εισήλθε</translation> + <translation type="obsolete">%1 *** %2 εισήλθε</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -731,6 +747,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Eraser</source> @@ -872,6 +899,14 @@ <numerusform>Ο <b>%1</b> φοβήθηκε και παραχώρησε τη σειρά του <b>%2</b> φορές.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1975,6 +2010,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3077,119 +3116,4 @@ <translation type="unfinished">DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_en.ts --- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -472,10 +488,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -491,6 +503,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -535,7 +551,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 has joined</translation> + <translation type="obsolete">%1 *** %2 has joined</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -729,6 +745,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -870,6 +897,14 @@ <numerusform><b>%1</b> was scared and skipped turn <b>%2</b> times.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1957,6 +1992,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3059,119 +3098,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_es.ts --- a/share/hedgewars/Data/Locale/hedgewars_es.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -258,6 +258,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -357,6 +369,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -476,10 +492,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Cargar mapa</translation> </message> @@ -495,6 +507,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -539,7 +555,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 ha entrado</translation> + <translation type="obsolete">%1 *** %2 ha entrado</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -733,6 +749,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -874,6 +901,14 @@ <numerusform><b>%1</b> tenía demasiado miedo y pasó <b>%2</b> turnos.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Guardar</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1977,6 +2012,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3079,119 +3118,4 @@ <translation>DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_fi.ts --- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -472,10 +488,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -491,6 +503,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -535,7 +551,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 liittyi</translation> + <translation type="obsolete">%1 *** %2 liittyi</translation> </message> <message> <source>%1 *** %2 has left</source> @@ -729,6 +745,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -870,6 +897,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1973,6 +2008,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3075,119 +3114,4 @@ <translation>Hiiri: Vasen nappi</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Wed May 29 22:52:37 2013 +0400 @@ -100,7 +100,7 @@ </message> <message> <source>Please give us feedback!</source> - <translation>Nous avons besoin de votre avis!</translation> + <translation type="obsolete">Nous avons besoin de votre avis!</translation> </message> <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> @@ -108,11 +108,23 @@ </message> <message> <source>If you found a bug, you can see if it's already known here (english): </source> - <translation>Si vous trouvez un bug, vous pouvez vérifier si il est déjà connu ici (anglais): </translation> + <translation type="obsolete">Si vous trouvez un bug, vous pouvez vérifier si il est déjà connu ici (anglais): </translation> </message> <message> <source>Your email address is optional, but we may want to contact you.</source> - <translation>Votre adresse email est optionelle, mais il est possible que nous essayons de vous contacter.</translation> + <translation type="obsolete">Votre adresse email est optionelle, mais il est possible que nous essayons de vous contacter.</translation> + </message> + <message> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -227,11 +239,11 @@ </message> <message> <source>%1 has been removed from your friends list</source> - <translation>%1 a été retiré de votre liste d'amis</translation> + <translation>%1 a été retiré de votre liste d'amis</translation> </message> <message> <source>%1 has been added to your friends list</source> - <translation>%1 a été ajouté à votre liste d'amis</translation> + <translation>%1 a été ajouté à votre liste d'amis</translation> </message> <message> <source>Stylesheet imported from %1</source> @@ -239,7 +251,7 @@ </message> <message> <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source> - <translation>Entrez %1 si vous voulez utiliser cette Feuille de style (Stylesheet) à l'avenir, entrez %2 pour rétablir l'ancienne apparence!</translation> + <translation>Entrez %1 si vous voulez utiliser cette Feuille de style (Stylesheet) à l'avenir, entrez %2 pour rétablir l'ancienne apparence!</translation> </message> <message> <source>Couldn't read %1</source> @@ -255,14 +267,26 @@ </message> <message> <source>Failed to save StyleSheet to %1</source> - <translation>Impossible d'enregistrer la feuille de style (Stylesheet) dans %1</translation> + <translation>Impossible d'enregistrer la feuille de style (Stylesheet) dans %1</translation> + </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>HWForm</name> <message> <source>Cannot save record to file %1</source> - <translation>Impossible de sauvegarder l'enregistrement dans le fichier %1</translation> + <translation>Impossible de sauvegarder l'enregistrement dans le fichier %1</translation> </message> <message> <source>DefaultTeam</source> @@ -301,7 +325,7 @@ <message> <source>Someone already uses your nickname %1 on the server. Please pick another nickname:</source> - <translation>Quelqu'un utilise déjà le pseudo %1 sur le serveur + <translation>Quelqu'un utilise déjà le pseudo %1 sur le serveur Veuillez choisir un autre pseudo:</translation> </message> <message> @@ -318,9 +342,9 @@ If this nick isn't yours, please register your own nick at www.hedgewars.org Password:</source> - <translation>Ce pseudo est enregistré, vous n'avez spécifié aucun mot de passe. + <translation>Ce pseudo est enregistré, vous n'avez spécifié aucun mot de passe. -Si ce pseudo n'est pas le votre, veuillez enregistrer votre propre pseudo sur www.hedgewars.org +Si ce pseudo n'est pas le votre, veuillez enregistrer votre propre pseudo sur www.hedgewars.org Mot de passe:</translation> </message> @@ -328,9 +352,9 @@ <source>Your nickname is not registered. To prevent someone else from using it, please register it at www.hedgewars.org</source> - <translation>Votre pseudo n'est pas enregistré. -Pour éviter que d'autre joueurs l'utilisent, -veuillez l'enregistrer sur www.hedgewars.org</translation> + <translation>Votre pseudo n'est pas enregistré. +Pour éviter que d'autre joueurs l'utilisent, +veuillez l'enregistrer sur www.hedgewars.org</translation> </message> <message> <source> @@ -338,7 +362,7 @@ Your password wasn't saved either.</source> <translation> -Votre mot de passe non plus n'a pas été sauvegardé.</translation> +Votre mot de passe non plus n'a pas été sauvegardé.</translation> </message> <message> <source>Hedgewars - Empty nickname</source> @@ -358,7 +382,7 @@ </message> <message> <source>Hedgewars - Connection error</source> - <translation >Hedgewars - Erreur de connexion</translation> + <translation>Hedgewars - Erreur de connexion</translation> </message> <message> <source>You reconnected too fast. @@ -366,6 +390,10 @@ <translation>Vous vous êtes reconnecté trop rapidement. Attendez quelques secondes et réessayez.</translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -450,11 +478,11 @@ </message> <message> <source>Load map drawing</source> - <translation>Charger un carte dessinée</translation> + <translation>Charger un dessin</translation> </message> <message> <source>Edit map drawing</source> - <translation>Editer un carte dessinée</translation> + <translation>Editer un dessin</translation> </message> <message> <source>Small islands</source> @@ -486,7 +514,7 @@ </message> <message> <source>Theme: </source> - <translation>Theme</translation> + <translation type="obsolete">Theme: </translation> </message> <message> <source>Load drawn map</source> @@ -504,6 +532,10 @@ <source>Large tunnels</source> <translation>Grands tunnels</translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -548,7 +580,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 vient d'arriver</translation> + <translation type="obsolete">%1 *** %2 vient d'arriver</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -560,7 +592,7 @@ </message> <message> <source>User quit</source> - <translation>S'est déconnecté</translation> + <translation>S'est déconnecté</translation> </message> <message> <source>Remote host has closed connection</source> @@ -568,7 +600,7 @@ </message> <message> <source>The server is too old. Disconnecting now.</source> - <translation>La version du serveur n'est pas à jour. Déconnexion.</translation> + <translation>La version du serveur n'est pas à jour. Déconnexion.</translation> </message> </context> <context> @@ -583,7 +615,7 @@ If you don't have an account on www.hedgewars.org, just enter your nickname.</source> <translation>Pour vous connecter sur le serveur, veuillez entrer vos identifiants. -Si vous n'avez pas de compte sur www.hedgewars.org, +Si vous n'avez pas de compte sur www.hedgewars.org, entrez juste votre pseudo.</translation> </message> <message> @@ -655,7 +687,7 @@ </message> <message> <source>%1 fps, </source> - <translation>%1 fps</translation> + <translation>%1 fps, </translation> </message> <message> <source>Audio: </source> @@ -744,6 +776,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -790,7 +833,7 @@ </message> <message> <source>Select an action to choose a custom key bind for this team</source> - <translation>Choisissez une action afin d'y attribuer une touche pour cette équipe</translation> + <translation>Choisissez une action afin d'y attribuer une touche pour cette équipe</translation> </message> <message> <source>Use my default</source> @@ -885,6 +928,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Enregistrer</translation> + </message> </context> <context> <name>PageInGame</name> @@ -897,7 +948,7 @@ <name>PageInfo</name> <message> <source>Open the snapshot folder</source> - <translation>Ouvrir le dossier de captures d'écran</translation> + <translation>Ouvrir le dossier de captures d'écran</translation> </message> </context> <context> @@ -1088,7 +1139,7 @@ </message> <message> <source>Select an action to change what key controls it</source> - <translation>Choisissez une action afin d'y attribuer une touche</translation> + <translation>Choisissez une action afin d'y attribuer une touche</translation> </message> <message> <source>Reset to default</source> @@ -1148,7 +1199,7 @@ </message> <message> <source>Frontend audio</source> - <translation>Son de l'interface</translation> + <translation>Son de l'interface</translation> </message> <message> <source>Account</source> @@ -1172,7 +1223,7 @@ </message> <message> <source>Video recording options</source> - <translation>Option d'enregistrement vidéo</translation> + <translation>Option d'enregistrement vidéo</translation> </message> </context> <context> @@ -1194,7 +1245,7 @@ </message> <message> <source>Join</source> - <translation>Rejoindre</translation> + <translation type="obsolete">Rejoindre</translation> </message> <message> <source>Admin features</source> @@ -1249,7 +1300,7 @@ </message> <message> <source>Open server administration page</source> - <translation>Ouvre la page d'administration du serveur</translation> + <translation>Ouvre la page d'administration du serveur</translation> </message> </context> <context> @@ -1398,11 +1449,11 @@ <name>PageSinglePlayer</name> <message> <source>Play a quick game against the computer with random settings</source> - <translation>Jouer une partie rapide contre l'ordinateur avec des règles aléatoires</translation> + <translation>Jouer une partie rapide contre l'ordinateur avec des règles aléatoires</translation> </message> <message> <source>Play a hotseat game against your friends, or AI teams</source> - <translation>Jouer une partie sur cet ordinateur contre vos amis ou l'IA</translation> + <translation>Jouer une partie sur cet ordinateur contre vos amis ou l'IA</translation> </message> <message> <source>Campaign Mode</source> @@ -1528,7 +1579,7 @@ </message> <message> <source>Restrict Unregistered Players Join</source> - <translation>Bloquer l'acces au joueurs non-enregistrés</translation> + <translation>Bloquer l'acces au joueurs non-enregistrés</translation> </message> <message> <source>Show games in lobby</source> @@ -1607,11 +1658,11 @@ </message> <message> <source>Frontend sound effects</source> - <translation>Effet sonores de l'interface</translation> + <translation>Effet sonores de l'interface</translation> </message> <message> <source>Frontend music</source> - <translation>Musique de l'interface</translation> + <translation>Musique de l'interface</translation> </message> </context> <context> @@ -1638,11 +1689,11 @@ </message> <message> <source>In lobby</source> - <translation>En attente</translation> + <translation type="obsolete">En attente</translation> </message> <message> <source>In progress</source> - <translation>En cours</translation> + <translation type="obsolete">En cours</translation> </message> <message> <source>Disabled</source> @@ -1848,7 +1899,7 @@ </message> <message> <source>Tip: </source> - <translation>Conseil : </translation> + <translation>Conseil: </translation> </message> <message> <source>Quality</source> @@ -1952,7 +2003,7 @@ </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!</source> - <translation>Cette version est "en cours de développement" il est possible qu'elle ne soit pas compatible avec les autres versions du jeu, des parties peuvent ne pas fonctionner ou être incompletes!</translation> + <translation>Cette version est "en cours de développement" il est possible qu'elle ne soit pas compatible avec les autres versions du jeu, des parties peuvent ne pas fonctionner ou être incompletes!</translation> </message> <message> <source>Fullscreen</source> @@ -1990,6 +2041,10 @@ <source>This program is distributed under the %1</source> <translation>Ce programme est distribué par %1</translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -2034,7 +2089,7 @@ <message> <source>Error while authenticating at google.com: </source> - <translation>Erreur lors de l'authentification à google.com: + <translation>Erreur lors de l'authentification à google.com: </translation> </message> <message> @@ -2044,7 +2099,7 @@ <message> <source>Error while sending metadata to youtube.com: </source> - <translation>Erreur lors de l'envoi des metadata à youtube.com: + <translation>Erreur lors de l'envoi des metadata à youtube.com: </translation> </message> <message> @@ -2053,11 +2108,11 @@ </message> <message> <source>Do you really want to delete the team '%1'?</source> - <translation>Voulez-vous vraiment supprimer l'équipe "%1"</translation> + <translation>Voulez-vous vraiment supprimer l'équipe "%1"</translation> </message> <message> <source>Cannot delete default scheme '%1'!</source> - <translation>Impossible de retirer la règle par défaut "%1"</translation> + <translation>Impossible de retirer la règle par défaut "%1"</translation> </message> <message> <source>Please select a record from the list</source> @@ -2077,7 +2132,7 @@ </message> <message> <source>All file associations have been set</source> - <translation>Les associations d'extensions de fichiers ont été effectuées</translation> + <translation>Les associations d'extensions de fichiers ont été effectuées</translation> </message> <message> <source>Cannot create directory %1</source> @@ -2101,11 +2156,11 @@ </message> <message> <source>Please enter room name</source> - <translation>Veuillez saisir le nom d'une room</translation> + <translation>Veuillez saisir le nom d'une room</translation> </message> <message> <source>Record Play - Error</source> - <translation>Jouer l'enregistrement - Erreur</translation> + <translation>Jouer l'enregistrement - Erreur</translation> </message> <message> <source>Please select record from the list</source> @@ -2113,11 +2168,11 @@ </message> <message> <source>Cannot rename to </source> - <translation>Impossible de renommer en</translation> + <translation>Impossible de renommer en </translation> </message> <message> <source>Cannot delete file </source> - <translation>Impossible de supprimer le fichier</translation> + <translation>Impossible de supprimer le fichier </translation> </message> <message> <source>Room Name - Error</source> @@ -2147,7 +2202,7 @@ </message> <message> <source>Do you really want to delete the game scheme '%1'?</source> - <translation>Etes-vous sûr de vouloir supprimer cette règle : "%1" ?</translation> + <translation>Etes-vous sûr de vouloir supprimer cette règle : "%1" ?</translation> </message> <message> <source>Videos - Are you sure?</source> @@ -2155,7 +2210,7 @@ </message> <message> <source>Do you really want to delete the video '%1'?</source> - <translation>Etes-vous sûr de vouloir supprimer cette vidéo : "%1" ?</translation> + <translation>Etes-vous sûr de vouloir supprimer cette vidéo : "%1" ?</translation> </message> <message numerus="yes"> <source>Do you really want to remove %1 file(s)?</source> @@ -2166,7 +2221,7 @@ </message> <message> <source>Do you really want to cancel uploading %1?</source> - <translation>Voulez-vous arreter l'importation de %1?</translation> + <translation>Voulez-vous arreter l'importation de %1?</translation> </message> <message> <source>File error</source> @@ -2174,7 +2229,7 @@ </message> <message> <source>Cannot open '%1' for writing</source> - <translation>Impossible d'écrire le fichier %1</translation> + <translation>Impossible d'écrire le fichier %1</translation> </message> <message> <source>Cannot open '%1' for reading</source> @@ -2182,7 +2237,7 @@ </message> <message> <source>Cannot use the ammo '%1'!</source> - <translation>Impossible d'utiliser cette arme : "%1"</translation> + <translation>Impossible d'utiliser cette arme : "%1"</translation> </message> <message> <source>Weapons - Warning</source> @@ -2190,11 +2245,11 @@ </message> <message> <source>Cannot overwrite default weapon set '%1'!</source> - <translation>Impossible de remplacer le set d'arme "%1"</translation> + <translation>Impossible de remplacer le set d'arme "%1"</translation> </message> <message> <source>Cannot delete default weapon set '%1'!</source> - <translation>Impossible de supprimer le set d'arme par défaut "%1"</translation> + <translation>Impossible de supprimer le set d'arme par défaut "%1"</translation> </message> <message> <source>Weapons - Are you sure?</source> @@ -2202,7 +2257,7 @@ </message> <message> <source>Do you really want to delete the weapon set '%1'?</source> - <translation>Etes-vous sûr de vouloir supprimer le set d'arme "%1"?</translation> + <translation>Etes-vous sûr de vouloir supprimer le set d'arme "%1"?</translation> </message> <message> <source>Hedgewars - Nick not registered</source> @@ -2303,7 +2358,7 @@ </message> <message> <source>More info</source> - <translation>Plus d'info</translation> + <translation>Plus d'info</translation> </message> <message> <source>Set default options</source> @@ -2323,7 +2378,7 @@ </message> <message> <source>Cancel uploading</source> - <translation>Annuler l'importation</translation> + <translation>Annuler l'importation</translation> </message> <message> <source>Restore default coding parameters</source> @@ -3099,116 +3154,112 @@ <context> <name>server</name> <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Authentication failed</source> - <translation>Echec d'authentification</translation> + <translation type="obsolete">Echec d'authentification</translation> </message> <message> <source>60 seconds cooldown after kick</source> - <translation>Bannis pour 60 sec après un kick</translation> + <translation type="obsolete">Bannis pour 60 sec après un kick</translation> </message> <message> <source>kicked</source> - <translation>Exclus (kick)</translation> + <translation type="obsolete">Exclus (kick)</translation> </message> <message> <source>Ping timeout</source> - <translation>Met trop de temps à répondre</translation> + <translation type="obsolete">Met trop de temps à répondre</translation> </message> <message> <source>bye</source> - <translation>Aurevoir</translation> + <translation type="obsolete">Aurevoir</translation> </message> <message> <source>Empty config entry</source> - <translation>Configuration vide</translation> + <translation type="obsolete">Configuration vide</translation> </message> <message> <source>Not room master</source> - <translation>Vous n'êtes pas le propriétaire de la room</translation> + <translation type="obsolete">Vous n'êtes pas le propriétaire de la room</translation> </message> <message> <source>Corrupted hedgehogs info</source> - <translation>Info hérisson corrompus</translation> + <translation type="obsolete">Info hérisson corrompus</translation> </message> <message> <source>too many teams</source> - <translation>trop d'équipes</translation> + <translation type="obsolete">trop d'équipes</translation> </message> <message> <source>too many hedgehogs</source> - <translation>trop de hérissons</translation> + <translation type="obsolete">trop de hérissons</translation> </message> <message> <source>There's already a team with same name in the list</source> - <translation>Il y a déja une équipe avec le même nom dans la liste</translation> + <translation type="obsolete">Il y a déja une équipe avec le même nom dans la liste</translation> </message> <message> <source>round in progress</source> - <translation>La partie est en cour</translation> + <translation type="obsolete">La partie est en cour</translation> </message> <message> <source>restricted</source> - <translation>Ajout interdis</translation> + <translation type="obsolete">Ajout interdis</translation> </message> <message> <source>REMOVE_TEAM: no such team</source> - <translation>REMOVE_TEAM: aucune équipe de ce nom</translation> + <translation type="obsolete">REMOVE_TEAM: aucune équipe de ce nom</translation> </message> <message> <source>Not team owner!</source> - <translation>Vous n'êtes pas le propriétaire de cette équipe!</translation> + <translation type="obsolete">Vous n'êtes pas le propriétaire de cette équipe!</translation> </message> <message> <source>Less than two clans!</source> - <translation>Il faut 2 clans minimum!</translation> + <translation type="obsolete">Il faut 2 clans minimum!</translation> </message> <message> <source>Room with such name already exists</source> - <translation>Ce nom de room existe déjà</translation> + <translation type="obsolete">Ce nom de room existe déjà</translation> </message> <message> <source>Illegal room name</source> - <translation>Nom de room invalide</translation> + <translation type="obsolete">Nom de room invalide</translation> </message> <message> <source>No such room</source> - <translation>Cette room n'existe pas</translation> + <translation type="obsolete">Cette room n'existe pas</translation> </message> <message> <source>Joining restricted</source> - <translation>Accès interdis</translation> + <translation type="obsolete">Accès interdis</translation> </message> <message> <source>Registered users only</source> - <translation>Accès réservé aux utilisateurs enregistré</translation> + <translation type="obsolete">Accès réservé aux utilisateurs enregistré</translation> </message> <message> <source>You are banned in this room</source> - <translation>Vous avez été bannis de cette room</translation> + <translation type="obsolete">Vous avez été bannis de cette room</translation> </message> <message> <source>Nickname already chosen</source> - <translation>Pseudo déjà choisis</translation> + <translation type="obsolete">Pseudo déjà choisis</translation> </message> <message> <source>Illegal nickname</source> - <translation>Pseudo invalide</translation> + <translation type="obsolete">Pseudo invalide</translation> </message> <message> <source>Protocol already known</source> - <translation>Protocole déjà connu</translation> + <translation type="obsolete">Protocole déjà connu</translation> </message> <message> <source>Bad number</source> - <translation>Mauvais numéro</translation> + <translation type="obsolete">Mauvais numéro</translation> </message> <message> <source>Nickname is already in use</source> - <translation>Ce pseudo est actuellement utilisé sur le serveur</translation> + <translation type="obsolete">Ce pseudo est actuellement utilisé sur le serveur</translation> </message> </context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_gl.ts --- a/share/hedgewars/Data/Locale/hedgewars_gl.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_gl.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -472,10 +488,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -491,6 +503,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -535,7 +551,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 uniuse</translation> + <translation type="obsolete">%1 *** %2 uniuse</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -729,6 +745,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Eraser</source> @@ -870,6 +897,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1961,6 +1996,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3062,119 +3101,4 @@ <translation>Mando</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_hu.ts --- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -248,6 +248,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -347,6 +359,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -466,10 +482,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -485,6 +497,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -529,7 +545,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 csatlakozott</translation> + <translation type="obsolete">%1 *** %2 csatlakozott</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -723,6 +739,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -858,6 +885,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1947,6 +1982,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3047,119 +3086,4 @@ <translation>DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_it.ts --- a/share/hedgewars/Data/Locale/hedgewars_it.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Wed May 29 22:52:37 2013 +0400 @@ -100,7 +100,7 @@ </message> <message> <source>Please give us feedback!</source> - <translation>Per favore, inviaci un commento!</translation> + <translation type="obsolete">Per favore, inviaci un commento!</translation> </message> <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> @@ -108,11 +108,23 @@ </message> <message> <source>If you found a bug, you can see if it's already known here (english): </source> - <translation>Se torvi u nbaco, puoi vedere se è già conosciuto qui (in inglese): </translation> + <translation type="obsolete">Se torvi u nbaco, puoi vedere se è già conosciuto qui (in inglese): </translation> </message> <message> <source>Your email address is optional, but we may want to contact you.</source> - <translation>Il tuo indirizzo di posta elettronica è opzionale, ma potremmo volerti contattare.</translation> + <translation type="obsolete">Il tuo indirizzo di posta elettronica è opzionale, ma potremmo volerti contattare.</translation> + </message> + <message> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -261,6 +273,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Impossibile salvare la StyleSheet in %1! Errore interno!</translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -370,6 +394,10 @@ <translation>Ti sei ricollegato troppo velocemente. Per favore aspetta qualche secondo e prova di nuovo.</translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -490,7 +518,7 @@ </message> <message> <source>Theme: </source> - <translation>Tema: </translation> + <translation type="obsolete">Tema: </translation> </message> <message> <source>Load drawn map</source> @@ -508,6 +536,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -552,7 +584,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 è entrato</translation> + <translation type="obsolete">%1 *** %2 è entrato</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -749,6 +781,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -890,6 +933,14 @@ <numerusform><b>%1</b> aveva paura e ha passato il turno <b>%2</b> volte.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Salva</translation> + </message> </context> <context> <name>PageInGame</name> @@ -2001,6 +2052,10 @@ <source>This program is distributed under the %1</source> <translation>Questo programma è distribuito secondo i termini di %1</translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3139,115 +3194,111 @@ <name>server</name> <message> <source>Not room master</source> - <translation type="unfinished">Non proprietario della stanza</translation> + <translation type="obsolete">Non proprietario della stanza</translation> </message> <message> <source>Corrupted hedgehogs info</source> - <translation type="unfinished">Informazioni ricci corrotte</translation> + <translation type="obsolete">Informazioni ricci corrotte</translation> </message> <message> <source>too many teams</source> - <translation type="unfinished">troppe squadre</translation> + <translation type="obsolete">troppe squadre</translation> </message> <message> <source>too many hedgehogs</source> - <translation type="unfinished">troppi ricci</translation> + <translation type="obsolete">troppi ricci</translation> </message> <message> <source>There's already a team with same name in the list</source> - <translation type="unfinished">C'è già una quadra collo stesso nome in lista</translation> + <translation type="obsolete">C'è già una quadra collo stesso nome in lista</translation> </message> <message> <source>round in progress</source> - <translation type="unfinished">turno in corso</translation> + <translation type="obsolete">turno in corso</translation> </message> <message> <source>restricted</source> - <translation type="unfinished">proibito</translation> + <translation type="obsolete">proibito</translation> </message> <message> <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished">CANCELLA_SQUADRA: squadra non presente</translation> + <translation type="obsolete">CANCELLA_SQUADRA: squadra non presente</translation> </message> <message> <source>Not team owner!</source> - <translation type="unfinished">Non proprietario della squadra!</translation> + <translation type="obsolete">Non proprietario della squadra!</translation> </message> <message> <source>Less than two clans!</source> - <translation type="unfinished">Meno di due clan!</translation> + <translation type="obsolete">Meno di due clan!</translation> </message> <message> <source>Room with such name already exists</source> - <translation type="unfinished">Esiste già una stanza con questo nome</translation> + <translation type="obsolete">Esiste già una stanza con questo nome</translation> </message> <message> <source>Nickname already chosen</source> - <translation type="unfinished">Nome già scelto</translation> + <translation type="obsolete">Nome già scelto</translation> </message> <message> <source>Illegal nickname</source> - <translation type="unfinished">Nome non valido</translation> + <translation type="obsolete">Nome non valido</translation> </message> <message> <source>Protocol already known</source> - <translation type="unfinished">Protocollo già conosciuto</translation> + <translation type="obsolete">Protocollo già conosciuto</translation> </message> <message> <source>Bad number</source> - <translation type="unfinished">Numero non valido</translation> + <translation type="obsolete">Numero non valido</translation> </message> <message> <source>Nickname is already in use</source> - <translation type="unfinished">Nome già in uso</translation> + <translation type="obsolete">Nome già in uso</translation> </message> <message> <source>Authentication failed</source> - <translation type="unfinished">Autenticazione fallita</translation> + <translation type="obsolete">Autenticazione fallita</translation> </message> <message> <source>60 seconds cooldown after kick</source> - <translation type="unfinished">60 secondi di raffreddamento prima dell'espulsione</translation> + <translation type="obsolete">60 secondi di raffreddamento prima dell'espulsione</translation> </message> <message> <source>kicked</source> - <translation type="unfinished">espulso</translation> + <translation type="obsolete">espulso</translation> </message> <message> <source>Ping timeout</source> - <translation type="unfinished">Scadenza ping</translation> + <translation type="obsolete">Scadenza ping</translation> </message> <message> <source>bye</source> - <translation type="unfinished">ciao</translation> + <translation type="obsolete">ciao</translation> </message> <message> <source>Illegal room name</source> - <translation type="unfinished">Nome stanza non valido</translation> + <translation type="obsolete">Nome stanza non valido</translation> </message> <message> <source>No such room</source> - <translation type="unfinished">Stanza non esistente</translation> + <translation type="obsolete">Stanza non esistente</translation> </message> <message> <source>Joining restricted</source> - <translation type="unfinished">Ingresso riservato</translation> + <translation type="obsolete">Ingresso riservato</translation> </message> <message> <source>Registered users only</source> - <translation type="unfinished">Solo utenti registrati</translation> + <translation type="obsolete">Solo utenti registrati</translation> </message> <message> <source>You are banned in this room</source> - <translation type="unfinished">Sei stato espulso dalla stanza</translation> + <translation type="obsolete">Sei stato espulso dalla stanza</translation> </message> <message> <source>Empty config entry</source> - <translation type="unfinished">Configurazione vuota</translation> - </message> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Configurazione vuota</translation> </message> </context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ja.ts --- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -248,6 +248,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -347,6 +359,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -466,10 +482,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -485,6 +497,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -529,7 +545,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 さんは参加</translation> + <translation type="obsolete">%1 *** %2 さんは参加</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -723,6 +739,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -858,6 +885,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">セーブ</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1943,6 +1978,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3043,119 +3082,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ko.ts --- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -248,6 +248,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -347,6 +359,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -466,10 +482,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -485,6 +497,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -528,10 +544,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> <source>%1 *** %2 has left (%3)</source> <translation type="unfinished"></translation> </message> @@ -723,6 +735,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -858,6 +881,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1919,6 +1950,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3011,119 +3046,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_lt.ts --- a/share/hedgewars/Data/Locale/hedgewars_lt.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts Wed May 29 22:52:37 2013 +0400 @@ -97,7 +97,7 @@ <context> <name>DataManager</name> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="149"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/> <source>Use Default</source> <translation type="unfinished"></translation> </message> @@ -105,37 +105,37 @@ <context> <name>FeedbackDialog</name> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="87"/> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/> - <source>Your email address is optional, but we may want to contact you.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="124"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="147"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="150"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="175"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="178"/> <source>Send Feedback</source> <translation type="unfinished"></translation> </message> @@ -267,52 +267,67 @@ <context> <name>HWChatWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="641"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="502"/> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="523"/> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="525"/> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="652"/> <source>%1 has been removed from your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="651"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="662"/> <source>%1 has been added to your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="681"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="692"/> <source>%1 has been removed from your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="690"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/> <source>%1 has been added to your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="756"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="767"/> <source>Stylesheet imported from %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="757"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="768"/> <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/> <source>Couldn't read %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="773"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="784"/> <source>StyleSheet discarded</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="797"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="808"/> <source>StyleSheet saved to %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="800"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="811"/> <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> @@ -325,23 +340,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="632"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="636"/> <source>Game aborted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>No nickname supplied.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Someone already uses your nickname %1 on the server. Please pick another nickname:</source> <translation type="unfinished"></translation> @@ -352,12 +367,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1056"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/> <source>Hedgewars - Nick registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1057"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/> <source>This nick is registered, and you haven't specified a password. If this nick isn't yours, please register your own nick at www.hedgewars.org @@ -366,90 +381,95 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1085"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/> <source>Your nickname is not registered. To prevent someone else from using it, please register it at www.hedgewars.org</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1090"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/> <source> Your password wasn't saved either.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>Hedgewars - Empty nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>Hedgewars - Wrong password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>You entered a wrong password.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1154"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/> <source>Try Again</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>Hedgewars - Connection error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>You reconnected too fast. Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1672"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1993"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1696"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2015"/> <source>Cannot save record to file %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1923"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1945"/> <source>Hedgewars Demo File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1924"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/> <source>Hedgewars Save File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> <message> - <location filename="../../../../QTfrontend/game.cpp" line="374"/> + <location filename="../../../../QTfrontend/game.cpp" line="386"/> <location filename="../../../../QTfrontend/net/recorder.cpp" line="112"/> <source>en.txt</source> <translation>lt.txt</translation> </message> <message> - <location filename="../../../../QTfrontend/game.cpp" line="415"/> + <location filename="../../../../QTfrontend/game.cpp" line="427"/> <source>Cannot open demofile %1</source> <translation type="unfinished"></translation> </message> @@ -457,158 +477,158 @@ <context> <name>HWMapContainer</name> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="93"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="94"/> <source>Map type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="96"/> - <source>Image map</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="97"/> - <source>Mission map</source> + <source>Image map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/> - <source>Hand-drawn</source> + <source>Mission map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/> - <source>Randomly generated</source> + <source>Hand-drawn</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/> + <source>Randomly generated</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/> <source>Random maze</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="110"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/> <source>Random</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/> <source>Map preview:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/> <source>Load map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/> <source>Edit map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/> - <source>All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/> - <source>Small</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/> - <source>Medium</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/> - <source>Large</source> + <source>All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/> - <source>Cavern</source> + <source>Small</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/> + <source>Large</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/> + <source>Cavern</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="212"/> <source>Wacky</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/> - <source>Large tunnels</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> - <source>Small islands</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> - <source>Medium islands</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/> + <source>Large tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="223"/> + <source>Small islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="224"/> + <source>Medium islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="225"/> <source>Large islands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="705"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="710"/> <source>Map size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="712"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="717"/> <source>Maze style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="725"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="730"/> <source>Mission:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="735"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="740"/> <source>Map:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="799"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="930"/> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="804"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="935"/> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Drawn Maps</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>All files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> <source>Small tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> <source>Medium tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="124"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="126"/> <source>Seed</source> <translation type="unfinished"></translation> </message> @@ -659,40 +679,33 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="697"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/> <source>Room destroyed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="470"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/> <source>You got kicked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="641"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="773"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/> <source>%1 *** %2 has joined the room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="495"/> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="544"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="788"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/> <source>%1 *** %2 has left</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="546"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="790"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/> <source>%1 *** %2 has left (%3)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Quit reason: </source> <translation type="unfinished"></translation> </message> @@ -902,6 +915,19 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="66"/> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="126"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/> @@ -1022,12 +1048,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="174"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="113"/> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="118"/> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="182"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="201"/> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1036,7 +1072,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="189"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="208"/> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1045,7 +1081,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="253"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> <source>(%1 kill)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1054,7 +1090,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="264"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1063,7 +1099,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="291"/> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1072,7 +1108,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="280"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="299"/> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1173,12 +1209,12 @@ <context> <name>PageMultiplayer</name> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="52"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="50"/> <source>Edit game preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="64"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="62"/> <source>Start</source> <translation type="unfinished"></translation> </message> @@ -1338,97 +1374,97 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="369"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/> <source>Frontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/> <source>Custom colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/> <source>Reset to default colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="429"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/> <source>Game audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="467"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/> <source>Frontend audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="492"/> <source>Account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="518"/> <source>Proxy settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="522"/> - <source>Proxy host</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="523"/> - <source>Proxy port</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/> - <source>Proxy login</source> + <source>Proxy host</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/> + <source>Proxy port</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/> + <source>Proxy login</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/> <source>Proxy password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="538"/> - <source>No proxy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="539"/> - <source>System proxy settings</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/> - <source>Socks5 proxy</source> + <source>No proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/> + <source>System proxy settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/> + <source>Socks5 proxy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/> <source>HTTP proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/> <source>Miscellaneous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/> <source>Check for updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/> <source>Video recording options</source> <translation type="unfinished"></translation> </message> @@ -1449,52 +1485,52 @@ <context> <name>PageRoomsList</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="63"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="64"/> <source>Search for a room:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="90"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="91"/> <source>Create room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="94"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="95"/> <source>Join room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="141"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> <source>Room state</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="177"/> <source>Rules:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="179"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="191"/> <source>Weapons:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="190"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="202"/> <source>Clear filters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="208"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="220"/> <source>Admin features</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="210"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="222"/> <source>Open server administration page</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="595"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/> <source>%1 players online</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1808,23 +1844,23 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="874"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/> <source>Ignore</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="273"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="886"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/> <source>Add friend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="869"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/> <source>Unignore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/> <source>Remove friend</source> <translation type="unfinished"></translation> </message> @@ -1844,12 +1880,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="150"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="162"/> <source>Show games in lobby</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> <source>Show games in-progress</source> <translation type="unfinished"></translation> </message> @@ -1857,75 +1893,75 @@ <context> <name>QCheckBox</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="364"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/> <source>Show ammo menu tooltips</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="358"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/> <source>Alternative damage show</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/> <source>Visual effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="454"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="471"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/> <source>Sound</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="455"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/> <source>In-game sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="461"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="476"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/> <source>Music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="462"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/> <source>In-game music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/> <source>Frontend sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="477"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/> <source>Frontend music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="602"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/> <source>Append date and time to record file name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="622"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/> <source>Check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="375"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/> <source>Fullscreen</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/> <source>Show FPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="509"/> <source>Save password</source> <translation type="unfinished"></translation> </message> @@ -1940,12 +1976,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="683"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/> <source>Record audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/> <source>Use game resolution</source> <translation type="unfinished"></translation> </message> @@ -1968,88 +2004,88 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="588"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/> <source>(System default)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="311"/> - <source>Disabled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="312"/> - <source>Red/Cyan</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/> - <source>Cyan/Red</source> + <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/> - <source>Red/Blue</source> + <source>Red/Cyan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/> - <source>Blue/Red</source> + <source>Cyan/Red</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/> - <source>Red/Green</source> + <source>Red/Blue</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="317"/> + <source>Blue/Red</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> + <source>Red/Green</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> <source>Green/Red</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/> + <source>Side-by-side</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/> + <source>Top-Bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> + <source>Red/Cyan grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> + <source>Cyan/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> + <source>Red/Blue grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> + <source>Blue/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/> - <source>Side-by-side</source> + <source>Red/Green grayscale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/> - <source>Top-Bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> - <source>Red/Cyan grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> - <source>Cyan/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> - <source>Red/Blue grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> - <source>Blue/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> - <source>Red/Green grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> <source>Green/Red grayscale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="199"/> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="211"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="286"/> <source>Any</source> <translation type="unfinished"></translation> </message> @@ -2087,7 +2123,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="255"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/> <source>Playing teams</source> <translation type="unfinished"></translation> </message> @@ -2185,22 +2221,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/> <source>Locale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="708"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="716"/> <source>Resolution</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="293"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="295"/> <source>Quality</source> <translation type="unfinished"></translation> </message> @@ -2220,17 +2261,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="307"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="309"/> <source>Stereo rendering</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="437"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/> <source>Initial sound volume</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="338"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="340"/> <source>FPS limit</source> <translation type="unfinished"></translation> </message> @@ -2352,52 +2393,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="100"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="103"/> <source>Your Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="108"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/> <source>Summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="118"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> <source>Send system information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="136"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="161"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="164"/> <source>Type the security code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="652"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="672"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/> <source>Audio codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="697"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/> <source>Video codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/> <source>Framerate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="752"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/> <source>Bitrate (Kbps)</source> <translation type="unfinished"></translation> </message> @@ -2405,7 +2446,7 @@ <context> <name>QLineEdit</name> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="933"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="952"/> <source>unnamed</source> <translation type="unfinished"></translation> </message> @@ -2416,7 +2457,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/> <source>anonymous</source> <translation type="unfinished"></translation> </message> @@ -2447,82 +2488,82 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="962"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="981"/> <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/> <source>Cannot delete default scheme '%1'!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="988"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/> <source>Please select a record from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1083"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> <source>Hedgewars - Nick not registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1474"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/> <source>Unable to start server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Connection to server is lost</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2021"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/> <source>Not all players are ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2022"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/> <source>Are you sure you want to start this game? Not all players are ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="352"/> <location filename="../../../../QTfrontend/util/MessageDialog.cpp" line="24"/> <source>Hedgewars - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="357"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="362"/> <source>System Information Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="372"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="383"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/> <source>Failed to generate captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="400"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/> <source>Failed to download captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="464"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/> <source>Please fill out all fields. Email is optional.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1963"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="434"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/> <source>Hedgewars - Success</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1964"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/> <source>All file associations have been set</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1969"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/> <source>File association failed.</source> <translation type="unfinished"></translation> </message> @@ -2600,22 +2641,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/> <source>Room Name - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="547"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/> <source>Please select room from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/> <source>Room Name - Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="583"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/> <source>The game you are trying to join has started. Do you still want to join the room?</source> <translation type="unfinished"></translation> @@ -2664,7 +2705,7 @@ <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="101"/> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="121"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="891"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="896"/> <source>File error</source> <translation type="unfinished"></translation> </message> @@ -2675,7 +2716,7 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="892"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/> <source>Cannot open '%1' for reading</source> <translation type="unfinished"></translation> </message> @@ -2791,7 +2832,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="608"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> @@ -2824,12 +2865,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/> <source>Set default options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="766"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/> <source>Restore default coding parameters</source> <translation type="unfinished"></translation> </message> @@ -3027,7 +3068,7 @@ <context> <name>TeamSelWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="260"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/> <source>At least two teams are required to play!</source> <translation type="unfinished"></translation> </message> @@ -3426,7 +3467,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="156"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/> <source>Keyboard</source> <translation type="unfinished"></translation> </message> @@ -3786,147 +3827,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="2"/> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="3"/> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="4"/> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="5"/> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="6"/> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="7"/> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="8"/> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="9"/> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="10"/> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="11"/> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="12"/> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="13"/> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="14"/> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="15"/> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="16"/> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="17"/> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="18"/> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="19"/> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="20"/> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="21"/> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="22"/> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="23"/> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="24"/> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="25"/> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="26"/> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="27"/> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="28"/> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="29"/> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ms.ts --- a/share/hedgewars/Data/Locale/hedgewars_ms.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ms.ts Wed May 29 22:52:37 2013 +0400 @@ -97,7 +97,7 @@ <context> <name>DataManager</name> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="149"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/> <source>Use Default</source> <translation type="unfinished"></translation> </message> @@ -105,37 +105,37 @@ <context> <name>FeedbackDialog</name> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="87"/> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/> - <source>Your email address is optional, but we may want to contact you.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="124"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="147"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="150"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="175"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="178"/> <source>Send Feedback</source> <translation type="unfinished"></translation> </message> @@ -255,52 +255,67 @@ <context> <name>HWChatWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="641"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="502"/> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="523"/> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="525"/> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="652"/> <source>%1 has been removed from your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="651"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="662"/> <source>%1 has been added to your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="681"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="692"/> <source>%1 has been removed from your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="690"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/> <source>%1 has been added to your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="756"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="767"/> <source>Stylesheet imported from %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="757"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="768"/> <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/> <source>Couldn't read %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="773"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="784"/> <source>StyleSheet discarded</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="797"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="808"/> <source>StyleSheet saved to %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="800"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="811"/> <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> @@ -318,17 +333,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="632"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="636"/> <source>Game aborted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1056"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/> <source>Hedgewars - Nick registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1057"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/> <source>This nick is registered, and you haven't specified a password. If this nick isn't yours, please register your own nick at www.hedgewars.org @@ -337,107 +352,112 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1085"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/> <source>Your nickname is not registered. To prevent someone else from using it, please register it at www.hedgewars.org</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1090"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/> <source> Your password wasn't saved either.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Someone already uses your nickname %1 on the server. Please pick another nickname:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>No nickname supplied.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>Hedgewars - Empty nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>Hedgewars - Wrong password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>You entered a wrong password.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1154"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/> <source>Try Again</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>Hedgewars - Connection error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>You reconnected too fast. Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1672"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1993"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1696"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2015"/> <source>Cannot save record to file %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1923"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1945"/> <source>Hedgewars Demo File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1924"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/> <source>Hedgewars Save File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> <message> - <location filename="../../../../QTfrontend/game.cpp" line="374"/> + <location filename="../../../../QTfrontend/game.cpp" line="386"/> <location filename="../../../../QTfrontend/net/recorder.cpp" line="112"/> <source>en.txt</source> <translation>ms.txt</translation> </message> <message> - <location filename="../../../../QTfrontend/game.cpp" line="415"/> + <location filename="../../../../QTfrontend/game.cpp" line="427"/> <source>Cannot open demofile %1</source> <translation type="unfinished"></translation> </message> @@ -445,158 +465,158 @@ <context> <name>HWMapContainer</name> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="93"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="94"/> <source>Map type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="96"/> - <source>Image map</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="97"/> - <source>Mission map</source> + <source>Image map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/> - <source>Hand-drawn</source> + <source>Mission map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/> - <source>Randomly generated</source> + <source>Hand-drawn</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/> + <source>Randomly generated</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/> <source>Random maze</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="110"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/> <source>Random</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/> <source>Map preview:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/> <source>Load map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/> <source>Edit map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/> - <source>All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/> - <source>Small</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/> - <source>Medium</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/> - <source>Large</source> + <source>All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/> - <source>Cavern</source> + <source>Small</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/> + <source>Large</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/> + <source>Cavern</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="212"/> <source>Wacky</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/> - <source>Large tunnels</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> - <source>Small islands</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> - <source>Medium islands</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/> + <source>Large tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="223"/> + <source>Small islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="224"/> + <source>Medium islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="225"/> <source>Large islands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="705"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="710"/> <source>Map size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="712"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="717"/> <source>Maze style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="725"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="730"/> <source>Mission:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="735"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="740"/> <source>Map:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="799"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="930"/> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="804"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="935"/> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Drawn Maps</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>All files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> <source>Small tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> <source>Medium tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="124"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="126"/> <source>Seed</source> <translation type="unfinished"></translation> </message> @@ -622,7 +642,7 @@ <context> <name>HWNewNet</name> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Quit reason: </source> <translation type="unfinished"></translation> </message> @@ -652,35 +672,28 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="470"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/> <source>You got kicked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="495"/> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="544"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="788"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/> <source>%1 *** %2 has left</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="546"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="790"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/> <source>%1 *** %2 has left (%3)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="641"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="773"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/> <source>%1 *** %2 has joined the room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="697"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/> <source>Room destroyed</source> <translation type="unfinished"></translation> </message> @@ -890,6 +903,19 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="66"/> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="126"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/> @@ -1010,47 +1036,57 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="174"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="113"/> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="118"/> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="182"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="201"/> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="189"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="208"/> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="253"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> <source>(%1 kill)</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="264"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/> <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> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="291"/> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="280"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="299"/> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1149,12 +1185,12 @@ <context> <name>PageMultiplayer</name> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="52"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="50"/> <source>Edit game preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="64"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="62"/> <source>Start</source> <translation type="unfinished"></translation> </message> @@ -1314,97 +1350,97 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="369"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/> <source>Frontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/> <source>Custom colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/> <source>Reset to default colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="429"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/> <source>Game audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="467"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/> <source>Frontend audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="492"/> <source>Account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="518"/> <source>Proxy settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="522"/> - <source>Proxy host</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="523"/> - <source>Proxy port</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/> - <source>Proxy login</source> + <source>Proxy host</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/> + <source>Proxy port</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/> + <source>Proxy login</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/> <source>Proxy password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="538"/> - <source>No proxy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="539"/> - <source>System proxy settings</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/> - <source>Socks5 proxy</source> + <source>No proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/> + <source>System proxy settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/> + <source>Socks5 proxy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/> <source>HTTP proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/> <source>Miscellaneous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/> <source>Check for updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/> <source>Video recording options</source> <translation type="unfinished"></translation> </message> @@ -1425,52 +1461,52 @@ <context> <name>PageRoomsList</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="63"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="64"/> <source>Search for a room:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="90"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="91"/> <source>Create room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="94"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="95"/> <source>Join room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="141"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> <source>Room state</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="177"/> <source>Rules:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="179"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="191"/> <source>Weapons:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="190"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="202"/> <source>Clear filters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="208"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="220"/> <source>Admin features</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="210"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="222"/> <source>Open server administration page</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="595"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/> <source>%1 players online</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1795,33 +1831,33 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="874"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/> <source>Ignore</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="273"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="886"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/> <source>Add friend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="869"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/> <source>Unignore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/> <source>Remove friend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="150"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="162"/> <source>Show games in lobby</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> <source>Show games in-progress</source> <translation type="unfinished"></translation> </message> @@ -1830,7 +1866,7 @@ <name>QCheckBox</name> <message> <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="509"/> <source>Save password</source> <translation type="unfinished"></translation> </message> @@ -1845,79 +1881,79 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="622"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/> <source>Check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="375"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/> <source>Fullscreen</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="358"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/> <source>Alternative damage show</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/> <source>Show FPS</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="364"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/> <source>Show ammo menu tooltips</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/> <source>Visual effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="454"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="471"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/> <source>Sound</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="455"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/> <source>In-game sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="461"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="476"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/> <source>Music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="462"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/> <source>In-game music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/> <source>Frontend sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="477"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/> <source>Frontend music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="602"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/> <source>Append date and time to record file name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="683"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/> <source>Record audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/> <source>Use game resolution</source> <translation type="unfinished"></translation> </message> @@ -1940,88 +1976,88 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="588"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/> <source>(System default)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="311"/> - <source>Disabled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="312"/> - <source>Red/Cyan</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/> - <source>Cyan/Red</source> + <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/> - <source>Red/Blue</source> + <source>Red/Cyan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/> - <source>Blue/Red</source> + <source>Cyan/Red</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/> - <source>Red/Green</source> + <source>Red/Blue</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="317"/> + <source>Blue/Red</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> + <source>Red/Green</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> <source>Green/Red</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/> + <source>Side-by-side</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/> + <source>Top-Bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> + <source>Red/Cyan grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> + <source>Cyan/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> + <source>Red/Blue grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> + <source>Blue/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/> - <source>Side-by-side</source> + <source>Red/Green grayscale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/> - <source>Top-Bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> - <source>Red/Cyan grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> - <source>Cyan/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> - <source>Red/Blue grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> - <source>Blue/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> - <source>Red/Green grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> <source>Green/Red grayscale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="199"/> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="211"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="286"/> <source>Any</source> <translation type="unfinished"></translation> </message> @@ -2069,7 +2105,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="255"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/> <source>Playing teams</source> <translation type="unfinished"></translation> </message> @@ -2149,27 +2185,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="100"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="103"/> <source>Your Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="108"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/> <source>Summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="118"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> <source>Send system information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="136"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="161"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="164"/> <source>Type the security code:</source> <translation type="unfinished"></translation> </message> @@ -2199,22 +2235,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/> <source>Locale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="708"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="716"/> <source>Resolution</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="293"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="295"/> <source>Quality</source> <translation type="unfinished"></translation> </message> @@ -2234,17 +2275,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="307"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="309"/> <source>Stereo rendering</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="437"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/> <source>Initial sound volume</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="338"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="340"/> <source>FPS limit</source> <translation type="unfinished"></translation> </message> @@ -2329,27 +2370,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="652"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="672"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/> <source>Audio codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="697"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/> <source>Video codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/> <source>Framerate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="752"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/> <source>Bitrate (Kbps)</source> <translation type="unfinished"></translation> </message> @@ -2377,7 +2418,7 @@ <context> <name>QLineEdit</name> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="933"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="952"/> <source>unnamed</source> <translation type="unfinished"></translation> </message> @@ -2388,7 +2429,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/> <source>anonymous</source> <translation type="unfinished"></translation> </message> @@ -2419,82 +2460,82 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="962"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="981"/> <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/> <source>Cannot delete default scheme '%1'!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="988"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/> <source>Please select a record from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1083"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> <source>Hedgewars - Nick not registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1474"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/> <source>Unable to start server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Connection to server is lost</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2021"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/> <source>Not all players are ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2022"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/> <source>Are you sure you want to start this game? Not all players are ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="352"/> <location filename="../../../../QTfrontend/util/MessageDialog.cpp" line="24"/> <source>Hedgewars - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="357"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="362"/> <source>System Information Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="372"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="383"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/> <source>Failed to generate captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="400"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/> <source>Failed to download captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="464"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/> <source>Please fill out all fields. Email is optional.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1963"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="434"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/> <source>Hedgewars - Success</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1964"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/> <source>All file associations have been set</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1969"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/> <source>File association failed.</source> <translation type="unfinished"></translation> </message> @@ -2562,22 +2603,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/> <source>Room Name - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="547"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/> <source>Please select room from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/> <source>Room Name - Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="583"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/> <source>The game you are trying to join has started. Do you still want to join the room?</source> <translation type="unfinished"></translation> @@ -2624,7 +2665,7 @@ <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="101"/> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="121"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="891"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="896"/> <source>File error</source> <translation type="unfinished"></translation> </message> @@ -2635,7 +2676,7 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="892"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/> <source>Cannot open '%1' for reading</source> <translation type="unfinished"></translation> </message> @@ -2766,7 +2807,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="608"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> @@ -2794,12 +2835,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/> <source>Set default options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="766"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/> <source>Restore default coding parameters</source> <translation type="unfinished"></translation> </message> @@ -2997,7 +3038,7 @@ <context> <name>TeamSelWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="260"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/> <source>At least two teams are required to play!</source> <translation type="unfinished"></translation> </message> @@ -3714,7 +3755,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="156"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/> <source>Keyboard</source> <translation type="unfinished"></translation> </message> @@ -3756,147 +3797,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="2"/> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="3"/> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="4"/> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="5"/> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="6"/> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="7"/> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="8"/> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="9"/> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="10"/> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="11"/> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="12"/> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="13"/> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="14"/> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="15"/> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="16"/> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="17"/> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="18"/> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="19"/> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="20"/> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="21"/> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="22"/> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="23"/> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="24"/> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="25"/> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="26"/> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="27"/> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="28"/> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="29"/> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_nl.ts --- a/share/hedgewars/Data/Locale/hedgewars_nl.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -472,10 +488,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -491,6 +503,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -534,10 +550,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> <source>%1 *** %2 has left (%3)</source> <translation type="unfinished"></translation> </message> @@ -729,6 +741,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -870,6 +893,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1933,6 +1964,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3026,119 +3061,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_pl.ts --- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Wed May 29 22:52:37 2013 +0400 @@ -5,7 +5,7 @@ <name>About</name> <message> <source>Unknown Compiler</source> - <translation type="unfinished"></translation> + <translation>Nieznany kompilator</translation> </message> </context> <context> @@ -30,89 +30,89 @@ <name>BanDialog</name> <message> <source>IP</source> - <translation type="unfinished">IP</translation> + <translation>IP</translation> </message> <message> <source>Nick</source> - <translation type="unfinished"></translation> + <translation>Nick</translation> </message> <message> <source>IP/Nick</source> - <translation type="unfinished"></translation> + <translation>IP/Nick</translation> </message> <message> <source>Reason</source> - <translation type="unfinished"></translation> + <translation>Powód</translation> </message> <message> <source>Duration</source> - <translation type="unfinished"></translation> + <translation>Czas trwania</translation> </message> <message> <source>Ok</source> - <translation type="unfinished"></translation> + <translation>Ok</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>you know why</source> - <translation type="unfinished"></translation> + <translation>Wiesz za co</translation> </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Ostrzeżenie</translation> </message> <message> <source>Please, specify %1</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Proszę, opisz %1</translation> </message> <message> <source>nickname</source> - <translation type="unfinished"></translation> + <translation>ksywka</translation> </message> <message> <source>permanent</source> - <translation type="unfinished"></translation> + <translation>dożywotni</translation> </message> </context> <context> <name>DataManager</name> <message> <source>Use Default</source> - <translation type="unfinished"></translation> + <translation>Użyj domyślnych</translation> </message> </context> <context> <name>FeedbackDialog</name> <message> <source>View</source> - <translation type="unfinished"></translation> + <translation>Pokaż</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>Send Feedback</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> + <translation>Wyśłij opinię</translation> </message> <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> - <translation type="unfinished"></translation> + <translation>Jesteśmy wdzięczni za sugestie, pomysły i znalezione błędy.</translation> + </message> + <message> + <source>Send us feedback!</source> + <translation>Wyślij swoją opinię!</translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation>Jeśli znalazłeś błąd, możesz sprawdzić czy został już zgłoszony w tym miejscu: </translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation>E-mail jest opcjonalny chyba, że chcesz byśmy się z tobą skontaktowali.</translation> </message> </context> <context> @@ -146,73 +146,80 @@ </message> <message> <source>Game scheme will auto-select a weapon</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Schemat gry automatycznie wybierze uzbrojenie</translation> </message> <message> <source>Map</source> - <translation type="unfinished">Mapa</translation> + <translation>Mapa</translation> </message> <message> <source>Game options</source> - <translation type="unfinished"></translation> + <translation>Ustawienia gry</translation> + </message> +</context> +<context> + <name>GameUIConfig</name> + <message> + <source>Guest</source> + <translation>Gość</translation> </message> </context> <context> <name>HWApplication</name> <message numerus="yes"> <source>%1 minutes</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 minuta</numerusform> + <numerusform>%1 minuty</numerusform> + <numerusform>%1 minut</numerusform> </translation> </message> <message numerus="yes"> <source>%1 hour</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 godzina</numerusform> + <numerusform>%1 godziny</numerusform> + <numerusform>%1 godzin</numerusform> </translation> </message> <message numerus="yes"> <source>%1 hours</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 godziny</numerusform> + <numerusform>%1 godziny</numerusform> + <numerusform>%1 godzin</numerusform> </translation> </message> <message numerus="yes"> <source>%1 day</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 dzień</numerusform> + <numerusform>%1 dni</numerusform> + <numerusform>%1 dni</numerusform> </translation> </message> <message numerus="yes"> <source>%1 days</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 dni</numerusform> + <numerusform>%1 dni</numerusform> + <numerusform>%1 dni</numerusform> </translation> </message> <message> <source>Scheme '%1' not supported</source> - <translation type="unfinished"></translation> + <translation>Shemat '%1' nie jest wspierany</translation> </message> <message> <source>Cannot create directory %1</source> - <translation type="unfinished">Nie można utworzyć katalogu %1</translation> + <translation>Nie można utworzyć katalogu %1</translation> </message> <message> <source>Failed to open data directory: %1 Please check your installation!</source> - <translation type="unfinished">Nie można otworzyć katalogu z danymi: + <translation>Nie można otworzyć katalogu z danymi: %1 Sprawdź poprawność instalacji!</translation> @@ -267,6 +274,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Nie można było zapisać arkusza stylów jako %1</translation> </message> + <message> + <source>%1 has joined</source> + <translation>%1 dołączył</translation> + </message> + <message> + <source>%1 has left</source> + <translation>%1 wyszedł</translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation>%1 wyszedł (%2)</translation> + </message> </context> <context> <name>HWForm</name> @@ -316,11 +335,11 @@ </message> <message> <source>%1's Team</source> - <translation type="unfinished"></translation> + <translation>Zespół %1</translation> </message> <message> <source>Hedgewars - Nick registered</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Zarejestrowany nick</translation> </message> <message> <source>This nick is registered, and you haven't specified a password. @@ -328,44 +347,61 @@ If this nick isn't yours, please register your own nick at www.hedgewars.org Password:</source> - <translation type="unfinished"></translation> + <translation>Ten nick jest zarejestrowany i musisz podać hasło. + +Jeżeli ten nick nie jest twój, zarejestrój własny na www.hedgewars.org + +Hasło:</translation> </message> <message> <source>Your nickname is not registered. To prevent someone else from using it, please register it at www.hedgewars.org</source> - <translation type="unfinished"></translation> + <translation>Twój nick nie jest zarejestrowany. +By zapobiec używania go przez kogoś innego +zarejestruj go na www.hedgewars.org</translation> </message> <message> <source> Your password wasn't saved either.</source> - <translation type="unfinished"></translation> + <translation> + +Twoje hasło nie zostało zapisane.</translation> </message> <message> <source>Hedgewars - Empty nickname</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Brak nicku</translation> </message> <message> <source>Hedgewars - Wrong password</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Złe hasło</translation> </message> <message> <source>You entered a wrong password.</source> - <translation type="unfinished"></translation> + <translation>Wpisałeś złe hasło.</translation> </message> <message> <source>Try Again</source> - <translation type="unfinished"></translation> + <translation>Spróbuj ponownie</translation> </message> <message> <source>Hedgewars - Connection error</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Błąd połączenia</translation> </message> <message> <source>You reconnected too fast. Please wait a few seconds and try again.</source> - <translation type="unfinished"></translation> + <translation>Za szybko połączyłes się ponownie. +Poczekaj kilka sekund i spróbuj ponownie.</translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation>Ta strona wymaga połączenia z internetem.</translation> + </message> + <message> + <source>Guest</source> + <translation>Gość</translation> </message> </context> <context> @@ -419,91 +455,91 @@ </message> <message> <source>Map type:</source> - <translation type="unfinished"></translation> + <translation>Typ mapy:</translation> </message> <message> <source>Image map</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Mapa z obrazka</translation> </message> <message> <source>Mission map</source> - <translation type="unfinished"></translation> + <translation>Misja</translation> </message> <message> <source>Hand-drawn</source> - <translation type="unfinished">Rys. ręcznie</translation> + <translation>Rysowana ręcznie</translation> </message> <message> <source>Randomly generated</source> - <translation type="unfinished"></translation> + <translation>Losowa mapa</translation> </message> <message> <source>Random maze</source> - <translation type="unfinished"></translation> + <translation>Losowe labirynty</translation> </message> <message> <source>Random</source> - <translation type="unfinished">Losowo</translation> + <translation>Losowo</translation> </message> <message> <source>Map preview:</source> - <translation type="unfinished"></translation> + <translation>Podgląd:</translation> </message> <message> <source>Load map drawing</source> - <translation type="unfinished"></translation> + <translation>Wczytaj rysowana mapę</translation> </message> <message> <source>Edit map drawing</source> - <translation type="unfinished"></translation> + <translation>Edytuj mapę</translation> </message> <message> <source>Small islands</source> - <translation type="unfinished"></translation> + <translation>Małe wyspy</translation> </message> <message> <source>Medium islands</source> - <translation type="unfinished"></translation> + <translation>Średnie wyspy</translation> </message> <message> <source>Large islands</source> - <translation type="unfinished"></translation> + <translation>Duże wyspy</translation> </message> <message> <source>Map size:</source> - <translation type="unfinished"></translation> + <translation>Rozmiar mapy:</translation> </message> <message> <source>Maze style:</source> - <translation type="unfinished"></translation> + <translation>Styl labiryntu:</translation> </message> <message> <source>Mission:</source> - <translation type="unfinished"></translation> + <translation>Misja:</translation> </message> <message> <source>Map:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Theme: </source> - <translation type="unfinished"></translation> + <translation>Mapa:</translation> </message> <message> <source>Load drawn map</source> - <translation type="unfinished">Załaduj mapę</translation> + <translation>Załaduj mapę</translation> </message> <message> <source>Drawn Maps</source> - <translation type="unfinished">Narysowane mapy</translation> + <translation>Narysowane mapy</translation> </message> <message> <source>All files</source> - <translation type="unfinished">Wszystkie pliki</translation> + <translation>Wszystkie pliki</translation> </message> <message> <source>Large tunnels</source> - <translation type="unfinished"></translation> + <translation>Duże tunele</translation> + </message> + <message> + <source>Theme: %1</source> + <translation>Motyw: %1</translation> </message> </context> <context> @@ -549,7 +585,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 dołączył</translation> + <translation type="obsolete">%1 *** %2 dołączył</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -576,22 +612,25 @@ <name>HWPasswordDialog</name> <message> <source>Login</source> - <translation type="unfinished"></translation> + <translation>Login</translation> </message> <message> <source>To connect to the server, please log in. If you don't have an account on www.hedgewars.org, just enter your nickname.</source> - <translation type="unfinished"></translation> + <translation>Zaloguj się by połączyć się z serwerem. + +Jeśli nie masz konta na www.hedgewars.org, +po prostu wpisz swój nick.</translation> </message> <message> <source>Nickname:</source> - <translation type="unfinished"></translation> + <translation>Nick:</translation> </message> <message> <source>Password:</source> - <translation type="unfinished"></translation> + <translation>Hasło:</translation> </message> </context> <context> @@ -609,22 +648,22 @@ <name>HatButton</name> <message> <source>Change hat (%1)</source> - <translation type="unfinished"></translation> + <translation>Zmień czapkę (%1)</translation> </message> </context> <context> <name>HatPrompt</name> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>Use selected hat</source> - <translation type="unfinished"></translation> + <translation>Użyj wybranej czapki</translation> </message> <message> <source>Search for a hat:</source> - <translation type="unfinished"></translation> + <translation>Szukaj czapki:</translation> </message> </context> <context> @@ -638,7 +677,7 @@ <name>KeyBinder</name> <message> <source>Category</source> - <translation type="unfinished"></translation> + <translation>Kategoria</translation> </message> </context> <context> @@ -646,30 +685,30 @@ <message> <source>Duration: %1m %2s </source> - <translation type="unfinished">Długość: %1m %2s </translation> + <translation>Długość: %1m %2s </translation> </message> <message> <source>Video: %1x%2, </source> - <translation type="unfinished">Wideo: %1x%2, </translation> + <translation>Wideo: %1x%2, </translation> </message> <message> <source>%1 fps, </source> - <translation type="unfinished">%1 kl/s, </translation> + <translation>%1 kl/s, </translation> </message> <message> <source>Audio: </source> - <translation type="unfinished">Audio: </translation> + <translation>Audio: </translation> </message> <message> <source>unknown</source> - <translation type="unfinished"></translation> + <translation>nieznany</translation> </message> </context> <context> <name>MapModel</name> <message> <source>No description available.</source> - <translation type="unfinished"></translation> + <translation>Brak opisu.</translation> </message> </context> <context> @@ -704,35 +743,35 @@ </message> <message> <source>General</source> - <translation type="unfinished">Ogólne</translation> + <translation>Ogólne</translation> </message> <message> <source>Bans</source> - <translation type="unfinished"></translation> + <translation>Bany</translation> </message> <message> <source>IP/Nick</source> - <translation type="unfinished"></translation> + <translation>IP/Nick</translation> </message> <message> <source>Expiration</source> - <translation type="unfinished"></translation> + <translation>Wygaśnie</translation> </message> <message> <source>Reason</source> - <translation type="unfinished"></translation> + <translation>Powód</translation> </message> <message> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation>Odśwież</translation> </message> <message> <source>Add</source> - <translation type="unfinished"></translation> + <translation>Dodaj</translation> </message> <message> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Usuń</translation> </message> </context> <context> @@ -743,6 +782,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation>Ładowanie, proszę czekać.</translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation>Ta strona wymaga połączenia z internetem.</translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -789,39 +839,39 @@ </message> <message> <source>Select an action to choose a custom key bind for this team</source> - <translation type="unfinished"></translation> + <translation>Wybierz czynność by przypisać klawisz dla tego zespołu</translation> </message> <message> <source>Use my default</source> - <translation type="unfinished"></translation> + <translation>Użyj domyślnych</translation> </message> <message> <source>Reset all binds</source> - <translation type="unfinished"></translation> + <translation>Zresetuj przypisania</translation> </message> <message> <source>Custom Controls</source> - <translation type="unfinished"></translation> + <translation>Własne ustawienia</translation> </message> <message> <source>Hat</source> - <translation type="unfinished">Grzybek</translation> + <translation>Czapka</translation> </message> <message> <source>Name</source> - <translation type="unfinished">Nazwa</translation> + <translation>Nazwa</translation> </message> <message> <source>This hedgehog's name</source> - <translation type="unfinished"></translation> + <translation>Imię jeża</translation> </message> <message> <source>Randomize this hedgehog's name</source> - <translation type="unfinished"></translation> + <translation>Losuj imię</translation> </message> <message> <source>Random Team</source> - <translation type="unfinished">Losowa Drużyna</translation> + <translation>Losowa Drużyna</translation> </message> </context> <context> @@ -890,6 +940,14 @@ <numerusform><b>%1</b> trząsł portkami i opuścił turę <b>%2</b> razy.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation>Zagraj ponownie</translation> + </message> + <message> + <source>Save</source> + <translation>Zapisz</translation> + </message> </context> <context> <name>PageInGame</name> @@ -945,23 +1003,23 @@ </message> <message> <source>Play a game across a local area network</source> - <translation type="unfinished"></translation> + <translation>Zagraj poprzez sieć lokalną</translation> </message> <message> <source>Play a game on an official server</source> - <translation type="unfinished"></translation> + <translation>Zagraj na oficjalnym serwerze</translation> </message> <message> <source>Feedback</source> - <translation type="unfinished"></translation> + <translation>Twoja opinia</translation> </message> <message> <source>Play local network game</source> - <translation type="unfinished"></translation> + <translation>Zagraj poprzez LAN</translation> </message> <message> <source>Play official network game</source> - <translation type="unfinished"></translation> + <translation>Zagraj na oficjalnym serwerze</translation> </message> </context> <context> @@ -972,7 +1030,7 @@ </message> <message> <source>Edit game preferences</source> - <translation type="unfinished">Zmień ustawienia gry</translation> + <translation>Zmień ustawienia gry</translation> </message> </context> <context> @@ -983,30 +1041,30 @@ </message> <message> <source>Edit game preferences</source> - <translation type="unfinished">Zmień ustawienia gry</translation> + <translation>Zmień ustawienia gry</translation> </message> <message> <source>Start</source> - <translation type="unfinished">Start</translation> + <translation>Start</translation> </message> <message> <source>Update</source> - <translation type="unfinished"></translation> + <translation>Aktualizuj</translation> </message> <message> <source>Room controls</source> - <translation type="unfinished"></translation> + <translation>Ustawienia pokoju</translation> </message> </context> <context> <name>PageNetServer</name> <message> <source>Click here for details</source> - <translation type="unfinished"></translation> + <translation>Pokaż szczegóły</translation> </message> <message> <source>Insert your address here</source> - <translation type="unfinished"></translation> + <translation>Wprowadź adres</translation> </message> </context> <context> @@ -1093,91 +1151,91 @@ </message> <message> <source>Select an action to change what key controls it</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Wybierz czynność by przypisać do niej klawisz</translation> </message> <message> <source>Reset to default</source> - <translation type="unfinished"></translation> + <translation>Przywróć domyślne</translation> </message> <message> <source>Reset all binds</source> - <translation type="unfinished"></translation> + <translation>Zresetuj klawisze</translation> </message> <message> <source>Game</source> - <translation type="unfinished"></translation> + <translation>Gra</translation> </message> <message> <source>Graphics</source> - <translation type="unfinished"></translation> + <translation>Grafika</translation> </message> <message> <source>Audio</source> - <translation type="unfinished"></translation> + <translation>Dźwięk</translation> </message> <message> <source>Controls</source> - <translation type="unfinished"></translation> + <translation>Sterowanie</translation> </message> <message> <source>Video Recording</source> - <translation type="unfinished"></translation> + <translation>Nagrywanie wideo</translation> </message> <message> <source>Network</source> - <translation type="unfinished"></translation> + <translation>Sieć</translation> </message> <message> <source>Teams</source> - <translation type="unfinished">Drużyny</translation> + <translation>Drużyny</translation> </message> <message> <source>Schemes</source> - <translation type="unfinished"></translation> + <translation>Schematy</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Uzbrojenie</translation> + <translation>Uzbrojenie</translation> </message> <message> <source>Frontend</source> - <translation type="unfinished"></translation> + <translation>Interfejs</translation> </message> <message> <source>Custom colors</source> - <translation type="unfinished">Własne kolory</translation> + <translation>Własne kolory</translation> </message> <message> <source>Game audio</source> - <translation type="unfinished"></translation> + <translation>Dźwięki w grze</translation> </message> <message> <source>Frontend audio</source> - <translation type="unfinished"></translation> + <translation>Dźwięki interfejsu</translation> </message> <message> <source>Account</source> - <translation type="unfinished"></translation> + <translation>Konto</translation> </message> <message> <source>Proxy settings</source> - <translation type="unfinished">Ustawienia proxy</translation> + <translation>Ustawienia proxy</translation> </message> <message> <source>Miscellaneous</source> - <translation type="unfinished">Różne</translation> + <translation>Różne</translation> </message> <message> <source>Updates</source> - <translation type="unfinished"></translation> + <translation>Aktualizacja</translation> </message> <message> <source>Check for updates</source> - <translation type="unfinished"></translation> + <translation>Sprawdź aktualizacje</translation> </message> <message> <source>Video recording options</source> - <translation type="unfinished">Ustawienia nagrywania</translation> + <translation>Ustawienia nagrywania</translation> </message> </context> <context> @@ -1235,27 +1293,27 @@ </message> <message> <source>Search for a room:</source> - <translation type="unfinished"></translation> + <translation>Szukaj pokoju:</translation> </message> <message> <source>Create room</source> - <translation type="unfinished"></translation> + <translation>Stwórz pokój</translation> </message> <message> <source>Join room</source> - <translation type="unfinished"></translation> + <translation>Dołącz do gry</translation> </message> <message> <source>Room state</source> - <translation type="unfinished"></translation> + <translation>Stan gry</translation> </message> <message> <source>Clear filters</source> - <translation type="unfinished"></translation> + <translation>Usuń filtry</translation> </message> <message> <source>Open server administration page</source> - <translation type="unfinished"></translation> + <translation>Otwórz ustawienia admina</translation> </message> </context> <context> @@ -1378,7 +1436,7 @@ </message> <message> <source>Add an indestructible border along the bottom</source> - <translation>>Dodaje niezniszczalną ramkę u dołu mapy</translation> + <translation>Dodaje niezniszczalną ramkę u dołu mapy</translation> </message> </context> <context> @@ -1479,12 +1537,12 @@ <message> <source>Date: %1 </source> - <translation type="unfinished"></translation> + <translation>Data: %1</translation> </message> <message> <source>Size: %1 </source> - <translation type="unfinished"></translation> + <translation>Rozmiar: %1</translation> </message> </context> <context> @@ -1535,15 +1593,15 @@ </message> <message> <source>Restrict Unregistered Players Join</source> - <translation type="unfinished"></translation> + <translation>Blokuj niezarejestrowanych graczy</translation> </message> <message> <source>Show games in lobby</source> - <translation type="unfinished"></translation> + <translation>Pokaż nierozpoczęte gry</translation> </message> <message> <source>Show games in-progress</source> - <translation type="unfinished"></translation> + <translation>Pokaż trwające gry</translation> </message> </context> <context> @@ -1594,31 +1652,31 @@ </message> <message> <source>Visual effects</source> - <translation type="unfinished"></translation> + <translation>Efekty wizualne</translation> </message> <message> <source>Sound</source> - <translation type="unfinished"></translation> + <translation>Dźwięk</translation> </message> <message> <source>In-game sound effects</source> - <translation type="unfinished"></translation> + <translation>Efekty dźwiękowe w grze</translation> </message> <message> <source>Music</source> - <translation type="unfinished"></translation> + <translation>Muzyka</translation> </message> <message> <source>In-game music</source> - <translation type="unfinished"></translation> + <translation>Muzyka w grze</translation> </message> <message> <source>Frontend sound effects</source> - <translation type="unfinished"></translation> + <translation>Efekty dźwiękowe w menu</translation> </message> <message> <source>Frontend music</source> - <translation type="unfinished"></translation> + <translation>Muzyka w menu</translation> </message> </context> <context> @@ -1963,43 +2021,47 @@ </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!</source> - <translation type="unfinished"></translation> + <translation>Ta wersja deweloperska nie jest końcową wersją gry i może być niekompatybilna z innymi wersjami i niektóre funkcje mogą być niekompletne lub nie działać w ogóle!</translation> </message> <message> <source>Fullscreen</source> - <translation type="unfinished">Pełny ekran</translation> + <translation>Pełny ekran</translation> </message> <message> <source>Fullscreen Resolution</source> - <translation type="unfinished"></translation> + <translation>Rozdzielczość</translation> </message> <message> <source>Windowed Resolution</source> - <translation type="unfinished"></translation> + <translation>Rozmiar okna</translation> </message> <message> <source>Your Email</source> - <translation type="unfinished"></translation> + <translation>Twój e-mail</translation> </message> <message> <source>Summary</source> - <translation type="unfinished"></translation> + <translation>Krótki opis</translation> </message> <message> <source>Send system information</source> - <translation type="unfinished"></translation> + <translation>Wyśłij informacje o systemie</translation> </message> <message> <source>Type the security code:</source> - <translation type="unfinished"></translation> + <translation>Wpisz litery z obrazka:</translation> </message> <message> <source>Revision</source> - <translation type="unfinished"></translation> + <translation>Wersja</translation> </message> <message> <source>This program is distributed under the %1</source> - <translation type="unfinished"></translation> + <translation>Ten program jest rozpowszechniany na licencji %1</translation> + </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation>Ustawienia zadziałają po restarcie gry.</translation> </message> </context> <context> @@ -2025,7 +2087,7 @@ </message> <message> <source>-r%1 (%2)</source> - <translation type="unfinished"></translation> + <translation>-r%1 (%2)</translation> </message> </context> <context> @@ -2242,40 +2304,41 @@ </message> <message> <source>Hedgewars - Nick not registered</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Niezarejestrowany nick</translation> </message> <message> <source>System Information Preview</source> - <translation type="unfinished"></translation> + <translation>Podgląd informacji o systemie</translation> </message> <message> <source>Failed to generate captcha</source> - <translation type="unfinished"></translation> + <translation>Nie udało się wygenerować captchy</translation> </message> <message> <source>Failed to download captcha</source> - <translation type="unfinished"></translation> + <translation>Nie udało się pobrać captchy</translation> </message> <message> <source>Please fill out all fields. Email is optional.</source> - <translation type="unfinished"></translation> + <translation>Wypełnij wszystkie pola. E-mail nie jest wymagany.</translation> </message> <message> <source>Hedgewars - Warning</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Ostrzeżenie</translation> </message> <message> <source>Hedgewars - Information</source> - <translation type="unfinished"></translation> + <translation>Hedgewars - Informacja</translation> </message> <message> <source>Not all players are ready</source> - <translation type="unfinished"></translation> + <translation>Nie wszyscy gracze są gotowi</translation> </message> <message> <source>Are you sure you want to start this game? Not all players are ready.</source> - <translation type="unfinished"></translation> + <translation>Jesteś pewien, że chcesz rozpocząc grę? +Nie wszyscy gracze są gotowi.</translation> </message> </context> <context> @@ -2342,7 +2405,7 @@ </message> <message> <source>Set default options</source> - <translation>Zapisz jako domyśłne ustawienia</translation> + <translation>Przywróć domyślne ustawienia</translation> </message> <message> <source>Open videos directory</source> @@ -2362,58 +2425,58 @@ </message> <message> <source>Restore default coding parameters</source> - <translation type="unfinished"></translation> + <translation>Przywróć domyślne ustawienia</translation> </message> <message> <source>Open the video directory in your system</source> - <translation type="unfinished"></translation> + <translation>Otwórz katalog z filmami</translation> </message> <message> <source>Play this video</source> - <translation type="unfinished"></translation> + <translation>Odtwórz wideo</translation> </message> <message> <source>Delete this video</source> - <translation type="unfinished"></translation> + <translation>Usuń wideo</translation> </message> <message> <source>Upload this video to your Youtube account</source> - <translation type="unfinished"></translation> + <translation>Wyślij to wideo na konto Youtube</translation> </message> <message> <source>Reset</source> - <translation type="unfinished"></translation> + <translation>Zresetuj</translation> </message> <message> <source>Set the default server port for Hedgewars</source> - <translation type="unfinished"></translation> + <translation>Ustaw domyślny port serwera Hedgewars</translation> </message> <message> <source>Invite your friends to your server in just 1 click!</source> - <translation type="unfinished"></translation> + <translation>Zaproś swoich znajomych jednym kliknięciem!</translation> </message> <message> <source>Click to copy your unique server URL in your clipboard. Send this link to your friends ands and they will be able to join you.</source> - <translation type="unfinished"></translation> + <translation>Kliknij by skopiować unikalny link twojego serwera do schowka. Wyślij link swoim znajomym aby mogli dołączyć do gry.</translation> </message> <message> <source>Start private server</source> - <translation type="unfinished"></translation> + <translation>Uruchom prywatny serwer</translation> </message> </context> <context> <name>RoomNamePrompt</name> <message> <source>Enter a name for your room.</source> - <translation type="unfinished"></translation> + <translation>Wprowadź nazwę pokoju.</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>Create room</source> - <translation type="unfinished"></translation> + <translation>Stwórz pokój</translation> </message> </context> <context> @@ -2467,19 +2530,19 @@ <name>SeedPrompt</name> <message> <source>The map seed is the basis for all random values generated by the game.</source> - <translation type="unfinished"></translation> + <translation>Ziarno jest podstawą wszystkich losowych wartości tworzynych przez grę.</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>Set seed</source> - <translation type="unfinished"></translation> + <translation>Ustaw ziarno</translation> </message> <message> <source>Close</source> - <translation type="unfinished"></translation> + <translation>Zamknij</translation> </message> </context> <context> @@ -2513,41 +2576,42 @@ <name>TCPBase</name> <message> <source>Unable to start server at %1.</source> - <translation type="unfinished"></translation> + <translation>Nie można uruchomić serwera na %1.</translation> </message> <message> <source>Unable to run engine at %1 Error code: %2</source> - <translation type="unfinished"></translation> + <translation>Nie można uruchomić silnika na %1 +Kod błędu: %2</translation> </message> </context> <context> <name>TeamSelWidget</name> <message> <source>At least two teams are required to play!</source> - <translation type="unfinished"></translation> + <translation>Do rozpoczęcia gry potrzeba dwóch druzyn!</translation> </message> </context> <context> <name>TeamShowWidget</name> <message> <source>%1's team</source> - <translation type="unfinished"></translation> + <translation>Drużyna %1</translation> </message> </context> <context> <name>ThemePrompt</name> <message> <source>Cancel</source> - <translation type="unfinished">Anuluj</translation> + <translation>Anuluj</translation> </message> <message> <source>Search for a theme:</source> - <translation type="unfinished"></translation> + <translation>Szukaj motywu:</translation> </message> <message> <source>Use selected theme</source> - <translation type="unfinished"></translation> + <translation>Użyj wybranego motywu</translation> </message> </context> <context> @@ -2718,26 +2782,26 @@ </message> <message> <source>hedgehog info</source> - <translation type="unfinished"></translation> + <translation>informacje o jeżu</translation> </message> </context> <context> <name>binds (categories)</name> <message> <source>Movement</source> - <translation type="unfinished"></translation> + <translation>Ruch</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Uzbrojenie</translation> + <translation>Uzbrojenie</translation> </message> <message> <source>Camera</source> - <translation type="unfinished"></translation> + <translation>Kamera</translation> </message> <message> <source>Miscellaneous</source> - <translation type="unfinished">Różne</translation> + <translation>Różne</translation> </message> </context> <context> @@ -2808,7 +2872,7 @@ </message> <message> <source>Hedgehog movement</source> - <translation type="unfinished"></translation> + <translation>Poruszanie się jeżem</translation> </message> </context> <context> @@ -3130,119 +3194,4 @@ <translation>DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_pt_BR.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -254,6 +254,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -353,6 +365,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -473,10 +489,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Carregar mapa</translation> </message> @@ -492,6 +504,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -536,7 +552,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 entrou</translation> + <translation type="obsolete">%1 *** %2 entrou</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -730,6 +746,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -871,6 +898,14 @@ <numerusform><b>%1</b> estava assustado e passou o turno <b>%2</b> vezes.</p>.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Salvar</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1974,6 +2009,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3082,119 +3121,4 @@ <translation>DPad</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_pt_PT.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation>Enviar Feedback</translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -261,6 +261,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Não foi possível gravar o StyleSheet em %1</translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -370,6 +382,10 @@ <translation>Tentás-te voltar ao servidor num espaço de tempo demasiado curto. Por favor, aguarda alguns segundos e tenta novamente.</translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -494,7 +510,7 @@ </message> <message> <source>Theme: </source> - <translation>Tema: </translation> + <translation type="obsolete">Tema: </translation> </message> <message> <source>Load drawn map</source> @@ -508,6 +524,10 @@ <source>All files</source> <translation>Todos os ficheiros</translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -552,7 +572,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 entrou</translation> + <translation type="obsolete">%1 *** %2 entrou</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -747,6 +767,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -888,6 +919,14 @@ <numerusform><b>%1</b> estava tão amedrontado que passou <b>%2</b> turnos.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Gravar</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1955,6 +1994,10 @@ <source>This program is distributed under the %1</source> <translation>Este programa é distribuído sob a %1</translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3094,115 +3137,115 @@ <name>server</name> <message> <source>Not room master</source> - <translation type="unfinished">Não és o anfitrião da sala</translation> + <translation type="obsolete">Não és o anfitrião da sala</translation> </message> <message> <source>Corrupted hedgehogs info</source> - <translation type="unfinished">Informação dos ouriços corrompida</translation> + <translation type="obsolete">Informação dos ouriços corrompida</translation> </message> <message> <source>too many teams</source> - <translation type="unfinished">demasiadas equipas</translation> + <translation type="obsolete">demasiadas equipas</translation> </message> <message> <source>too many hedgehogs</source> - <translation type="unfinished">demasiados ouriços</translation> + <translation type="obsolete">demasiados ouriços</translation> </message> <message> <source>There's already a team with same name in the list</source> - <translation type="unfinished">Já existe uma equipa com o mesmo nome na lista</translation> + <translation type="obsolete">Já existe uma equipa com o mesmo nome na lista</translation> </message> <message> <source>round in progress</source> - <translation type="unfinished">partida em progresso</translation> + <translation type="obsolete">partida em progresso</translation> </message> <message> <source>restricted</source> - <translation type="unfinished">limitada</translation> + <translation type="obsolete">limitada</translation> </message> <message> <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished">REMOVE_TEAM: equipa inexistente</translation> + <translation type="obsolete">REMOVE_TEAM: equipa inexistente</translation> </message> <message> <source>Not team owner!</source> - <translation type="unfinished">A equipa não te pertence!</translation> + <translation type="obsolete">A equipa não te pertence!</translation> </message> <message> <source>Less than two clans!</source> - <translation type="unfinished">Menos de 2 clãs!</translation> + <translation type="obsolete">Menos de 2 clãs!</translation> </message> <message> <source>Room with such name already exists</source> - <translation type="unfinished">Já existe uma sala com esse nome</translation> + <translation type="obsolete">Já existe uma sala com esse nome</translation> </message> <message> <source>Nickname already chosen</source> - <translation type="unfinished">Utilizador já em uso</translation> + <translation type="obsolete">Utilizador já em uso</translation> </message> <message> <source>Illegal nickname</source> - <translation type="unfinished">Nome de utilizador ilegal</translation> + <translation type="obsolete">Nome de utilizador ilegal</translation> </message> <message> <source>Protocol already known</source> - <translation type="unfinished">Protocolo já conhecido</translation> + <translation type="obsolete">Protocolo já conhecido</translation> </message> <message> <source>Bad number</source> - <translation type="unfinished">Número inválido</translation> + <translation type="obsolete">Número inválido</translation> </message> <message> <source>Nickname is already in use</source> - <translation type="unfinished">Nome de utilizador já em uso</translation> + <translation type="obsolete">Nome de utilizador já em uso</translation> </message> <message> <source>No checker rights</source> - <translation type="unfinished">Não possui permissões para verificar</translation> + <translation type="obsolete">Não possui permissões para verificar</translation> </message> <message> <source>Authentication failed</source> - <translation type="unfinished">A autenticação falhou</translation> + <translation type="obsolete">A autenticação falhou</translation> </message> <message> <source>60 seconds cooldown after kick</source> - <translation type="unfinished">É necessário aguardar 60 segundos após uma expulsão</translation> + <translation type="obsolete">É necessário aguardar 60 segundos após uma expulsão</translation> </message> <message> <source>kicked</source> - <translation type="unfinished">expulso</translation> + <translation type="obsolete">expulso</translation> </message> <message> <source>Ping timeout</source> - <translation type="unfinished">Ping timeout</translation> + <translation type="obsolete">Ping timeout</translation> </message> <message> <source>bye</source> - <translation type="unfinished">tchau (bye)</translation> + <translation type="obsolete">tchau (bye)</translation> </message> <message> <source>Illegal room name</source> - <translation type="unfinished">Nome da sala ilegal</translation> + <translation type="obsolete">Nome da sala ilegal</translation> </message> <message> <source>No such room</source> - <translation type="unfinished">Sala inexistente</translation> + <translation type="obsolete">Sala inexistente</translation> </message> <message> <source>Joining restricted</source> - <translation type="unfinished">Entrada restrita</translation> + <translation type="obsolete">Entrada restrita</translation> </message> <message> <source>Registered users only</source> - <translation type="unfinished">Apenas utilizadores registados</translation> + <translation type="obsolete">Apenas utilizadores registados</translation> </message> <message> <source>You are banned in this room</source> - <translation type="unfinished">Estás banido desta sala</translation> + <translation type="obsolete">Estás banido desta sala</translation> </message> <message> <source>Empty config entry</source> - <translation type="unfinished">Campo vazio na configuração</translation> + <translation type="obsolete">Campo vazio na configuração</translation> </message> </context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ro.ts --- a/share/hedgewars/Data/Locale/hedgewars_ro.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ro.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -260,6 +260,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -359,6 +371,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -478,10 +494,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -497,6 +509,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -541,7 +557,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 has joined</translation> + <translation type="obsolete">%1 *** %2 has joined</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -735,6 +751,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -882,6 +909,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1971,6 +2006,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3074,119 +3113,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_ru.ts --- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Wed May 29 22:52:37 2013 +0400 @@ -5,7 +5,7 @@ <name>About</name> <message> <source>Unknown Compiler</source> - <translation type="unfinished"></translation> + <translation>Неизвестный компилятор</translation> </message> </context> <context> @@ -30,31 +30,31 @@ <name>BanDialog</name> <message> <source>IP</source> - <translation type="unfinished">IP</translation> + <translation>IP</translation> </message> <message> <source>Nick</source> - <translation type="unfinished"></translation> + <translation>Псевдоним</translation> </message> <message> <source>IP/Nick</source> - <translation type="unfinished"></translation> + <translation>IP/Псевдоним</translation> </message> <message> <source>Reason</source> - <translation type="unfinished"></translation> + <translation>Причина</translation> </message> <message> <source>Duration</source> - <translation type="unfinished"></translation> + <translation>Длительность</translation> </message> <message> <source>Ok</source> - <translation type="unfinished"></translation> + <translation>ОК</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>you know why</source> @@ -62,57 +62,57 @@ </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Предупреждение</translation> </message> <message> <source>Please, specify %1</source> - <translation type="unfinished"></translation> + <translation>Пожалуйста, укажите %1</translation> </message> <message> <source>nickname</source> - <translation type="unfinished"></translation> + <translation>псевдоним</translation> </message> <message> <source>permanent</source> - <translation type="unfinished"></translation> + <translation>постоянный</translation> </message> </context> <context> <name>DataManager</name> <message> <source>Use Default</source> - <translation type="unfinished"></translation> + <translation>Использовать значение по умолчанию</translation> </message> </context> <context> <name>FeedbackDialog</name> <message> <source>View</source> - <translation type="unfinished"></translation> + <translation>Вид</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>Send Feedback</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> + <translation>Отослать отзыв</translation> </message> <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> - <translation type="unfinished"></translation> + <translation>Мы всегда рады новым предложениям, идям или сообщениям об ошибках.</translation> + </message> + <message> + <source>Send us feedback!</source> + <translation>Пришлите нам отзыв!</translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation>Если вы нашли ошибку, можете проверить, не было ли уже сообщения о ней здесь:</translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation>Адрес e-mail необязателен, но необходим, если вы хотите получить ответ.</translation> </message> </context> <context> @@ -146,73 +146,76 @@ </message> <message> <source>Game scheme will auto-select a weapon</source> - <translation type="unfinished"></translation> + <translation>Схема игры определяет набор оружия</translation> </message> <message> <source>Map</source> - <translation type="unfinished">Карта</translation> + <translation>Карта</translation> </message> <message> <source>Game options</source> - <translation type="unfinished"></translation> + <translation>Настройки игры</translation> </message> </context> <context> <name>HWApplication</name> <message numerus="yes"> <source>%1 minutes</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 минута</numerusform> + <numerusform>%1 минуты</numerusform> + <numerusform>%1 минут</numerusform> </translation> </message> <message numerus="yes"> <source>%1 hour</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 час</numerusform> + <numerusform>%1 часа</numerusform> + <numerusform>%1 часов</numerusform> </translation> </message> <message numerus="yes"> <source>%1 hours</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 час</numerusform> + <numerusform>%1 часа</numerusform> + <numerusform>%1 часов</numerusform> </translation> </message> <message numerus="yes"> <source>%1 day</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 день</numerusform> + <numerusform>%1 дня</numerusform> + <numerusform>%1 дней</numerusform> </translation> </message> <message numerus="yes"> <source>%1 days</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1 день</numerusform> + <numerusform>%1 дня</numerusform> + <numerusform>%1 дней</numerusform> </translation> </message> <message> <source>Scheme '%1' not supported</source> - <translation type="unfinished"></translation> + <translation>Схема "%1" не поддерживается</translation> </message> <message> <source>Cannot create directory %1</source> - <translation type="unfinished">Не могу создать папку %1</translation> + <translation>Не могу создать папку %1</translation> </message> <message> <source>Failed to open data directory: %1 Please check your installation!</source> - <translation type="unfinished"></translation> + <translation>Не могу открыть папку: +%1 + +Пожалуйста, проверьте установку приложения!</translation> </message> </context> <context> @@ -264,6 +267,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Ошибка при сохранении стиля в %1</translation> </message> + <message> + <source>%1 has joined</source> + <translation>%1 вошёл</translation> + </message> + <message> + <source>%1 has left</source> + <translation>%1 вышел</translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation>%1 вышел (%2)</translation> + </message> </context> <context> <name>HWForm</name> @@ -313,7 +328,7 @@ </message> <message> <source>%1's Team</source> - <translation type="unfinished"></translation> + <translation>Команда %1</translation> </message> <message> <source>Hedgewars - Nick registered</source> @@ -362,6 +377,11 @@ <message> <source>You reconnected too fast. Please wait a few seconds and try again.</source> + <translation>Вы переподключились слишком быстро. +Пожалуйста, попробуйте снова через несколько секунд.</translation> + </message> + <message> + <source>This page requires an internet connection.</source> <translation type="unfinished"></translation> </message> </context> @@ -416,91 +436,91 @@ </message> <message> <source>Map type:</source> - <translation type="unfinished"></translation> + <translation>Тип карты:</translation> </message> <message> <source>Image map</source> - <translation type="unfinished"></translation> + <translation>Изображение</translation> </message> <message> <source>Mission map</source> - <translation type="unfinished"></translation> + <translation>Миссия</translation> </message> <message> <source>Hand-drawn</source> - <translation type="unfinished">Рисованная карта</translation> + <translation>Рисованная карта</translation> </message> <message> <source>Randomly generated</source> - <translation type="unfinished"></translation> + <translation>Случайно сгенерированная</translation> </message> <message> <source>Random maze</source> - <translation type="unfinished"></translation> + <translation>Случайный лабиринт</translation> </message> <message> <source>Random</source> - <translation type="unfinished">Случайно</translation> + <translation>Случайно</translation> </message> <message> <source>Map preview:</source> - <translation type="unfinished"></translation> + <translation>Предпросмотр карты:</translation> </message> <message> <source>Load map drawing</source> - <translation type="unfinished"></translation> + <translation>Загрузить рисованную карту</translation> </message> <message> <source>Edit map drawing</source> - <translation type="unfinished"></translation> + <translation>Редактировать рисованную карту</translation> </message> <message> <source>Small islands</source> - <translation type="unfinished"></translation> + <translation>Маленькие острова</translation> </message> <message> <source>Medium islands</source> - <translation type="unfinished"></translation> + <translation>Средние острова</translation> </message> <message> <source>Large islands</source> - <translation type="unfinished"></translation> + <translation>Большие острова</translation> </message> <message> <source>Map size:</source> - <translation type="unfinished"></translation> + <translation>Размер карты:</translation> </message> <message> <source>Maze style:</source> - <translation type="unfinished"></translation> + <translation>Стиль лабиринта:</translation> </message> <message> <source>Mission:</source> - <translation type="unfinished"></translation> + <translation>Миссия:</translation> </message> <message> <source>Map:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Theme: </source> - <translation type="unfinished"></translation> + <translation>Карта:</translation> </message> <message> <source>Load drawn map</source> - <translation type="unfinished">Загрузить рисованную карту</translation> + <translation>Загрузить рисованную карту</translation> </message> <message> <source>Drawn Maps</source> - <translation type="unfinished">Рисованные карты</translation> + <translation>Рисованные карты</translation> </message> <message> <source>All files</source> - <translation type="unfinished">Все файлы</translation> + <translation>Все файлы</translation> </message> <message> <source>Large tunnels</source> - <translation type="unfinished"></translation> + <translation>Большие туннели</translation> + </message> + <message> + <source>Theme: %1</source> + <translation>Тема: %1</translation> </message> </context> <context> @@ -546,7 +566,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 вошёл</translation> + <translation type="obsolete">%1 *** %2 вошёл</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -584,11 +604,11 @@ </message> <message> <source>Nickname:</source> - <translation type="unfinished"></translation> + <translation>Псевдоним:</translation> </message> <message> <source>Password:</source> - <translation type="unfinished"></translation> + <translation>Пароль:</translation> </message> </context> <context> @@ -606,22 +626,22 @@ <name>HatButton</name> <message> <source>Change hat (%1)</source> - <translation type="unfinished"></translation> + <translation>Сменить шляпу (%1)</translation> </message> </context> <context> <name>HatPrompt</name> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>Use selected hat</source> - <translation type="unfinished"></translation> + <translation>Использовать выбранную шляпу</translation> </message> <message> <source>Search for a hat:</source> - <translation type="unfinished"></translation> + <translation>Поиск по шляпам:</translation> </message> </context> <context> @@ -635,7 +655,7 @@ <name>KeyBinder</name> <message> <source>Category</source> - <translation type="unfinished"></translation> + <translation>Категория</translation> </message> </context> <context> @@ -643,30 +663,30 @@ <message> <source>Duration: %1m %2s </source> - <translation type="unfinished">Длительность: %1мин %2сек</translation> + <translation>Длительность: %1мин %2сек</translation> </message> <message> <source>Video: %1x%2, </source> - <translation type="unfinished">Видео: %1x%2, </translation> + <translation>Видео: %1x%2, </translation> </message> <message> <source>%1 fps, </source> - <translation type="unfinished">%1 кадров/сек,</translation> + <translation>%1 кадров/сек,</translation> </message> <message> <source>Audio: </source> - <translation type="unfinished">Аудио: </translation> + <translation>Аудио: </translation> </message> <message> <source>unknown</source> - <translation type="unfinished"></translation> + <translation>неизвестно</translation> </message> </context> <context> <name>MapModel</name> <message> <source>No description available.</source> - <translation type="unfinished"></translation> + <translation>Описание отсутствует.</translation> </message> </context> <context> @@ -701,35 +721,35 @@ </message> <message> <source>General</source> - <translation type="unfinished">Основные настройки</translation> + <translation>Основные настройки</translation> </message> <message> <source>Bans</source> - <translation type="unfinished"></translation> + <translation>Баны</translation> </message> <message> <source>IP/Nick</source> - <translation type="unfinished"></translation> + <translation>IP/Псевдоним</translation> </message> <message> <source>Expiration</source> - <translation type="unfinished"></translation> + <translation>Окончание</translation> </message> <message> <source>Reason</source> - <translation type="unfinished"></translation> + <translation>Причина</translation> </message> <message> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation>Обновить</translation> </message> <message> <source>Add</source> - <translation type="unfinished"></translation> + <translation>Добавить</translation> </message> <message> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Удалить</translation> </message> </context> <context> @@ -740,6 +760,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation>Идёт загрузка пожалуйста, подождите.</translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -790,35 +821,35 @@ </message> <message> <source>Use my default</source> - <translation type="unfinished"></translation> + <translation>Использовать мои настройки по умолчанию</translation> </message> <message> <source>Reset all binds</source> - <translation type="unfinished"></translation> + <translation>Сбросить все привязки</translation> </message> <message> <source>Custom Controls</source> - <translation type="unfinished"></translation> + <translation>Настройка управления</translation> </message> <message> <source>Hat</source> - <translation type="unfinished">Шляпа</translation> + <translation>Шляпа</translation> </message> <message> <source>Name</source> - <translation type="unfinished">Название</translation> + <translation>Название</translation> </message> <message> <source>This hedgehog's name</source> - <translation type="unfinished"></translation> + <translation>Имя этого ежа</translation> </message> <message> <source>Randomize this hedgehog's name</source> - <translation type="unfinished"></translation> + <translation>Выбрать случайное имя для этого ежа</translation> </message> <message> <source>Random Team</source> - <translation type="unfinished">Случайная команда</translation> + <translation>Случайная команда</translation> </message> </context> <context> @@ -887,6 +918,14 @@ <numerusform><b>%1</b> испугался и пропустил <b>%2</b> ходов.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Сохранить</translation> + </message> </context> <context> <name>PageInGame</name> @@ -942,23 +981,23 @@ </message> <message> <source>Play a game across a local area network</source> - <translation type="unfinished"></translation> + <translation>Играть по локальной сети</translation> </message> <message> <source>Play a game on an official server</source> - <translation type="unfinished"></translation> + <translation>Играть на официальном сервере</translation> </message> <message> <source>Feedback</source> - <translation type="unfinished"></translation> + <translation>Отзыв</translation> </message> <message> <source>Play local network game</source> - <translation type="unfinished"></translation> + <translation>Играть по локальной сети</translation> </message> <message> <source>Play official network game</source> - <translation type="unfinished"></translation> + <translation>Играть на официальном сервере</translation> </message> </context> <context> @@ -969,7 +1008,7 @@ </message> <message> <source>Edit game preferences</source> - <translation type="unfinished">Редактировать настройки игры</translation> + <translation>Редактировать настройки игры</translation> </message> </context> <context> @@ -980,19 +1019,19 @@ </message> <message> <source>Edit game preferences</source> - <translation type="unfinished">Редактировать настройки игры</translation> + <translation>Редактировать настройки игры</translation> </message> <message> <source>Start</source> - <translation type="unfinished">Старт</translation> + <translation>Старт</translation> </message> <message> <source>Update</source> - <translation type="unfinished">Обновить</translation> + <translation>Обновить</translation> </message> <message> <source>Room controls</source> - <translation type="unfinished"></translation> + <translation>Управление комнатой</translation> </message> </context> <context> @@ -1094,47 +1133,47 @@ </message> <message> <source>Reset to default</source> - <translation type="unfinished"></translation> + <translation>Сбросить на значения по умолчанию</translation> </message> <message> <source>Reset all binds</source> - <translation type="unfinished"></translation> + <translation>Сбросить все привязки</translation> </message> <message> <source>Game</source> - <translation type="unfinished"></translation> + <translation>Игра</translation> </message> <message> <source>Graphics</source> - <translation type="unfinished"></translation> + <translation>Графика</translation> </message> <message> <source>Audio</source> - <translation type="unfinished"></translation> + <translation>Звук</translation> </message> <message> <source>Controls</source> - <translation type="unfinished"></translation> + <translation>Управление</translation> </message> <message> <source>Video Recording</source> - <translation type="unfinished"></translation> + <translation>Запись видео</translation> </message> <message> <source>Network</source> - <translation type="unfinished"></translation> + <translation>Сеть</translation> </message> <message> <source>Teams</source> - <translation type="unfinished">Команды</translation> + <translation>Команды</translation> </message> <message> <source>Schemes</source> - <translation type="unfinished"></translation> + <translation>Схемы</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Оружие</translation> + <translation>Оружие</translation> </message> <message> <source>Frontend</source> @@ -1142,7 +1181,7 @@ </message> <message> <source>Custom colors</source> - <translation type="unfinished">Свои цвета</translation> + <translation>Свои цвета</translation> </message> <message> <source>Game audio</source> @@ -1158,23 +1197,23 @@ </message> <message> <source>Proxy settings</source> - <translation type="unfinished">Настройки прокси</translation> + <translation>Настройки прокси</translation> </message> <message> <source>Miscellaneous</source> - <translation type="unfinished">Разное</translation> + <translation>Разное</translation> </message> <message> <source>Updates</source> - <translation type="unfinished"></translation> + <translation>Обновления</translation> </message> <message> <source>Check for updates</source> - <translation type="unfinished"></translation> + <translation>Проверить обновления</translation> </message> <message> <source>Video recording options</source> - <translation type="unfinished">Настройки видео</translation> + <translation>Настройки видео</translation> </message> </context> <context> @@ -1232,27 +1271,27 @@ </message> <message> <source>Search for a room:</source> - <translation type="unfinished"></translation> + <translation>Искать комнату:</translation> </message> <message> <source>Create room</source> - <translation type="unfinished"></translation> + <translation>Создать комнату</translation> </message> <message> <source>Join room</source> - <translation type="unfinished"></translation> + <translation>Войти в комнату</translation> </message> <message> <source>Room state</source> - <translation type="unfinished"></translation> + <translation>Состояние комнаты</translation> </message> <message> <source>Clear filters</source> - <translation type="unfinished"></translation> + <translation>Очистить фильтры</translation> </message> <message> <source>Open server administration page</source> - <translation type="unfinished"></translation> + <translation>Открыть страницу администрирования сервера</translation> </message> </context> <context> @@ -1476,12 +1515,12 @@ <message> <source>Date: %1 </source> - <translation type="unfinished"></translation> + <translation>Дата: %1</translation> </message> <message> <source>Size: %1 </source> - <translation type="unfinished"></translation> + <translation>Размер: %1</translation> </message> </context> <context> @@ -1532,7 +1571,7 @@ </message> <message> <source>Restrict Unregistered Players Join</source> - <translation type="unfinished"></translation> + <translation>Запретить вход незарегистрированным игрокам</translation> </message> <message> <source>Show games in lobby</source> @@ -1540,7 +1579,7 @@ </message> <message> <source>Show games in-progress</source> - <translation type="unfinished"></translation> + <translation>Показать текущие игры</translation> </message> </context> <context> @@ -1591,11 +1630,11 @@ </message> <message> <source>Visual effects</source> - <translation type="unfinished"></translation> + <translation>Визуальные эффекты</translation> </message> <message> <source>Sound</source> - <translation type="unfinished"></translation> + <translation>Звук</translation> </message> <message> <source>In-game sound effects</source> @@ -1603,7 +1642,7 @@ </message> <message> <source>Music</source> - <translation type="unfinished"></translation> + <translation>Музыка</translation> </message> <message> <source>In-game music</source> @@ -1964,15 +2003,15 @@ </message> <message> <source>Fullscreen</source> - <translation type="unfinished">Полный экран</translation> + <translation>Полный экран</translation> </message> <message> <source>Fullscreen Resolution</source> - <translation type="unfinished"></translation> + <translation>Разрешение в полноэкранном режиме</translation> </message> <message> <source>Windowed Resolution</source> - <translation type="unfinished"></translation> + <translation>Разрешение в оконном режиме</translation> </message> <message> <source>Your Email</source> @@ -1998,6 +2037,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -2241,12 +2284,13 @@ </message> <message> <source>Not all players are ready</source> - <translation type="unfinished"></translation> + <translation>Не все игроки готовы</translation> </message> <message> <source>Are you sure you want to start this game? Not all players are ready.</source> - <translation type="unfinished"></translation> + <translation>Вы действительно хотите запустить игру? +Не все игроки готовы.</translation> </message> </context> <context> @@ -2376,15 +2420,15 @@ <name>RoomNamePrompt</name> <message> <source>Enter a name for your room.</source> - <translation type="unfinished"></translation> + <translation>Введите название для вашей комнаты.</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>Create room</source> - <translation type="unfinished"></translation> + <translation>Создать комнату</translation> </message> </context> <context> @@ -2438,19 +2482,19 @@ <name>SeedPrompt</name> <message> <source>The map seed is the basis for all random values generated by the game.</source> - <translation type="unfinished"></translation> + <translation>Зерно карты - это основа для всех псведослучайных значений, используемых в игре.</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>Set seed</source> - <translation type="unfinished"></translation> + <translation>Установить зерно</translation> </message> <message> <source>Close</source> - <translation type="unfinished"></translation> + <translation>Закрыть</translation> </message> </context> <context> @@ -2496,29 +2540,29 @@ <name>TeamSelWidget</name> <message> <source>At least two teams are required to play!</source> - <translation type="unfinished"></translation> + <translation>Для игры нужны как минимум две команды!</translation> </message> </context> <context> <name>TeamShowWidget</name> <message> <source>%1's team</source> - <translation type="unfinished"></translation> + <translation>Команда %1</translation> </message> </context> <context> <name>ThemePrompt</name> <message> <source>Cancel</source> - <translation type="unfinished">Отмена</translation> + <translation>Отмена</translation> </message> <message> <source>Search for a theme:</source> - <translation type="unfinished"></translation> + <translation>Искать тему:</translation> </message> <message> <source>Use selected theme</source> - <translation type="unfinished"></translation> + <translation>Использовать выбранную тему</translation> </message> </context> <context> @@ -2689,26 +2733,26 @@ </message> <message> <source>hedgehog info</source> - <translation type="unfinished"></translation> + <translation>информация о еже</translation> </message> </context> <context> <name>binds (categories)</name> <message> <source>Movement</source> - <translation type="unfinished"></translation> + <translation>Передвижение</translation> </message> <message> <source>Weapons</source> - <translation type="unfinished">Оружие</translation> + <translation>Оружие</translation> </message> <message> <source>Camera</source> - <translation type="unfinished"></translation> + <translation>Камера</translation> </message> <message> <source>Miscellaneous</source> - <translation type="unfinished">Разное</translation> + <translation>Разное</translation> </message> </context> <context> @@ -2779,7 +2823,7 @@ </message> <message> <source>Hedgehog movement</source> - <translation type="unfinished"></translation> + <translation>Движение ежа</translation> </message> </context> <context> @@ -3101,119 +3145,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_sk.ts --- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -267,6 +267,18 @@ <source>Failed to save StyleSheet to %1</source> <translation>Nepodarilo sa uložiť súbor so štýlom do %1</translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -366,6 +378,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -485,10 +501,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Načítať nakreslenú mapu</translation> </message> @@ -504,6 +516,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -548,7 +564,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 sa pridal</translation> + <translation type="obsolete">%1 *** %2 sa pridal</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -742,6 +758,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -889,6 +916,14 @@ <numerusform><b>%1</b> sa zľakol a preskočil ťah <b>%2</b>krát.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Uložiť</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1998,6 +2033,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3127,119 +3166,4 @@ <translation>Pravý joystick (Doľava)</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_sv.ts --- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> + <source>Send us feedback!</source> <translation type="unfinished"></translation> </message> <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -258,6 +258,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -357,6 +369,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -476,10 +492,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Läs in ritad karta</translation> </message> @@ -495,6 +507,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -539,7 +555,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 har gått med</translation> + <translation type="obsolete">%1 *** %2 har gått med</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -733,6 +749,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -874,6 +901,14 @@ <numerusform><b>%1</b> var rädd och hoppade över turer <b>%2</b> gånger.</numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Spara</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1977,6 +2012,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3079,119 +3118,4 @@ <translation>Styrkors</translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_tr_TR.ts --- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -248,6 +248,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -347,6 +359,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -466,10 +482,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -485,6 +497,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -528,10 +544,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> <source>%1 *** %2 has left</source> <translation type="unfinished"></translation> </message> @@ -723,6 +735,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -858,6 +881,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1939,6 +1970,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3039,119 +3074,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_uk.ts --- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -264,6 +264,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -363,6 +375,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -482,10 +498,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished">Завантажити намальовану мапу</translation> </message> @@ -501,6 +513,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -545,7 +561,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 приєднався</translation> + <translation type="obsolete">%1 *** %2 приєднався</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -739,6 +755,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -886,6 +913,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished">Зберегти</translation> + </message> </context> <context> <name>PageInGame</name> @@ -1991,6 +2026,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3094,119 +3133,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Wed May 29 22:52:37 2013 +0400 @@ -97,7 +97,7 @@ <context> <name>DataManager</name> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="149"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/> <source>Use Default</source> <translation type="unfinished"></translation> </message> @@ -105,37 +105,37 @@ <context> <name>FeedbackDialog</name> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="87"/> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="88"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="91"/> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="89"/> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="90"/> - <source>Your email address is optional, but we may want to contact you.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="92"/> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="93"/> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="124"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="147"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="150"/> <source>Cancel</source> <translation type="unfinished">取消</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="175"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="178"/> <source>Send Feedback</source> <translation type="unfinished"></translation> </message> @@ -255,52 +255,67 @@ <context> <name>HWChatWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="641"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="502"/> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="523"/> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="525"/> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="652"/> <source>%1 has been removed from your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="651"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="662"/> <source>%1 has been added to your ignore list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="681"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="692"/> <source>%1 has been removed from your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="690"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="701"/> <source>%1 has been added to your friends list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="756"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="767"/> <source>Stylesheet imported from %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="757"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="768"/> <source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="776"/> <source>Couldn't read %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="773"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="784"/> <source>StyleSheet discarded</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="797"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="808"/> <source>StyleSheet saved to %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="800"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="811"/> <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> @@ -318,17 +333,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="632"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="636"/> <source>Game aborted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1056"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/> <source>Hedgewars - Nick registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1057"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/> <source>This nick is registered, and you haven't specified a password. If this nick isn't yours, please register your own nick at www.hedgewars.org @@ -337,93 +352,98 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1085"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/> <source>Your nickname is not registered. To prevent someone else from using it, please register it at www.hedgewars.org</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1090"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/> <source> Your password wasn't saved either.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/> <source>Someone already uses your nickname %1 on the server. Please pick another nickname:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>No nickname supplied.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1400"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/> <source>Hedgewars - Empty nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>Hedgewars - Wrong password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1133"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/> <source>You entered a wrong password.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1154"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/> <source>Try Again</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>Hedgewars - Connection error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/> <source>You reconnected too fast. Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1923"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1945"/> <source>Hedgewars Demo File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1924"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/> <source>Hedgewars Save File</source> <comment>File Types</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/> <source>Demo name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1672"/> - <location filename="../../../../QTfrontend/hwform.cpp" line="1993"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/hwform.cpp" line="1696"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2015"/> <source>Cannot save record to file %1</source> <translation>无法录入文件 %1</translation> </message> @@ -431,13 +451,13 @@ <context> <name>HWGame</name> <message> - <location filename="../../../../QTfrontend/game.cpp" line="374"/> + <location filename="../../../../QTfrontend/game.cpp" line="386"/> <location filename="../../../../QTfrontend/net/recorder.cpp" line="112"/> <source>en.txt</source> <translation>zh_CN.txt</translation> </message> <message> - <location filename="../../../../QTfrontend/game.cpp" line="415"/> + <location filename="../../../../QTfrontend/game.cpp" line="427"/> <source>Cannot open demofile %1</source> <translation>DEMO %1 打不开</translation> </message> @@ -445,158 +465,158 @@ <context> <name>HWMapContainer</name> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="217"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> <source>Small tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="218"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> <source>Medium tunnels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="124"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="126"/> <source>Seed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="93"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="94"/> <source>Map type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="96"/> - <source>Image map</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="97"/> - <source>Mission map</source> + <source>Image map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/> - <source>Hand-drawn</source> + <source>Mission map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/> - <source>Randomly generated</source> + <source>Hand-drawn</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/> + <source>Randomly generated</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/> <source>Random maze</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="110"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/> <source>Random</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/> <source>Map preview:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/> <source>Load map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="191"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/> <source>Edit map drawing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="204"/> - <source>All</source> - <translation>全部</translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="205"/> - <source>Small</source> - <translation>小型</translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="206"/> - <source>Medium</source> - <translation>中型</translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/> - <source>Large</source> - <translation>大型</translation> + <source>All</source> + <translation>全部</translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/> - <source>Cavern</source> - <translation>洞穴</translation> + <source>Small</source> + <translation>小型</translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/> + <source>Medium</source> + <translation>中型</translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/> + <source>Large</source> + <translation>大型</translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/> + <source>Cavern</source> + <translation>洞穴</translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="212"/> <source>Wacky</source> <translation>曲折</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="219"/> - <source>Large tunnels</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/> - <source>Small islands</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/> - <source>Medium islands</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/> + <source>Large tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="223"/> + <source>Small islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="224"/> + <source>Medium islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="225"/> <source>Large islands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="705"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="710"/> <source>Map size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="712"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="717"/> <source>Maze style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="725"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="730"/> <source>Mission:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="735"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="740"/> <source>Map:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="799"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="930"/> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="804"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="935"/> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>Drawn Maps</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/> <source>All files</source> <translation type="unfinished"></translation> </message> @@ -647,40 +667,33 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="495"/> - <source>%1 *** %2 has joined</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="544"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="788"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/> <source>%1 *** %2 has left</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="546"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="790"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/> <source>%1 *** %2 has left (%3)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="641"/> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="773"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/> <source>%1 *** %2 has joined the room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Quit reason: </source> <translation>退出原因:</translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="697"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/> <source>Room destroyed</source> <translation>房间损坏</translation> </message> <message> - <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="470"/> + <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/> <source>You got kicked</source> <translation>被踢出</translation> </message> @@ -890,6 +903,19 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="66"/> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagedata.cpp" line="126"/> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/> @@ -1010,47 +1036,57 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="174"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="113"/> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="118"/> + <source>Save</source> + <translation type="unfinished">保存</translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="182"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="201"/> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="189"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="208"/> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="253"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> <source>(%1 kill)</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="264"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/> <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> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="291"/> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="280"/> + <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="299"/> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -1149,12 +1185,12 @@ <context> <name>PageMultiplayer</name> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="52"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="50"/> <source>Edit game preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="64"/> + <location filename="../../../../QTfrontend/ui/page/pagemultiplayer.cpp" line="62"/> <source>Start</source> <translation>开始</translation> </message> @@ -1318,97 +1354,97 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="369"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/> <source>Frontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/> <source>Custom colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/> <source>Reset to default colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="429"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/> <source>Game audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="467"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/> <source>Frontend audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="492"/> <source>Account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="516"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="518"/> <source>Proxy settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="522"/> - <source>Proxy host</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="523"/> - <source>Proxy port</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/> - <source>Proxy login</source> + <source>Proxy host</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/> + <source>Proxy port</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/> + <source>Proxy login</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/> <source>Proxy password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="538"/> - <source>No proxy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="539"/> - <source>System proxy settings</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/> - <source>Socks5 proxy</source> + <source>No proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/> + <source>System proxy settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/> + <source>Socks5 proxy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/> <source>HTTP proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/> <source>Miscellaneous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="629"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/> <source>Check for updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/> <source>Video recording options</source> <translation type="unfinished"></translation> </message> @@ -1429,42 +1465,42 @@ <context> <name>PageRoomsList</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="63"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="64"/> <source>Search for a room:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="90"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="91"/> <source>Create room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="94"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="95"/> <source>Join room</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="141"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> <source>Room state</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="177"/> <source>Rules:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="179"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="191"/> <source>Weapons:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="190"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="202"/> <source>Clear filters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="210"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="222"/> <source>Open server administration page</source> <translation type="unfinished"></translation> </message> @@ -1477,14 +1513,14 @@ <translation type="obsolete">加入</translation> </message> <message numerus="yes"> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="595"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/> <source>%1 players online</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="208"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="220"/> <source>Admin features</source> <translation>管理员功能</translation> </message> @@ -1811,33 +1847,33 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="874"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/> <source>Ignore</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="273"/> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="886"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/> <source>Add friend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="869"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/> <source>Unignore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="881"/> + <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/> <source>Remove friend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="150"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="162"/> <source>Show games in lobby</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="153"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="165"/> <source>Show games in-progress</source> <translation type="unfinished"></translation> </message> @@ -1845,75 +1881,75 @@ <context> <name>QCheckBox</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="375"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/> <source>Fullscreen</source> <translation>游戏全屏幕</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="349"/> <source>Show FPS</source> <translation>显示帧率 (FPS)</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="358"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="360"/> <source>Alternative damage show</source> <translation>另一种伤害显示方式</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/> <source>Visual effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="454"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="471"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/> <source>Sound</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="455"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/> <source>In-game sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="461"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="476"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/> <source>Music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="462"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/> <source>In-game music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/> <source>Frontend sound effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="477"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/> <source>Frontend music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="622"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/> <source>Check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="364"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="366"/> <source>Show ammo menu tooltips</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="602"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/> <source>Append date and time to record file name</source> <translation>记录名称中包含具体时间日期</translation> </message> <message> <location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="509"/> <source>Save password</source> <translation type="unfinished"></translation> </message> @@ -1928,12 +1964,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="683"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/> <source>Record audio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="732"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/> <source>Use game resolution</source> <translation type="unfinished"></translation> </message> @@ -1956,88 +1992,88 @@ <translation>Lv 级别</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="588"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/> <source>(System default)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="311"/> - <source>Disabled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="312"/> - <source>Red/Cyan</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="313"/> - <source>Cyan/Red</source> + <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="314"/> - <source>Red/Blue</source> + <source>Red/Cyan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="315"/> - <source>Blue/Red</source> + <source>Cyan/Red</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="316"/> - <source>Red/Green</source> + <source>Red/Blue</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="317"/> + <source>Blue/Red</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> + <source>Red/Green</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> <source>Green/Red</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="326"/> + <source>Side-by-side</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="327"/> + <source>Top-Bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> + <source>Red/Cyan grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> + <source>Cyan/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> + <source>Red/Blue grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> + <source>Blue/Red grayscale</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="324"/> - <source>Side-by-side</source> + <source>Red/Green grayscale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="325"/> - <source>Top-Bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="318"/> - <source>Red/Cyan grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="319"/> - <source>Cyan/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="320"/> - <source>Red/Blue grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="321"/> - <source>Blue/Red grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="322"/> - <source>Red/Green grayscale</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="323"/> <source>Green/Red grayscale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="199"/> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="272"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="211"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="286"/> <source>Any</source> <translation type="unfinished"></translation> </message> @@ -2060,7 +2096,7 @@ <translation>城堡模式</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="255"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="259"/> <source>Playing teams</source> <translation>玩家队伍</translation> </message> @@ -2093,22 +2129,27 @@ <context> <name>QLabel</name> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/> <source>Locale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/> <source>Nickname</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="708"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="716"/> <source>Resolution</source> <translation>分辨率</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="293"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="295"/> <source>Quality</source> <translation type="unfinished"></translation> </message> @@ -2128,12 +2169,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="307"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="309"/> <source>Stereo rendering</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="338"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="340"/> <source>FPS limit</source> <translation>FPS 上限</translation> </message> @@ -2177,7 +2218,7 @@ <translation type="obsolete">版本</translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="437"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/> <source>Initial sound volume</source> <translation>初始音量</translation> </message> @@ -2324,27 +2365,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="100"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="103"/> <source>Your Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="108"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="111"/> <source>Summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="118"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="121"/> <source>Send system information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="133"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="136"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="161"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="164"/> <source>Type the security code:</source> <translation type="unfinished"></translation> </message> @@ -2359,27 +2400,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="652"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="672"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/> <source>Audio codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="697"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/> <source>Video codec</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/> <source>Framerate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="752"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/> <source>Bitrate (Kbps)</source> <translation type="unfinished"></translation> </message> @@ -2397,7 +2438,7 @@ <context> <name>QLineEdit</name> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="933"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="952"/> <source>unnamed</source> <translation>无名</translation> </message> @@ -2408,7 +2449,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="501"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/> <source>anonymous</source> <translation type="unfinished"></translation> </message> @@ -2449,82 +2490,82 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="962"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="981"/> <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/> <source>Cannot delete default scheme '%1'!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="988"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/> <source>Please select a record from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1083"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/> <source>Hedgewars - Nick not registered</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1474"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/> <source>Unable to start server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1535"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/> <source>Connection to server is lost</source> <translation>服务器连接丢失</translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2021"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/> <source>Not all players are ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="2022"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/> <source>Are you sure you want to start this game? Not all players are ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="347"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="352"/> <location filename="../../../../QTfrontend/util/MessageDialog.cpp" line="24"/> <source>Hedgewars - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="357"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="362"/> <source>System Information Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="372"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="383"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/> <source>Failed to generate captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="400"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/> <source>Failed to download captcha</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="464"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/> <source>Please fill out all fields. Email is optional.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1963"/> - <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="434"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/> + <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/> <source>Hedgewars - Success</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1964"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/> <source>All file associations have been set</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/hwform.cpp" line="1969"/> + <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/> <source>File association failed.</source> <translation type="unfinished"></translation> </message> @@ -2592,22 +2633,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/> <source>Room Name - Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="547"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/> <source>Please select room from the list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="582"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/> <source>Room Name - Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="583"/> + <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/> <source>The game you are trying to join has started. Do you still want to join the room?</source> <translation type="unfinished"></translation> @@ -2654,7 +2695,7 @@ <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="101"/> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="121"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="891"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="896"/> <source>File error</source> <translation type="unfinished"></translation> </message> @@ -2665,7 +2706,7 @@ </message> <message> <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/> - <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="892"/> + <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/> <source>Cannot open '%1' for reading</source> <translation type="unfinished"></translation> </message> @@ -2809,17 +2850,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="608"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/> <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="765"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/> <source>Set default options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="766"/> + <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/> <source>Restore default coding parameters</source> <translation type="unfinished"></translation> </message> @@ -3017,7 +3058,7 @@ <context> <name>TeamSelWidget</name> <message> - <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="260"/> + <location filename="../../../../QTfrontend/ui/widget/teamselect.cpp" line="264"/> <source>At least two teams are required to play!</source> <translation type="unfinished"></translation> </message> @@ -3734,7 +3775,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../../../QTfrontend/util/DataManager.cpp" line="156"/> + <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/> <source>Keyboard</source> <translation type="unfinished"></translation> </message> @@ -3776,147 +3817,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="2"/> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="3"/> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="4"/> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="5"/> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="6"/> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="7"/> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="8"/> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="9"/> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="10"/> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="11"/> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="12"/> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="13"/> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="14"/> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="15"/> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="16"/> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="17"/> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="18"/> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="19"/> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="20"/> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="21"/> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="22"/> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="23"/> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="24"/> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="25"/> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="26"/> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="27"/> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="28"/> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../../../QTfrontend/servermessages.h" line="29"/> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/hedgewars_zh_TW.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Wed May 29 22:52:37 2013 +0400 @@ -99,19 +99,19 @@ <translation type="unfinished"></translation> </message> <message> - <source>Please give us feedback!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>We are always happy about suggestions, ideas, or bug reports.</source> <translation type="unfinished"></translation> </message> <message> - <source>If you found a bug, you can see if it's already known here (english): </source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Your email address is optional, but we may want to contact you.</source> + <source>Send us feedback!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you found a bug, you can see if it's already been reported here: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your email address is optional, but necessary if you want us to get back at you.</source> <translation type="unfinished"></translation> </message> </context> @@ -248,6 +248,18 @@ <source>Failed to save StyleSheet to %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>%1 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 has left (%2)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWForm</name> @@ -347,6 +359,10 @@ Please wait a few seconds and try again.</source> <translation type="unfinished"></translation> </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWGame</name> @@ -466,10 +482,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Theme: </source> - <translation type="unfinished"></translation> - </message> - <message> <source>Load drawn map</source> <translation type="unfinished"></translation> </message> @@ -485,6 +497,10 @@ <source>Large tunnels</source> <translation type="unfinished"></translation> </message> + <message> + <source>Theme: %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -529,7 +545,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1***%2已經進入</translation> + <translation type="obsolete">%1***%2已經進入</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -723,6 +739,17 @@ </message> </context> <context> + <name>PageDataDownload</name> + <message> + <source>Loading, please wait.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This page requires an internet connection.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageDrawMap</name> <message> <source>Undo</source> @@ -858,6 +885,14 @@ <numerusform></numerusform> </translation> </message> + <message> + <source>Play again</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageInGame</name> @@ -1947,6 +1982,10 @@ <source>This program is distributed under the %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>This setting will be effective at next restart.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3047,119 +3086,4 @@ <translation type="unfinished"></translation> </message> </context> -<context> - <name>server</name> - <message> - <source>No checker rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Authentication failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>60 seconds cooldown after kick</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>kicked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Ping timeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>bye</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Empty config entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not room master</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Corrupted hedgehogs info</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many teams</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>too many hedgehogs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There's already a team with same name in the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>round in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>REMOVE_TEAM: no such team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Not team owner!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Less than two clans!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Room with such name already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No such room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Joining restricted</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Registered users only</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>You are banned in this room</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname already chosen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Illegal nickname</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Protocol already known</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bad number</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Nickname is already in use</source> - <translation type="unfinished"></translation> - </message> -</context> </TS> diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/it.txt --- a/share/hedgewars/Data/Locale/it.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/it.txt Wed May 29 22:52:37 2013 +0400 @@ -56,7 +56,7 @@ 00:53=Macchina Spazio-Temporale ; 00:54=Attrezzi da Costruzione 00:54=Terreno Spray -00:55=Congelatore +00:55=Raggio Congelatore 00:56=Mannarino 01:00=Combattiamo! @@ -453,7 +453,7 @@ 03:53=TARDIS Modello 40 ;03:54=(Arma in sviluppo) 03:54=Utilità di costruzione -03:55=(Arma in sviluppo) +03:55=Arma di ibernazione di massa 03:56=Ecco il grande chef! ; Weapon Descriptions (use | as line breaks) @@ -513,7 +513,7 @@ 04:53=Parti per un'avventura unica attraverso spazio e tempo,|lasciando i tuoi compagni da soli a combattere.|Preparati a ritornare in qualsiasi momento,|o per il Sudden Death o se sei l'ultimo sopravvissuto.|Attenzione! Non è utilizzabile durante il Sudden Death,|se sei rimasto da solo, o se sei il Re.|Attacco: Inzia la tua avventura nello spazio-tempo! ;04:54=DESCRIZIONE NON DISPONIBILE (arma ancora in sviluppo) 04:54=Con questo terreno spray non ti mancherà mai la terra |sotto ai piedi. Utilissimo per costruire ponti, |seppellire nemici e sigillare tunnel.|Ma fai attenzione a non usarlo a tuo svantaggio!|Attacco: Attiva|Su/Giù: Continua a mirare|Sinistra/Destra: Modifica la potenza di fuoriuscita del terreno -04:55=DESCRIZIONE NON DISPONIBILE +04:55=L'era glaciale non è mai stata così imminente!|Con questo potente raggio potrai congelare i ricci nemici,|rendere il terreno scivoloso e salvarti dalle cadute|in acqua trasformando il mare in una distesa di ghiaccio!|Attacco: Attiva|Su/Giù: Continua a mirare 04:56=Lancia due mannarini da cucina verso i tuoi nemici, se |lanciati con potenza possono rappresentare una... tagliente sorpresa!|Ricorda che rimarranno sul terreno dopo averli lanciati!|Attacco: Tieni premuto per lanciare con più forza ; Game goal strings diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/missions_fr.txt --- a/share/hedgewars/Data/Locale/missions_fr.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/missions_fr.txt Wed May 29 22:52:37 2013 +0400 @@ -13,7 +13,7 @@ Basic_Training_-_Sniper_Rifle.name=Initiation au Sniper Basic_Training_-_Sniper_Rifle.desc="Pan ! En pleine tête !" -Basic_Training_-_Rope.name=Initiation à la Grappin +Basic_Training_-_Rope.name=Initiation au Grappin Basic_Training_-_Rope.desc="Bouge de là et Balance toi !" User_Mission_-_Dangerous_Ducklings.name=Mission: Canards dangereux @@ -44,4 +44,4 @@ User_Mission_-_Rope_Knock_Challenge.desc="Regarde derrière toi !" User_Mission_-_RCPlane_Challenge.name=Challenge: Avion télécommandé -User_Mission_-_RCPlane_Challenge.desc="Plutôt confiant, hein, aviateur ?" \ No newline at end of file +User_Mission_-_RCPlane_Challenge.desc="Plutôt confiant, hein, aviateur ?" diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Locale/pl.txt --- a/share/hedgewars/Data/Locale/pl.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Locale/pl.txt Wed May 29 22:52:37 2013 +0400 @@ -174,7 +174,7 @@ 02:01=%1 śpi z rybami 02:01=%1 uważa, że fizyka płynów w tej grze jest do bani! 02:01=%1 wygląda na spragnionego -02:01=Morze Ciebie wzywa, %1 +02:01=Morze Cię wzywa, %1 02:01=%1 zaginął na morzu 02:01=%1 powinien przynieść zestaw do nurkowania 02:01=%1 ma pogrzeb na morzu @@ -286,7 +286,7 @@ 02:05=Dobre życie... w formie skrzyneczki! 02:05=Ktoś dzwonił po doktora? 02:05=Świeże bandaże! -02:05=To pomoże poczuć się Tobie lepiej +02:05=Po tym poczujesz sie lepiej! 02:05=Pomniejszy Eliksir Żywotności! Eeee... To chyba nie ta nazwa. 02:05=Zbierz mnie! 02:05=Zbierz to! @@ -309,6 +309,7 @@ 02:05=W Hedgewars opieka zdrowotna naprawdę wymiata! 02:05=Na zdrowie! 02:05=Szczepionka! +02:05=Ostatnio coś niewyraźnie wyglądasz. Weź tę apteczkę! ; New ammo crate 02:06=Więcej broni! @@ -541,6 +542,8 @@ 03:53=Typ 40 ;03:54=Zbuduj coś przydatnego 03:54=Narzędzie +03:55=Przełammy lody! +03:56=Nie przytnij sobie igieł! ; Weapon Descriptions (use | as line breaks) 04:00=Atakuj przeciwników zwykłym granatem.|Wybuchnie kiedy zapalnik skończy odliczanie.|1-5: Ustawia zapalnik|Atak: Przytrzymaj by rzucić z większą siłą @@ -599,6 +602,8 @@ 04:53=Wybierz się na podróż w czasie i przestrzeni|zostawiając inne jeże na polu walki.|Bądź przygotowany na powrót w dowolnym momencie.|Gdy rozpocznie się|Nagła Śmierć lub większość jeży zostanie wybita.|Uwaga. Nie zadziała podczas Nagłej Śmierci,|gdy jesteś sam lub jeśli jesteś Królem. ;04:54=INCOMPLETE 04:54=Wystrzel strumień kleistej mazi.|Buduj mosty, zasypuj wrogów, zatykaj tunele.|Uważaj by nie zasypać samego siebie! +04:55=Epoka lodowcowa powraca!!|Zamroź jeże, uczyń podłoże śliskim lub zapobiegnij|utonięciu zamrażając wodę.|Atak: Strzał +04:56=Rzuć w przeciwnika dwoma tasakami i zablokuj mu |drogę lub użyj ich do wspinaczki! Jednak uważaj! |Te tasaki są naprawdę ostre!|Atak: Przytrzymaj by rzucić z większą siłą (dwukrotnie) ; Game goal strings 05:00=Ustawienia gry diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/CMakeLists.txt --- a/share/hedgewars/Data/Maps/CMakeLists.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Maps/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -33,6 +33,14 @@ portal Ropes Ruler + SB_Bones + SB_Crystal + SB_Grassy + SB_Grove + SB_Haunty + SB_Oaks + SB_Shrooms + SB_Tentacles Sheep ShoppaKing Sticks diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/Eyes/preview.png Binary file share/hedgewars/Data/Maps/Eyes/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Bones/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Bones/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,5 @@ +install(FILES + map.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Bones) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Bones/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Bones/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Desert +48 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Bones/map.png Binary file share/hedgewars/Data/Maps/SB_Bones/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Bones/preview.png Binary file share/hedgewars/Data/Maps/SB_Bones/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Crystal/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Crystal/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Crystal) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Crystal/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Crystal/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Cave +32 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Crystal/map.png Binary file share/hedgewars/Data/Maps/SB_Crystal/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Crystal/mask.png Binary file share/hedgewars/Data/Maps/SB_Crystal/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Crystal/preview.png Binary file share/hedgewars/Data/Maps/SB_Crystal/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grassy/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Grassy/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Grassy) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grassy/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Grassy/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Castle +40 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grassy/map.png Binary file share/hedgewars/Data/Maps/SB_Grassy/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grassy/mask.png Binary file share/hedgewars/Data/Maps/SB_Grassy/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grassy/preview.png Binary file share/hedgewars/Data/Maps/SB_Grassy/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grove/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Grove/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Grove) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grove/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Grove/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Nature +48 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grove/map.png Binary file share/hedgewars/Data/Maps/SB_Grove/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grove/mask.png Binary file share/hedgewars/Data/Maps/SB_Grove/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Grove/preview.png Binary file share/hedgewars/Data/Maps/SB_Grove/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Haunty/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Haunty/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Haunty) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Haunty/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Haunty/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Halloween +24 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Haunty/map.png Binary file share/hedgewars/Data/Maps/SB_Haunty/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Haunty/mask.png Binary file share/hedgewars/Data/Maps/SB_Haunty/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Haunty/preview.png Binary file share/hedgewars/Data/Maps/SB_Haunty/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Oaks/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Oaks/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Oaks) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Oaks/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Oaks/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Nature +48 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Oaks/map.png Binary file share/hedgewars/Data/Maps/SB_Oaks/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Oaks/mask.png Binary file share/hedgewars/Data/Maps/SB_Oaks/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Oaks/preview.png Binary file share/hedgewars/Data/Maps/SB_Oaks/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Shrooms/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Shrooms/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Shrooms) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Shrooms/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Shrooms/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Nature +48 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Shrooms/map.png Binary file share/hedgewars/Data/Maps/SB_Shrooms/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Shrooms/mask.png Binary file share/hedgewars/Data/Maps/SB_Shrooms/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Shrooms/preview.png Binary file share/hedgewars/Data/Maps/SB_Shrooms/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Tentacles/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Tentacles/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/SB_Tentacles) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Tentacles/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/SB_Tentacles/map.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Hell +40 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Tentacles/map.png Binary file share/hedgewars/Data/Maps/SB_Tentacles/map.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Tentacles/mask.png Binary file share/hedgewars/Data/Maps/SB_Tentacles/mask.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Maps/SB_Tentacles/preview.png Binary file share/hedgewars/Data/Maps/SB_Tentacles/preview.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/CMakeLists.txt --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/CMakeLists.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -1,7 +1,9 @@ file(GLOB Config *.ini) file(GLOB Missions *.lua) +file(GLOB Packs *.hwp) install(FILES ${Config} ${Missions} + ${Packs} DESTINATION "${SHAREPATH}Data/Missions/Campaign/A Classic Fairytale") diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Wed May 29 22:52:37 2013 +0400 @@ -760,7 +760,9 @@ SaveCampaignVar("M5ChiefDead", "0") end SaveCampaignVar("M5Choice", "" .. choice) - SaveCampaignVar("Progress", "5") + if progress and progress<5 then + SaveCampaignVar("Progress", "5") + end for i = 1, 7 do if natives[i] == deployedHog then @@ -814,6 +816,7 @@ end function GetVariables() + progress = tonumber(GetCampaignVar("Progress")) m2DenseDead = tonumber(GetCampaignVar("M2DenseDead")) m2Choice = tonumber(GetCampaignVar("M2Choice")) m4DenseDead = tonumber(GetCampaignVar("M4DenseDead")) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua Wed May 29 22:52:37 2013 +0400 @@ -399,7 +399,9 @@ function DoMissionFinished() AddCaption(loc("Salvation was one step closer now...")) - SaveCampaignVar("Progress", "6") + if progress and progress<6 then + SaveCampaignVar("Progress", "6") + end ParseCommand("teamgone " .. loc("011101001")) TurnTimeLeft = 0 end @@ -451,6 +453,7 @@ end function GetVariables() + progress = tonumber(GetCampaignVar("Progress")) m5DeployedNum = tonumber(GetCampaignVar("M5DeployedNum")) end diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/enemy.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/enemy.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/enemy.lua Wed May 29 22:52:37 2013 +0400 @@ -400,7 +400,9 @@ end function WinMission() - SaveCampaignVar("Progress", "9") + if progress and progress<9 then + SaveCampaignVar("Progress", "9") + end ParseCommand("teamgone " .. loc("011101001")) TurnTimeLeft = 0 end @@ -420,6 +422,7 @@ end function GetVariables() + progress = tonumber(GetCampaignVar("Progress")) m5DeployedNum = tonumber(GetCampaignVar("M5DeployedNum")) m2Choice = tonumber(GetCampaignVar("M2Choice")) m5Choice = tonumber(GetCampaignVar("M5Choice")) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua Wed May 29 22:52:37 2013 +0400 @@ -284,7 +284,9 @@ function DoPrincessFreed() AnimSay(princess, loc("Thank you, my hero!"), SAY_SAY, 0) - SaveCampaignVar("Progress", "7") + if progress and progress<7 then + SaveCampaignVar("Progress", "7") + end ParseCommand("teamgone " .. loc("011101001")) TurnTimeLeft = 0 end @@ -390,6 +392,7 @@ end function GetVariables() + progress = tonumber(GetCampaignVar("Progress")) m5DeployedNum = tonumber(GetCampaignVar("M5DeployedNum")) m2Choice = tonumber(GetCampaignVar("M2Choice")) m5Choice = tonumber(GetCampaignVar("M5Choice")) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/first_blood.hwp Binary file share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/first_blood.hwp has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/first_blood.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/first_blood.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/first_blood.lua Wed May 29 22:52:37 2013 +0400 @@ -56,6 +56,7 @@ canKilled = false desertTaken = false challengeFailed = false +deleteCrate = false difficultyChoice = false princessFace = "Left" elderFace = "Left" @@ -220,6 +221,9 @@ end -----------------------------Events------------------------------------ function CheckNeedToTurn(gear) + if youngKilled then + return false + end if gear == princess then if princessKilled ~= true then if (GetX(princess) > GetX(youngh) and princessFace == "Right") @@ -466,6 +470,7 @@ function DoTimesUp() challengeFailed = true + deleteCrate = true DeleteGear(crates[1]) TurnTimeLeft = -1 AddCaption(loc("And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame...")) @@ -538,7 +543,9 @@ function DoCannibalKilled() AddAnim(cannKilledAnim) - SaveCampaignVar("Progress", "1") + if not progress then + SaveCampaignVar("Progress", "1") + end end function DoCannibalKilledEarly() @@ -603,9 +610,7 @@ MinesTime = 3000 Explosives = 0 Delay = 10 - MapGen = 0 - TemplateFilter = 6 - TemplateNumber = 33 + Map = "A_Classic_Fairytale_first_blood" Theme = "Nature" @@ -630,6 +635,7 @@ end function onGameStart() + progress = tonumber(GetCampaignVar("Progress")) TurnTimeLeft = -1 FollowGear(youngh) ShowMission(loc("A Classic Fairytale"), loc("First Blood"), loc("Finish your training|Hint: Animations can be skipped with the [Precise] key."), -amSkip, 0) @@ -664,6 +670,8 @@ rope2Taken = true elseif gear == ropeCrate3 then rope3Taken = true + elseif gear == crates[1] and deleteCrate == true then + deleteCrate = false elseif gear == crates[1] and challengeFailed == false then crates[1] = nil cratesCollected = cratesCollected + 1 diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.hwp Binary file share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.hwp has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.lua Wed May 29 22:52:37 2013 +0400 @@ -903,7 +903,9 @@ end function DoWon() - SaveCampaignVar("Progress", "3") + if progress and progress<3 then + SaveCampaignVar("Progress", "3") + end AddAnim(winAnim) AddFunction({func = FinishWon, args = {}}) end @@ -939,11 +941,10 @@ MinesTime = 3000 Explosives = 0 Delay = 5 - MapGen = 0 - TemplateFilter = 6 - TemplateNumber = 27 - Theme = "Nature" - SuddenDeathTurns = 3000 + Map = "A_Classic_Fairytale_journey" + Theme = "Nature" + + SuddenDeathTurns = 3000 AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy") leaks = AddHog(loc("Leaks A Lot"), 0, 100, "Rambo") @@ -974,6 +975,7 @@ end function onGameStart() + progress = tonumber(GetCampaignVar("Progress")) m2Choice = tonumber(GetCampaignVar("M2Choice")) m2DenseDead = tonumber(GetCampaignVar("M2DenseDead")) m2RamonDead = tonumber(GetCampaignVar("M2RamonDead")) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/queen.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/queen.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/queen.lua Wed May 29 22:52:37 2013 +0400 @@ -575,6 +575,7 @@ end function GetVariables() + progress = tonumber(GetCampaignVar("Progress")) m5DeployedNum = tonumber(GetCampaignVar("M5DeployedNum")) m2Choice = tonumber(GetCampaignVar("M2Choice")) m5Choice = tonumber(GetCampaignVar("M5Choice")) @@ -606,7 +607,9 @@ SaveCampaignVar("M8PrincessLeader", princessLeader) SaveCampaignVar("M8EnemyFled", enemyFled) SaveCampaignVar("M8Scene", "" .. scene) - SaveCampaignVar("Progress", "8") + if progress and progress<8 then + SaveCampaignVar("Progress", "8") + end end function SetupPlace() diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/shadow.hwp Binary file share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/shadow.hwp has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/shadow.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/shadow.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/shadow.lua Wed May 29 22:52:37 2013 +0400 @@ -761,7 +761,9 @@ SaveCampaignVar("M2RamonDead", "0") SaveCampaignVar("M2SpikyDead", "0") AddFunction({func = KillCyborg, args = {}}) - SaveCampaignVar("Progress", "2") + if progress and progress<2 then + SaveCampaignVar("Progress", "2") + end SaveCampaignVar("M2Choice", "" .. choice) end @@ -783,7 +785,9 @@ end AddAnim(refusedFinalAnim) AddFunction({func = KillCyborg, args = {}}) - SaveCampaignVar("Progress", "2") + if progress and progress<2 then + SaveCampaignVar("Progress", "2") + end SaveCampaignVar("M2Choice", "" .. choice) end @@ -791,7 +795,9 @@ SaveCampaignVar("M2DenseDead", "1") SaveCampaignVar("M2RamonDead", "0") SaveCampaignVar("M2SpikyDead", "0") - SaveCampaignVar("Progress", "2") + if progress and progress<2 then + SaveCampaignVar("Progress", "2") + end SaveCampaignVar("M2Choice", "" .. choice) AddAnim(attackedFinalAnim) AddFunction({func = KillCyborg, args = {}}) @@ -839,11 +845,9 @@ MinesTime = 3000 Explosives = 0 Delay = 10 - MapGen = 0 - TemplateFilter = 6 - TemplateNumber = 22 + Map = "A_Classic_Fairytale_shadow" Theme = "Nature" - SuddenDeathTurns = 3000 + SuddenDeathTurns = 3000 AddHogs() PlaceHogs() @@ -854,6 +858,7 @@ end function onGameStart() + progress = tonumber(GetCampaignVar("Progress")) HideHogs() AddAmmo(leaks, amSwitch, 100) AddAmmo(dense, amSwitch, 100) diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Sun Apr 21 01:36:08 2013 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Wed May 29 22:52:37 2013 +0400 @@ -109,7 +109,9 @@ else SaveCampaignVar("M4DenseDead", "0") end - SaveCampaignVar("Progress", "4") + if progress and progress<4 then + SaveCampaignVar("Progress", "4") + end ParseCommand("teamgone " .. loc("011101001")) TurnTimeLeft = 0 end @@ -416,6 +418,7 @@ end function onGameStart() + progress = tonumber(GetCampaignVar("Progress")) GetVariables() SetupAmmo() SetupPlace() diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Scripts/Multiplayer/ShoppaMap.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/ShoppaMap.cfg Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,2 @@ +Default +Default diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Scripts/Multiplayer/ShoppaMap.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/ShoppaMap.lua Wed May 29 22:52:37 2013 +0400 @@ -0,0 +1,450 @@ +ObjectList = {} +PointsBuffer = '' -- A string to accumulate points in + +-- Overall padding for roping freedom +Padding = 430 + +function AddPoint(x, y, width, erase) + PointsBuffer = PointsBuffer .. string.char(band(x,0xff00) / 256 , band(x,0xff) , band(y,0xff00) / 256 , band(y,0xff)) + if width then + width = bor(width,0x80) + if erase then + width = bor(width,0x40) + end + PointsBuffer = PointsBuffer .. string.char(width) + else + PointsBuffer = PointsBuffer .. string.char(0) + end + if #PointsBuffer > 245 then + ParseCommand('draw '..PointsBuffer) + PointsBuffer = '' + end +end +function FlushPoints() + if #PointsBuffer > 0 then + ParseCommand('draw '..PointsBuffer) + PointsBuffer = '' + end +end + +-- This could probably use less points and more precision +-- 700x700 for object space +function DrawStar(x, y, d, f) +-- default scale is 700x700 or so + s = 700 + if not(d == 1) then s = div(s,d) end + if NoOverlap(x,y,s,s) then + AddCollision(x,y,s,s) + if not(d == 1) then + i = 6-d + j = math.min(div(5,d),1) + -- centre + AddPoint(x,y,div(20,d)) + -- arms + AddPoint(x-div(325,d),y-f*div(108,d),2) + AddPoint(x+div(325,d),y-f*div(108,d)) + AddPoint(x-div(205,d),y+f*div(270,d)) + AddPoint(x,y-f*div(345,d)) + AddPoint(x+div(205,d),y+f*div(270,d)) + AddPoint(x-div(325,d),y-f*div(108,d)) + if d < 4 then + -- fill in arm 1 + AddPoint(x-div(275,d),y-f*div(92,d),i) + AddPoint(x-div(50,d),y-f*div(92,d)) + AddPoint(x-div(105,d),y+f*div(25,d)) + AddPoint(x-div(250,d),y-f*div(80,d)) + AddPoint(x-div(115,d),y-f*div(70,d)) + AddPoint(x-div(130,d),y-f*div(25,d)) + AddPoint(x-div(175,d),y-f*div(60,d)) + -- fill in arm 2 + AddPoint(x+div(275,d),y-f*div(92,d),i) + AddPoint(x+div(50,d),y-f*div(92,d)) + AddPoint(x+div(105,d),y+f*div(25,d)) + AddPoint(x+div(250,d),y-f*div(80,d)) + AddPoint(x+div(115,d),y-f*div(70,d)) + AddPoint(x+div(130,d),y-f*div(25,d)) + AddPoint(x+div(175,d),y-f*div(60,d)) + -- fill in arm 3 + AddPoint(x-div(175,d),y+f*div(230,d),i) + AddPoint(x-div(110,d),y+f*div(60,d)) + AddPoint(x,y+f*div(120,d)) + AddPoint(x-div(155,d),y+f*div(215,d)) + AddPoint(x-div(105,d),y+f*div(95,d)) + AddPoint(x-div(60,d),y+f*div(130,d)) + AddPoint(x-div(85,d),y+f*div(155,d),j) + -- fill in arm 4 + AddPoint(x,y-f*div(300,d),3) + AddPoint(x+div(50,d),y-f*div(125,d)) + AddPoint(x-div(50,d),y-f*div(125,d)) + AddPoint(x,y-f*div(270,d)) + AddPoint(x-div(40,d),y-f*div(160,d)) + AddPoint(x+div(40,d),y-f*div(160,d)) + AddPoint(x,y-f*div(195,d),j) + -- fill in arm 5 + AddPoint(x+div(175,d),y+f*div(230,d),i) + AddPoint(x+div(110,d),y+f*div(60,d)) + AddPoint(x,y+f*div(120,d)) + AddPoint(x+div(155,d),y+f*div(215,d)) + AddPoint(x+div(105,d),y+f*div(95,d)) + AddPoint(x+div(60,d),y+f*div(130,d)) + AddPoint(x+div(85,d),y+f*div(155,d),j) + end + else + -- centre + AddPoint(x,y,20) + -- arms + AddPoint(x-325,y-f*108,1) + AddPoint(x+325,y-f*108) + AddPoint(x-205,y+f*270) + AddPoint(x,y-f*345) + AddPoint(x+205,y+f*270) + AddPoint(x-325,y-f*108) + -- fill in arm 1 + AddPoint(x-275,y-f*92,4) + AddPoint(x-50,y-f*92) + AddPoint(x-105,y+f*25) + AddPoint(x-250,y-f*80) + AddPoint(x-115,y-f*70) + AddPoint(x-130,y-f*25) + AddPoint(x-175,y-f*60) + -- fill in arm 2 + AddPoint(x+275,y-f*92,4) + AddPoint(x+50,y-f*92) + AddPoint(x+105,y+f*25) + AddPoint(x+250,y-f*80) + AddPoint(x+115,y-f*70) + AddPoint(x+130,y-f*25) + AddPoint(x+175,y-f*60) + -- fill in arm 3 + AddPoint(x-175,y+f*230,4) + AddPoint(x-110,y+f*60) + AddPoint(x-10,y+f*120) + AddPoint(x-155,y+f*215) + AddPoint(x-105,y+f*95) + AddPoint(x-60,y+f*130) + AddPoint(x-85,y+f*155,5) + -- fill in arm 4 + AddPoint(x,y-f*300,3) + AddPoint(x+50,y-f*125) + AddPoint(x-50,y-f*125) + AddPoint(x,y-f*270) + AddPoint(x-40,y-f*160) + AddPoint(x+40,y-f*160) + AddPoint(x,y-f*195,5) + -- fill in arm 5 + AddPoint(x+175,y+f*230,4) + AddPoint(x+110,y+f*60) + AddPoint(x+10,y+f*120) + AddPoint(x+155,y+f*215) + AddPoint(x+105,y+f*95) + AddPoint(x+60,y+f*130) + AddPoint(x+85,y+f*155,5) + end + return true + else + return false + end +end + +-- well. this was easy +function DrawCircle(x, y, w) + if NoOverlap(x,y,w*10+6,w*10+6) then + AddCollision(x,y,w*10+6,w*10+6) + AddPoint(x,y,w) + return true + else + return false + end +end + +function DrawCrescent(x, y, w, s) + b = div(w*(GetRandom(4)+1)*10+6,6) + + if NoOverlap(x,y,w*10+6,w*10+6) then + AddCollision(x,y,w*10+6,w*10+6) + AddPoint(x,y,w) + if s then -- side + if GetRandom(1) == 0 then + b = b*-1 + end + AddPoint(x-b,y,w,true) + else -- top + AddPoint(x,y-b,w,true) + end + return true + else + return false + end +end + +function DrawCones(x,w,h,c) + y = 2048-h + hw = div(w,2) + if NoOverlap(x+div(w*c,2),y+div(h,2),w*c,h) then + AddCollision(x+div(w*c,2),y+div(h,2),w*c,h) + x = x + hw + for i = 1,c do -- I'm guessing outlining is slightly more efficient than fanning at 16px brush + AddPoint(x,y,1) + AddPoint(x-hw+8,2048) + AddPoint(x+hw-8,2048) + AddPoint(x,y) + for j = x-hw+25,x+hw,34 do + AddPoint(x,y+30,3) + AddPoint(j,2048) + end + if GetRandom(2)==0 then + AddPoint(x,y-20,8) + end + x = x + w + end + else + return false + end + +end + +function DrawPlateau(x,y,l,t,b) + if NoOverlapXY(x-28,y-28,x+l+28,y+l+28) then + AddPoint(x,y,5) + AddPoint(x+l,y) + + to = GetRandom(6) + if not(to==0) then + if GetRandom(2)==0 then + to = div(l,to) + else + to = l-div(l,to) + end + end + if t>0 and NoOverlapXY(x+to-28,y-t-28,x+to+28,y+28) then + AddPoint(x+to,y-t,5) + AddPoint(x+to,y) + if GetRandom(2)==0 then + AddPoint(x+to,y-t+75,20) + else -- square off + AddPoint(x+to-20,y-t,1) + AddPoint(x+to-20,y-t-20) + AddPoint(x+to+20,y-t-20) + AddPoint(x+to+20,y-t) + end + tSucc = true + end + + if to > 120 and GetRandom(2)==0 then -- left bumper + AddPoint(x+15,y-20,9) + else -- square off + --AddPoint(x-50,y,2) + AddPoint(x,y+20,1) + AddPoint(x-20,y+20) + AddPoint(x-20,y-20) + AddPoint(x,y-20) + end + if to < (l-120) and GetRandom(2)==0 then -- right bumper + AddPoint(x+l-15,y-20,9) + else -- square off + --AddPoint(x+l+50,y,2) + AddPoint(x+l,y+20,1) + AddPoint(x+l+20,y+20) + AddPoint(x+l+20,y-20) + AddPoint(x+l,y-20) + end + bo = GetRandom(6) + if not(bo == 0) then + if GetRandom(2)==0 then + bo = div(l,bo) + else + bo = l-div(l,bo) + end + end + -- still consider a success even if we can't place this one. Might need to return more than true/false + if b>0 and NoOverlapXY(x+bo-28,y-28,x+bo+28,y+b+28) then + AddPoint(x+bo,y,5) + AddPoint(x+bo,y+b) + if GetRandom(2)==0 then + AddPoint(x+bo,y+b-75,20) + else -- square off + AddPoint(x+bo-20,y+b,1) + AddPoint(x+bo-20,y+b+20) + AddPoint(x+bo+20,y+b+20) + AddPoint(x+bo+20,y+b) + end + bSucc = true + end + if bSucc then AddCollisionXY(x+bo-28,y-28,x+bo+28,y+b+28) end + if tSucc then AddCollisionXY(x+to-28,y-t-28,x+to+28,y+28) end + AddCollisionXY(x-28,y-28,x+l+28,y+28) + return true + else + return false + end +end + +function AddCollision(x,y,w,h) + table.insert(ObjectList,{x-div(w+Padding,2), + y-div(h+Padding,2), + x+div(w+Padding,2), + y+div(h+Padding,2)}) +end + +function AddCollisionXY(x,y,x2,y2) + table.insert(ObjectList,{x-div(Padding,2), + y-div(Padding,2), + x2+div(Padding,2), + y2+div(Padding,2)}) +end + +-- bounding box check +function NoOverlap(x,y,w,h) + w = w + h = h + x = x-div(w,2) + y = y-div(h,2) + x2 = x+w + y2 = y+h + return NoOverlapXY(x,y,x2,y2) +end +function NoOverlapXY(x,y,x2,y2) + i=1 + l=table.getn(ObjectList) + while i<=l do + ox = ObjectList[i][1] + oy = ObjectList[i][2] + ox2 = ObjectList[i][3] + oy2 = ObjectList[i][4] + -- WriteLnToConsole(ox..' '..oy..' '..ox2..' '..oy2..' - '..x..' '..y..' '..x2..' '..y2) + --if (math.abs(ox + ox2 -x - x2) <= (ox2 - ox + x2 - x)) and (math.abs(oy + oy2 - y - y2) <= (oy - oy2 + y - y2)) then + if x < ox2 and ox < x2 and y < oy2 and oy < y2 then + return false + end + i=i+1 + end + return true +end + +function dbg() + i=1 + l=table.getn(ObjectList) + while i<=l do + ox = ObjectList[i][1] + oy = ObjectList[i][2] + ox2 = ObjectList[i][3] + oy2 = ObjectList[i][4] + AddPoint(ox,oy,1) + AddPoint(ox2,oy) + AddPoint(ox2,oy2) + AddPoint(ox,oy2) + AddPoint(ox,oy) + AddPoint(ox2,oy2) + i=i+1 + end +end + +function onGameInit() + MapGen = 2 + TemplateFilter = 0 + TotGen = 0 + Tries = 0 + if band(GameFlags,gfBottomBorder) == 0 and GetRandom(2) == 0 then + AddPoint(-50,2010,7) + AddPoint(4150,2010) + for i = 0,GetRandom(3) do + x = GetRandom(4096) + w = GetRandom(40)+10 + AddPoint(x,2200,w,true) + AddPoint(x,1900) + table.insert(ObjectList,{x-div(w*9,2), + 2010-div(100,2), + x+div(w*9,2), + 2010+div(100,2)}) + end + end + + if GetRandom(2) == 0 then + l = GetRandom(3)+1 + w = GetRandom(200)+200 + h = GetRandom(350)+200 + x = GetRandom(4096-w*l) + DrawCones(x,w,h,l) + --if DrawCones(x,w,h,l) then TotGen = TotGen+1 + end + if GetRandom(2) == 0 then + for i = 1,GetRandom(5)+1 do + w = GetRandom(35)+15 + x = GetRandom(4096-w*12)+w + if GetRandom(2)==0 then + y = 2048-GetRandom(w*10+6) + else + y = 2048 + end + -- if AddPoint(x,y,w) then TotGetn = TotGen+1 + DrawCircle(x,y,w) + end + end + if GetRandom(2)==0 then + x = GetRandom(3300)+350 + y = GetRandom(1300)+350 + if DrawStar(x,y, 1, 1+GetRandom(2)*-2) then + TotGen = TotGen+1 + end + end + + while (TotGen < 6) and (Tries < 100) do + l = GetRandom(1000-Tries*10)+300 + x = GetRandom(3900-l)+100 + y = GetRandom(1900)+100 + if GetRandom(2)==0 then b = GetRandom(800)+300 + else b = 0 end + if GetRandom(2)==0 then t = GetRandom(800)+300 + else t = 0 end + if y-t < 50 then t = y - 50 end + if t < 200 then t = 0 end + if DrawPlateau(x,y,l,t,b) then + TotGen = TotGen+1 + end + Tries = Tries + 1 + end + Tries = 0 + while (TotGen < 17) and (Tries < 1000) do + if Tries < 500 and GetRandom(2)==0 then + x = GetRandom(3300)+350 + y = GetRandom(1300)+350 + if DrawStar(x,y, 1, 1+GetRandom(2)*-2) then + TotGen = TotGen+1 + end + else + if Tries > 500 then d = GetRandom(2)+3 + else d = GetRandom(3)+2 end + x = GetRandom(4000-div(700,d))+div(700,d*2) + y = GetRandom(1300-div(700,d))+div(700,d*2) + if DrawStar(x,y, d, 1+GetRandom(2)*-2) then + TotGen = TotGen+1 + end + end + w = GetRandom(35-div(Tries,29))+15 + x = GetRandom(4050-w*20)+w*10 + y = GetRandom(2000-w*20)+w*10 + if DrawCircle(x,y,w) then + TotGen = TotGen+1 + end + w = GetRandom(35-div(Tries,29))+5 + x = GetRandom(4050-w*20)+w*10 + y = GetRandom(2000-w*20)+w*10 + if DrawCrescent(x,y,w,GetRandom(2)==0) then + TotGen = TotGen+1 + end + Tries = Tries + 1 + end +-- Padding = div(Padding,2) +-- Tries = 0 +-- while (TotGen < 21) and (Tries < 10000) do +-- r = GetRandom(20-div(Tries,223))+5 +-- x = GetRandom(4050-r*20)+r*10 +-- y = GetRandom(2000-r*20)+r*10 +-- if DrawCircle(x,y,r) then +-- TotGen = TotGen+1 +-- end +-- Tries = Tries + 1 +-- end + --dbg() + FlushPoints() +end diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Sounds/frozen_hog_impact.ogg Binary file share/hedgewars/Data/Sounds/frozen_hog_impact.ogg has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Sounds/hog_freeze.ogg Binary file share/hedgewars/Data/Sounds/hog_freeze.ogg has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Sounds/ice_beam.ogg Binary file share/hedgewars/Data/Sounds/ice_beam.ogg has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Sounds/voices/Default_uk/JustYouwait.ogg Binary file share/hedgewars/Data/Sounds/voices/Default_uk/JustYouwait.ogg has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Sounds/voices/Default_uk/Justyouwait.ogg Binary file share/hedgewars/Data/Sounds/voices/Default_uk/Justyouwait.ogg has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Themes/Bamboo/Flake.png Binary file share/hedgewars/Data/Themes/Bamboo/Flake.png has changed diff -r e095e3023682 -r 7f04ad2cda54 share/hedgewars/Data/Themes/Blox/LandBackTex.png Binary file share/hedgewars/Data/Themes/Blox/LandBackTex.png has changed diff -r e095e3023682 -r 7f04ad2cda54 tools/CMakeLists.txt --- a/tools/CMakeLists.txt Sun Apr 21 01:36:08 2013 +0200 +++ b/tools/CMakeLists.txt Wed May 29 22:52:37 2013 +0400 @@ -33,6 +33,7 @@ if(NOT NOPNG) #get the neme of the library (harmelss if it is static) string(REGEX REPLACE ".*/(.*)$" "\\1" PNG_LIBNAME "${PNG_LIBRARY}") + string(REGEX REPLACE ".*/(.*)$" "\\1" ZLIB_LIBNAME "${ZLIB_LIBRARY}") endif() set(frameworks_dir ${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}) diff -r e095e3023682 -r 7f04ad2cda54 tools/CreateMacBundle.cmake.in --- a/tools/CreateMacBundle.cmake.in Sun Apr 21 01:36:08 2013 +0200 +++ b/tools/CreateMacBundle.cmake.in Wed May 29 22:52:37 2013 +0400 @@ -16,6 +16,7 @@ #same here, for libpng and hwengine, let's assume the version pulled by macdeployqt is the same #(yes libpng is pulled by macdeployqt even when NOVIDEOREC is active) execute_process(COMMAND install_name_tool -change ${PNG_LIBRARY} @executable_path/../Frameworks/${PNG_LIBNAME} ${engine_full_path}) + execute_process(COMMAND install_name_tool -change ${ZLIB_LIBRARY} @executable_path/../Frameworks/${ZLIB_LIBNAME} ${engine_full_path}) endif() if(doBundle EQUAL 1) diff -r e095e3023682 -r 7f04ad2cda54 tools/build_windows.bat --- a/tools/build_windows.bat Sun Apr 21 01:36:08 2013 +0200 +++ b/tools/build_windows.bat Wed May 29 22:52:37 2013 +0400 @@ -13,7 +13,8 @@ if %BUILD_TYPE%=="Debug" ( for %%G in (QtCored4 QtGuid4 QtNetworkd4) do xcopy /d/y %QTDIR%\%%G.dll %CD%\bin\ ) -for %%G in (QtCore4 QtGui4 QtNetwork4 libgcc_s_dw2-1 mingwm10) do ( +:: should you libgcc dynamically you should try adding libgcc_s_dw2-1 and mingwm10 +for %%G in (QtCore4 QtGui4 QtNetwork4) do ( xcopy /d/y %QTDIR%\%%G.dll %CD%\bin\ ) diff -r e095e3023682 -r 7f04ad2cda54 tools/w32DownloadUnzip.vbs --- a/tools/w32DownloadUnzip.vbs Sun Apr 21 01:36:08 2013 +0200 +++ b/tools/w32DownloadUnzip.vbs Wed May 29 22:52:37 2013 +0400 @@ -7,6 +7,7 @@ ' References ' http://superuser.com/questions/59465/is-it-possible-to-download-using-the-windows-command-line ' http://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line +' http://stackoverflow.com/questions/424331/get-the-current-temporary-directory-path-in-vbscript Set ArgObj = WScript.Arguments @@ -23,7 +24,8 @@ End if End if -strHDLocation = "C:\Windows\Temp\temp.zip" +' Temporary directory +strHDLocation = WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) + "\hwlibtemp.zip" ' Fetch the file WScript.Echo ( "Trying to download from " & strFileURL) @@ -37,7 +39,7 @@ objADOStream.Type = 1 'adTypeBinary objADOStream.Write objXMLHTTP.ResponseBody - objADOStream.Position = 0 'Set the stream position to the start + objADOStream.Position = 0 'Set the stream position to the start Set objFSO = Createobject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation @@ -46,12 +48,12 @@ objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing + Set objXMLHTTP = Nothing Else WScript.Echo ("Error downloading file (error code: " & objXMLHTTP.Status & ")") Set objXMLHTTP = Nothing WScript.Quit End if -Set objXMLHTTP = Nothing WScript.Echo ( "Extracting file to " & strOutputPath) Set objShell = CreateObject( "Shell.Application" )